在ansible中将vm名称增加1位数

在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

我有一个从vcenter获取vm名称的ansible playbook。我想根据vcenter中存在的最后一个VM名称生成新的VM名称。例如,我将在vcenter中搜索以vmdemo开头的vm名称,并在vm名称下面搜索

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

到目前为止你试过什么?