
É possível gerar automaticamente vm10,vm11,vm12 no script abaixo (como count.index usado no terraform)? Gostaria de passar/definir o nome "vm" e ser capaz de implantar 3 VMs com os nomes diferentes vm10, vm11 e vm12. Por favor, sugira uma maneira, obrigado
---
- hosts: Target
vars:
machines:
v10:
mem: 1024
vcpu: 1
v11:
mem: 1024
vcpu: 1
tasks:
- name: img cpy
copy:
src: /root/pri.qcow2
dest: /test/{{ item.key }}.qcow2
remote_src: yes
with_dict: "{{ machines }}"
- name: Import/Load VM
command: >
virt-install --name {{ item.key }} --memory {{ item.value.mem }} --vcpus {{ item.value.vcpu }} --disk /test/{{ item.key }}.qcow2,bus=sata --import --os-variant generic --network default --noreboot
with_dict: "{{ machines }}"
Responder1
Use um inventário em vez de um ditado. Você quer 100 vms?
vms:
hosts:
vm[001:100]:
mem: 1024
vcpu: 1
Isso será interpretado como vm001
, vm002
,..., vm099
, vm100
.
Delegara tarefa de criá-los para localhost, pois eles não existem quando a tarefa é executada. Depois você pode executar omódulo de configuraçãoe execute tarefas diretamente nas VMs recém-criadas.
O manual correspondente ficaria assim:
---
- hosts: vms
gather_facts: no
tasks:
- name: copy qcow image to target path
copy:
src: /root/ovms/pri.qcow2
dest: /root/ovms/test/{{ inventory_hostname }}.qcow2
remote_src: yes
delegate_to: target
- name: Import/Load VM
command: >
virt-install --name {{ inventory_hostname }} --memory {{ mem }} --vcpus {{ vcpu }} --disk /root/ovms/test/{{ inventory_hostname }}.qcow2,bus=sata --import --os-variant generic --network default --noreboot
delegate_to: target