在ansible中将vm名称增加1位数
我有一个从vcenter获取vm名称的ansible playbook。我想根据vcenter中存在的最后一个VM名称生成新的VM名称。例如,我将在vcenter中搜索以vmdemo开头的vm名称,并在vm名称下面搜索在ansible中将vm名称增加1位数,ansible,Ansible,我有一个从vcenter获取vm名称的ansible playbook。我想根据vcenter中存在的最后一个VM名称生成新的VM名称。例如,我将在vcenter中搜索以vmdemo开头的vm名称,并在vm名称下面搜索 Vmdemo1000 Vmdemo1001 Vmdemo1002 所以我想生成我的下一个新虚拟机名称是vmdemo1003 我怎样才能做到这一点 - name: Gather Existing VM Details vmware_vm_facts: hostname
Vmdemo1000
Vmdemo1001
Vmdemo1002
所以我想生成我的下一个新虚拟机名称是vmdemo1003
我怎样才能做到这一点
- name: Gather Existing VM Details
vmware_vm_facts:
hostname: "{{ vsphere_host }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_password }}"
validate_certs: no
vm_type: vm
register: info
ignore_errors: true
- set_fact:
server_list: []
- set_fact:
server_list: "{{ server_list + [ item.guest_name ] }}"
when: (item.guest_name | string).find('{{ vm_name }}') != -1
with_items: "{{ info.virtual_machines| list }}"
loop_control:
label: " "
- debug: msg="{{ server_list }}"
- debug: msg="{{ server_list | sort }}"
- set_fact:
new_vm_name: "{{ vm_name }}{{ default_no }}"
when: server_list == []
- set_fact:
new_vm_name: "{{ ((server_list | sort | max) | int) +1 }}"
when: server_list != []
- debug: msg="{{ new_vm_name }}"
我正在尝试上面的代码,但将新的_vm_name作为1值而不是服务器名称我将使用
shell
模块增加列表最后一个元素的最后一个整数部分的值
---
- name: Sample playbook
connection: local
gather_facts: false
hosts: localhost
vars:
domains:
- Vmdemo1000
- Vmdemo1001
- Vmdemo1002
tasks:
- name: Get the new domain name(increment +1 to last domain)
shell: echo {{ domains |last }} |perl -pe 's/(-*\d+)$/$1+1/e'
register: new_domain
- debug: var=new_domain.stdout
上述结果将产生以下输出:
PLAY [Sample playbook] *********************************************************************************************************************************************************************
TASK [Get the new domain name(increment +1 to last domain)] ********************************************************************************************************************************
changed: [localhost]
TASK [debug] *******************************************************************************************************************************************************************************
ok: [localhost] => {
"new_domain.stdout": "Vmdemo1003"
}
PLAY RECAP *********************************************************************************************************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
到目前为止你试过什么?