|
| 1 | +--- |
| 2 | +- name: create VMs |
| 3 | + hosts: localhost |
| 4 | + gather_facts: no |
| 5 | + connection: local |
| 6 | + |
| 7 | + vars: |
| 8 | + qcow_template: /home/sever/Downloads/ISO/vyos-1.4.0-cloud-init-2G-qemu.qcow2 |
| 9 | + vars_files: |
| 10 | + - vars/guests_qcow.yml |
| 11 | + |
| 12 | + tasks: |
| 13 | + - name: Get list of VMs |
| 14 | + virt: |
| 15 | + command: "list_vms" |
| 16 | + register: virt_vms |
| 17 | + |
| 18 | + - name: Copy qcow2 from template "{{ qcow_template }}" |
| 19 | + become: true |
| 20 | + copy: |
| 21 | + src: "{{ qcow_template }}" |
| 22 | + dest: "{{ item.disk.path }}/{{ item.name }}.qcow2" |
| 23 | + when: item.name not in virt_vms.list_vms |
| 24 | + with_items: "{{ guests }}" |
| 25 | + |
| 26 | + - name: Ensure generated/user-data directory exists |
| 27 | + ansible.builtin.file: |
| 28 | + path: "{{ playbook_dir }}/generated/user-data" |
| 29 | + state: directory |
| 30 | + |
| 31 | + - name: Template user-data |
| 32 | + ansible.builtin.template: |
| 33 | + src: "{{ playbook_dir }}/templates/user-data.j2" |
| 34 | + dest: "{{ playbook_dir }}/generated/user-data/{{ item.name }}" |
| 35 | + with_items: "{{ guests }}" |
| 36 | + |
| 37 | + - name: Create vm |
| 38 | + command: virt-install -n {{ item.name }} |
| 39 | + --ram {{ item.mem }} |
| 40 | + --vcpus {{ item.cpu }} |
| 41 | + --cloud-init "meta-data={{ playbook_dir }}/templates/meta-data,user-data={{ playbook_dir }}/generated/user-data/{{ item.name }}" |
| 42 | + --os-variant {{ item.os.variant }} |
| 43 | + --network network=default |
| 44 | + --graphics vnc |
| 45 | + --{{item.virt_hypervisor}} |
| 46 | + --virt-type {{ item.virt_type }} |
| 47 | + --disk path={{item.disk.path}}/{{item.name}}.qcow2,bus=virtio |
| 48 | + --import |
| 49 | + --noautoconsole |
| 50 | + when: item.name not in virt_vms.list_vms |
| 51 | + with_items: "{{ guests }}" |
| 52 | + |
| 53 | + - name: make sure all vms are running |
| 54 | + virt: |
| 55 | + name: "{{ item.name }}" |
| 56 | + state: running |
| 57 | + with_items: "{{ guests }}" |
0 commit comments