--- # Proxmox QEMU VM provisioning via API (cloud-init). # This task file preserves the repo's existing VM behavior. # Break down the Proxmox VM creation to avoid "file name too long" error - name: Set VM configuration facts ansible.builtin.set_fact: vm_scsi_config: scsi0: "{{ vm_storage }}:{{ vm_disk_size }},format=raw" vm_net_config: net0: "virtio,bridge={{ vm_network_bridge }},firewall=1" vm_ide_config: ide2: "{{ vm_iso_storage }}:cloudinit,format=qcow2" vm_ipconfig: ipconfig0: "{{ vm_ip_config }}" - name: Create VM on Proxmox community.general.proxmox_kvm: # Connection api_host: "{{ proxmox_host }}" api_user: "{{ proxmox_user }}" api_password: "{{ vault_proxmox_password }}" api_token_id: "{{ proxmox_token_id | default(omit) }}" api_token_secret: "{{ vault_proxmox_token | default(omit) }}" # VM identification vmid: "{{ vm_id }}" name: "{{ vm_name }}" node: "{{ proxmox_node }}" # Hardware specs memory: "{{ vm_memory }}" cores: "{{ vm_cores }}" sockets: "{{ vm_sockets }}" cpu: "host" # Storage and network scsi: "{{ vm_scsi_config }}" net: "{{ vm_net_config }}" ide: "{{ vm_ide_config }}" # Boot and OS boot: "{{ vm_boot_order }}" ostype: "{{ vm_os_type }}" # Cloud-init ciuser: "{{ vm_ciuser }}" cipassword: "{{ vault_vm_cipassword | default(omit) }}" sshkeys: "{{ vm_ssh_keys | join('\n') if vm_ssh_keys else omit }}" ipconfig: "{{ vm_ipconfig }}" nameserver: "{{ vm_nameservers }}" # VM options agent: "{{ vm_enable_agent | bool }}" autostart: false balloon: 0 state: present register: vm_creation_result - name: Start VM if requested community.general.proxmox_kvm: api_host: "{{ proxmox_host }}" api_user: "{{ proxmox_user }}" api_password: "{{ vault_proxmox_password }}" api_token_id: "{{ proxmox_token_id | default(omit) }}" api_token_secret: "{{ vault_proxmox_token | default(omit) }}" vmid: "{{ vm_id }}" node: "{{ proxmox_node }}" state: started when: vm_start_after_create | bool - name: Display VM creation results ansible.builtin.debug: msg: | VM Created: {{ vm_name }} (ID: {{ vm_id }}) Memory: {{ vm_memory }}MB Cores: {{ vm_cores }} Storage: {{ vm_storage }}:{{ vm_disk_size }} Network: {{ vm_network_bridge }} Status: {{ vm_creation_result.msg | default('Created') }}