--- - name: Ensure that the seed VM configdrive exists hosts: seed-hypervisor vars: seed_host: "{{ groups['seed'][0] }}" seed_hostvars: "{{ hostvars[seed_host] }}" pre_tasks: - name: Ensure the image cache directory exists file: path: "{{ image_cache_path }}" state: directory roles: - role: jriguera.configdrive # For now assume the VM OS family is the same as the hypervisor's. configdrive_os_family: "{{ ansible_os_family }}" configdrive_uuid: "{{ seed_host | to_uuid }}" configdrive_fqdn: "{{ seed_host }}" configdrive_name: "{{ seed_host }}" configdrive_ssh_public_key: "{{ lookup('file', '{{ ansible_user_dir }}/.ssh/id_rsa.pub') }}" configdrive_config_dir: "{{ image_cache_path }}" configdrive_volume_path: "{{ image_cache_path }}" configdrive_config_dir_delete: True configdrive_resolv: domain: "{{ seed_hostvars.resolv_domain | default }}" search: "{{ seed_hostvars.resolv_search | default }}" dns: "{{ seed_hostvars.resolv_nameservers | default([]) }}" configdrive_network_device_list: > {{ seed_hostvars.seed_vm_interfaces | map(attribute='net_name') | map('net_configdrive_network_device', seed_host) | list }} tasks: - name: Set a fact containing the configdrive image path set_fact: seed_vm_configdrive_path: "{{ image_cache_path }}/{{ seed_host }}.iso" - name: Ensure configdrive is decoded and decompressed shell: > base64 -d {{ image_cache_path }}/{{ seed_host | to_uuid }}.gz | gunzip > {{ seed_vm_configdrive_path }} - name: Ensure compressed configdrive is removed file: path: "{{ image_cache_path }}/{{ seed_host | to_uuid }}.gz" state: absent - name: Ensure that the seed VM is provisioned hosts: seed-hypervisor vars: seed_host: "{{ groups['seed'][0] }}" seed_hostvars: "{{ hostvars[seed_host] }}" pre_tasks: - name: Check the size of the configdrive stat: path: "{{ seed_vm_configdrive_path }}" register: stat_result roles: - role: libvirt-vm seed_vm_configdrive_volume: name: "{{ seed_hostvars.seed_vm_name }}-configdrive" pool: "{{ seed_hostvars.seed_vm_pool }}" # Round size up to next multiple of 4096. capacity: "{{ (stat_result.stat.size + 4095) // 4096 * 4096 }}" device: "cdrom" format: "raw" image: "{{ seed_vm_configdrive_path }}" libvirt_vm_name: "{{ seed_hostvars.seed_vm_name }}" libvirt_vm_memory_mb: "{{ seed_hostvars.seed_vm_memory_mb }}" libvirt_vm_vcpus: "{{ seed_hostvars.seed_vm_vcpus }}" libvirt_vm_volumes: "{{ seed_hostvars.seed_vm_volumes + [seed_vm_configdrive_volume] }}" libvirt_vm_interfaces: "{{ seed_hostvars.seed_vm_interfaces }}" libvirt_vm_image_cache_path: "{{ image_cache_path }}" become: True