
¿Es posible generar automáticamente vm10,vm11,vm12 en el siguiente script (como count.index usado en terraform)? Me gustaría pasar/definir el nombre "vm" y debería poder implementar 3 máquinas virtuales con los diferentes nombres vm10, vm11 y vm12. Por favor sugiera una manera, gracias.
---
- 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 }}"
Respuesta1
Utilice un inventario en lugar de un dictado. ¿Quieres 100 vms?
vms:
hosts:
vm[001:100]:
mem: 1024
vcpu: 1
Esto se interpretará como vm001
, vm002
,..., vm099
, vm100
.
Delegarla tarea para crearlos en localhost, ya que no existen cuando se ejecuta la tarea. Después puedes ejecutar elmódulo de configuracióny ejecutar tareas directamente en las máquinas virtuales recién creadas.
El libro de jugadas correspondiente se vería así:
---
- 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