WIP: Initial VM provisioning #4
| @@ -31,30 +31,21 @@ | ||||
|       api_token_secret: "{{ api_token_secret }}" | ||||
|       name: "{{ vmname }}" | ||||
|   tasks: | ||||
|     # Initial setup | ||||
|     - name: Create VM | ||||
|       community.general.proxmox_kvm: | ||||
|         clone: "{{ node }}-debian-12" | ||||
|         storage: nvme | ||||
|       register: create | ||||
|     - name: Initial boot | ||||
|       when: create.changed is true | ||||
|       block: | ||||
|         - name: Start | ||||
|           community.general.proxmox_kvm: | ||||
|             state: started | ||||
|           register: start | ||||
|           retries: 30 | ||||
|           delay: 10 | ||||
|           until: start.status is defined | ||||
|         - name: Wait | ||||
|           ansible.builtin.wait_for: | ||||
|             timeout: 180 | ||||
|         - name: Poweroff | ||||
|           community.general.proxmox_kvm: | ||||
|             state: stopped | ||||
|     - name: Debug | ||||
|       ansible.builtin.debug: | ||||
|         var: create | ||||
|     - name: Wait for status | ||||
|       community.general.proxmox_kvm: | ||||
|         state: current | ||||
|       register: vm | ||||
|       retries: 30 | ||||
|       delay: 10 | ||||
|       until: vm.status is defined | ||||
|  | ||||
|     # Networking | ||||
|     - name: Add HOME NIC | ||||
|       community.general.proxmox_nic: | ||||
|         interface: net0 | ||||
| @@ -65,6 +56,27 @@ | ||||
|         interface: net1 | ||||
|         firewall: false | ||||
|         bridge: SRV | ||||
|  | ||||
|     # Initial boot | ||||
|     # For some reason debian cloud images don't use | ||||
|     # cloud-init for networking on first boot (cloud-init files | ||||
|     # are regenerated AFTER networking starts). But we need the | ||||
|     # hostname to be registered with DHCP later on so ¯\_(ツ)_/¯ | ||||
|     - name: Initial boot | ||||
|       when: create.changed is true | ||||
|       block: | ||||
|         - name: Start | ||||
|           community.general.proxmox_kvm: | ||||
|             state: started | ||||
|           register: start | ||||
|         - name: Wait # Initial apt update, apt upgrade, cloud-init | ||||
|           ansible.builtin.wait_for: | ||||
|             timeout: 180 | ||||
|         - name: Poweroff | ||||
|           community.general.proxmox_kvm: | ||||
|             state: stopped | ||||
|  | ||||
|     # VM Configuration | ||||
|     - name: Resize disk | ||||
|       community.general.proxmox_disk: | ||||
|         disk: scsi0 | ||||
| @@ -85,16 +97,19 @@ | ||||
|         onboot: true | ||||
|         cores: 2 | ||||
|         memory: 2048 | ||||
|  | ||||
|     # We have now enabled qemu guest agent, but have not installed it | ||||
|     # Rebooting will timeout if started | ||||
|     - name: Retart VM # doesn't start if stopped | ||||
|       when: | ||||
|         - create.status is defined | ||||
|         - create.status == "running" | ||||
|         - vm.status is defined | ||||
|         - vm.status == "running" | ||||
|       community.general.proxmox_kvm: | ||||
|         state: restarted | ||||
|         timeout: 60 | ||||
|     - name: Start VM # start if stopped | ||||
|       when: | ||||
|         - create.status is defined | ||||
|         - create.status != "running" | ||||
|         - vm.status is defined | ||||
|         - vm.status != "running" | ||||
|       community.general.proxmox_kvm: | ||||
|         state: started | ||||
|   | ||||
		Reference in New Issue
	
	Block a user