66 lines
2.0 KiB
YAML
66 lines
2.0 KiB
YAML
---
|
|
- name: Set libvirt image paths
|
|
delegate_to: localhost
|
|
vars:
|
|
virtualization_libvirt_image_dir_value: >-
|
|
{{ vm_path if vm_path | length > 0 else '/var/lib/libvirt/images' }}
|
|
ansible.builtin.set_fact:
|
|
virtualization_libvirt_image_dir: "{{ virtualization_libvirt_image_dir_value }}"
|
|
virtualization_libvirt_disk_path: >-
|
|
{{ [virtualization_libvirt_image_dir_value, hostname ~ '.qcow2'] | ansible.builtin.path_join }}
|
|
virtualization_libvirt_cloudinit_path: >-
|
|
{{ [virtualization_libvirt_image_dir_value, hostname ~ '-cloudinit.iso'] | ansible.builtin.path_join }}
|
|
changed_when: false
|
|
|
|
- name: Create VM disk
|
|
delegate_to: localhost
|
|
ansible.builtin.command:
|
|
argv:
|
|
- qemu-img
|
|
- create
|
|
- -f
|
|
- qcow2
|
|
- "{{ virtualization_libvirt_disk_path }}"
|
|
- "{{ vm_size }}G"
|
|
creates: "{{ virtualization_libvirt_disk_path }}"
|
|
|
|
- name: Generate VM MAC address
|
|
delegate_to: localhost
|
|
ansible.builtin.set_fact:
|
|
virtualization_mac_address: >-
|
|
{{ '52:54:00' | community.general.random_mac(seed=hostname) }}
|
|
changed_when: false
|
|
|
|
- name: Render cloud config templates
|
|
delegate_to: localhost
|
|
ansible.builtin.template:
|
|
src: "{{ item.src }}"
|
|
dest: /tmp/{{ item.dest_prefix }}-{{ hostname }}.yml
|
|
mode: '0644'
|
|
loop:
|
|
- {src: cloud-user-data.yml.j2, dest_prefix: cloud-user-data}
|
|
- {src: cloud-network-config.yml.j2, dest_prefix: cloud-network-config}
|
|
|
|
- name: Create cloud-init disk
|
|
delegate_to: localhost
|
|
ansible.builtin.command:
|
|
argv:
|
|
- cloud-localds
|
|
- "{{ virtualization_libvirt_cloudinit_path }}"
|
|
- "/tmp/cloud-user-data-{{ hostname }}.yml"
|
|
- -N
|
|
- "/tmp/cloud-network-config-{{ hostname }}.yml"
|
|
creates: "{{ virtualization_libvirt_cloudinit_path }}"
|
|
|
|
- name: Create VM using libvirt
|
|
delegate_to: localhost
|
|
community.libvirt.virt:
|
|
command: define
|
|
xml: "{{ lookup('template', 'vm.xml.j2') }}"
|
|
|
|
- name: Start vm
|
|
delegate_to: localhost
|
|
community.libvirt.virt:
|
|
name: "{{ hostname }}"
|
|
state: running
|