
Ist es möglich, vm10, vm11, vm12 im folgenden Skript automatisch zu generieren (wie count.index in Terraform verwendet)? Ich möchte den Namen „vm“ übergeben/definieren und sollte in der Lage sein, 3 VMs mit den unterschiedlichen Namen vm10, vm11 und vm12 bereitzustellen. Bitte schlagen Sie eine Möglichkeit vor, Danke
---
- 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 }}"
Antwort1
Verwenden Sie ein Inventar anstelle eines Wörterbuchs. Sie möchten 100 VMs?
vms:
hosts:
vm[001:100]:
mem: 1024
vcpu: 1
vm001
Dies wird als , vm002
,..., vm099
, interpretiert vm100
.
Delegierendie Aufgabe, sie auf localhost zu erstellen, da sie nicht existieren, wenn die Aufgabe ausgeführt wird. Anschließend können Sie dieSetup-Modulund führen Sie Aufgaben direkt auf den neu erstellten VMs aus.
Das entsprechende Playbook würde folgendermaßen aussehen:
---
- 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