diff --git a/ansible/inventory/hosts.yml b/ansible/inventory/hosts.yml index e30d748..6e56dfe 100644 --- a/ansible/inventory/hosts.yml +++ b/ansible/inventory/hosts.yml @@ -17,19 +17,14 @@ all: hosts: node1: virt_domain_name: node1 - virt_domain_net_macaddress: 52:54:00:DD:B9:81 node2: virt_domain_name: node2 - virt_domain_net_macaddress: 52:54:00:0A:B8:82 node3: virt_domain_name: node3 - virt_domain_net_macaddress: 52:54:00:2E:AB:32 node4: virt_domain_name: node4 - virt_domain_net_macaddress: 52:54:00:19:F2:EF node5: virt_domain_name: node5 - virt_domain_net_macaddress: 52:54:00:6C:BA:E1 admin: hosts: boogie: diff --git a/ansible/roles/libvirt-domain/handlers/inventory.yml b/ansible/roles/libvirt-domain/handlers/inventory.yml new file mode 100644 index 0000000..d13a5c9 --- /dev/null +++ b/ansible/roles/libvirt-domain/handlers/inventory.yml @@ -0,0 +1,5 @@ +--- +- name: reload-inventory + ansible.builtin.meta: refresh_inventory + delegate_to: localhost + run_once: true diff --git a/ansible/roles/libvirt-domain/handlers/main.yml b/ansible/roles/libvirt-domain/handlers/main.yml new file mode 100644 index 0000000..acc47df --- /dev/null +++ b/ansible/roles/libvirt-domain/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Handle local inventory + import_tasks: inventory.yml diff --git a/ansible/roles/libvirt-domain/tasks/domain.yml b/ansible/roles/libvirt-domain/tasks/domain.yml index 9a5ee92..09793fb 100644 --- a/ansible/roles/libvirt-domain/tasks/domain.yml +++ b/ansible/roles/libvirt-domain/tasks/domain.yml @@ -22,6 +22,24 @@ qemu-img create -f qcow2 {{ hostvars[virt_host].virt_pool_dir }}/{{ virt_domain_name }}.qcow2 {{ virt_domain_disk_gb }}G creates: '{{ hostvars[virt_host].virt_pool_dir }}/{{ virt_domain_name }}.qcow2' +- name: Get or create the MAC address variable + delegate_to: '{{ virt_host }}' + set_fact: + virt_domain_net_macaddress: + '{{ virt_domain_net_macaddress | + default("52:54:00" | community.general.random_mac) }}' + +- name: Store the MAC address in state.ini + delegate_to: localhost + throttle: 1 + notify: reload-inventory + community.general.ini_file: + path: '{{ inventory_dir}}/state.ini' + section: libvirt + option: '{{ inventory_hostname }} virt_domain_net_macaddress' + value: '{{ virt_domain_net_macaddress }}' + no_extra_spaces: true + - name: Define libvirt domain delegate_to: '{{ virt_host }}' community.libvirt.virt: