--- - name: Install required Pip modules hosts: localhost tasks: - name: Install proxmoxer and requests modules pip: name: - proxmoxer - requests state: present - name: Create VM from template, update the ip and hardware, resize the disk, hosts: all gather_facts: false vars_files: - vars/proxmox.yml - defaults/vm_sizing.yml tasks: - name: Create VM from template proxmox_kvm: node: "{{ node }}" api_host: "{{ pve_host }}" api_user: "{{ pve_user }}" api_password: "{{ pve_password }}" validate_certs: no name: "{{ inventory_hostname }}" storage: "{{ storage }}" clone: "{{ clone }}" onboot: true register: vm_created delegate_to: localhost - name: Wait 10s for VM to be fully deployed ansible.builtin.wait_for: timeout: 10 delegate_to: localhost - name: Update VM configuration community.general.proxmox_kvm: api_host: "{{ pve_host }}" api_user: "{{ pve_user }}" api_password: "{{ pve_password }}" name: "{{ inventory_hostname }}" node: "{{ node }}" memory: "{{ vm_memory }}" cores: "{{ vm_cores }}" ipconfig: ipconfig0: "{{ vm_ip_address }}" update: true delegate_to: localhost - name: Update the disk size community.general.proxmox_disk: api_host: "{{ pve_host }}" api_user: "{{ pve_user }}" api_password: "{{ pve_password }}" name: "{{ inventory_hostname }}" disk: scsi0 backup: false size: "{{ resize_root_disk_size }}" state: resized delegate_to: localhost - name: Start the VM community.general.proxmox_kvm: api_host: "{{ pve_host }}" api_user: "{{ pve_user }}" api_password: "{{ pve_password }}" name: "{{ inventory_hostname }}" node: "{{ node }}" state: started delegate_to: localhost - name: Wait 3 minutes for VM to start and install latest updates ansible.builtin.wait_for: timeout: 180 delegate_to: localhost - name: Extract VM IP with regex set_fact: vm_ip: "{{ vm_ip_address | regex_replace('ip=(\\d+\\.\\d+\\.\\d+\\.\\d+)/.*', '\\1') }}" delegate_to: localhost - name: Get information about the VM ansible.builtin.setup: delegate_to: "{{ vm_ip }}" become: true - name: Install Quemu Guest Agent if virtualization type is kvm ansible.builtin.apt: update_cache: true name: qemu-guest-agent state: latest when: ansible_virtualization_type == 'kvm' delegate_to: "{{ vm_ip }}" become: true - name: Enable QEMU Guest Agent ansible.builtin.systemd: name: qemu-guest-agent enabled: true when: ansible_virtualization_type == 'kvm' delegate_to: "{{ vm_ip }}" become: true