--- - name: Deploy VM on Proxmox delegate_to: localhost vars: virtualization_dns_value: "{{ system_cfg.dns_servers if system_cfg.dns_servers is defined else '' }}" virtualization_dns_list_raw: >- {{ virtualization_dns_value if virtualization_dns_value is iterable and virtualization_dns_value is not string else virtualization_dns_value.split(',') }} virtualization_dns_list: >- {{ virtualization_dns_list_raw | map('trim') | reject('equalto', '') | list }} virtualization_search_value: "{{ system_cfg.dns_search if system_cfg.dns_search is defined else '' }}" virtualization_search_list_raw: >- {{ virtualization_search_value if virtualization_search_value is iterable and virtualization_search_value is not string else virtualization_search_value.split(',') }} virtualization_search_list: >- {{ virtualization_search_list_raw | map('trim') | reject('equalto', '') | list }} virtualization_proxmox_scsi: >- {%- set out = {} -%} {%- for disk in system_cfg.disks -%} {%- set _ = out.update({ 'scsi' ~ loop.index0: hypervisor_storage ~ ':' ~ (disk.size | int) }) -%} {%- endfor -%} {{ out }} community.proxmox.proxmox_kvm: api_host: "{{ hypervisor_url }}" api_user: "{{ hypervisor_username }}" api_password: "{{ hypervisor_password }}" ciuser: "{{ user_name }}" cipassword: "{{ user_password }}" ciupgrade: false node: "{{ hypervisor_node }}" vmid: "{{ system_cfg.id }}" name: "{{ hostname }}" cpu: host cores: "{{ system_cfg.cpus }}" memory: "{{ system_cfg.memory_mb }}" balloon: "{{ system_cfg.balloon_mb if system_cfg.balloon_mb is defined and system_cfg.balloon_mb | int > 0 else omit }}" numa_enabled: true hotplug: network,disk update: "{{ virtualization_tpm2_enabled | bool }}" update_unsafe: "{{ virtualization_tpm2_enabled | bool }}" bios: ovmf machine: "{{ 'q35' if virtualization_tpm2_enabled | bool else omit }}" boot: ac scsihw: virtio-scsi-single scsi: "{{ virtualization_proxmox_scsi }}" efidisk0: efitype: 4m format: raw pre_enrolled_keys: false storage: "{{ hypervisor_storage }}" tpmstate0: >- {{ {'storage': hypervisor_storage, 'version': '2.0'} if virtualization_tpm2_enabled | bool else omit }} ide: ide0: "{{ boot_iso }},media=cdrom" ide1: "{{ rhel_iso + ',media=cdrom' if rhel_iso is defined and rhel_iso | length > 0 else omit }}" ide2: "{{ hypervisor_storage }}:cloudinit" net: net0: >- virtio,bridge={{ system_cfg.network }}{% if system_cfg.vlan is defined and system_cfg.vlan | string | length > 0 %},tag={{ system_cfg.vlan }}{% endif %} ipconfig: ipconfig0: >- {{ 'ip=' ~ system_cfg.ip ~ '/' ~ system_cfg.prefix ~ (',gw=' ~ system_cfg.gateway if system_cfg.gateway is defined and system_cfg.gateway | length else '') if system_cfg.ip is defined and system_cfg.ip | string | length else 'ip=dhcp' }} nameservers: "{{ virtualization_dns_list if virtualization_dns_list | length else omit }}" searchdomains: "{{ virtualization_search_list if virtualization_search_list | length else omit }}" onboot: true state: present - name: Start VM on Proxmox delegate_to: localhost community.proxmox.proxmox_kvm: api_host: "{{ hypervisor_url }}" api_user: "{{ hypervisor_username }}" api_password: "{{ hypervisor_password }}" node: "{{ hypervisor_node }}" name: "{{ hostname }}" vmid: "{{ system_cfg.id }}" state: started register: virtualization_proxmox_start_result - name: Set VM created fact ansible.builtin.set_fact: virtualization_vm_created_in_run: true when: virtualization_proxmox_start_result is defined and virtualization_proxmox_start_result.changed | bool