87 lines
2.2 KiB
YAML
87 lines
2.2 KiB
YAML
---
|
|
- name: Create a new VM with minimal options
|
|
become: false
|
|
community.proxmox.proxmox_kvm:
|
|
validate_certs: false
|
|
node: proxmox-server
|
|
api_user: root@pam
|
|
api_host: 192.168.0.2
|
|
api_token_id: ansible
|
|
api_token_secret: "{{ proxmox_token_secret }}"
|
|
|
|
clone: debian-13-cloud-init-template
|
|
name: "{{ vm_hostname }}"
|
|
storage: main
|
|
format: qcow2
|
|
full: true
|
|
timeout: 500
|
|
|
|
- name: Sleep for 20 seconds to ensure that Proxmox has cloned the VM
|
|
become: false
|
|
ansible.builtin.wait_for:
|
|
timeout: 20
|
|
delegate_to: localhost
|
|
changed_when: false
|
|
|
|
- name: Update the cloned VM with cloud-init configuration
|
|
community.proxmox.proxmox_kvm:
|
|
validate_certs: false
|
|
node: proxmox-server
|
|
api_user: root@pam
|
|
api_host: 192.168.0.2
|
|
api_token_id: ansible
|
|
api_token_secret: "{{ proxmox_token_secret }}"
|
|
|
|
name: "{{ vm_hostname }}"
|
|
# Cloud-init parameters
|
|
update: true
|
|
ide:
|
|
ide2: "local:cloudinit,format=qcow2"
|
|
ciuser: "ansible"
|
|
cipassword: "{{ ansible_become_passwd }}"
|
|
ipconfig:
|
|
ipconfig0: "ip={{ vm_ip_address }},gw=192.168.0.1"
|
|
|
|
- name: Sleep for 20 seconds just to make sure that all settings are applied
|
|
become: false
|
|
ansible.builtin.wait_for:
|
|
timeout: 20
|
|
delegate_to: localhost
|
|
changed_when: false
|
|
|
|
- name: Tweak the hardware settings
|
|
become: false
|
|
community.proxmox.proxmox_kvm:
|
|
validate_certs: false
|
|
node: proxmox-server
|
|
api_user: root@pam
|
|
api_host: 192.168.0.2
|
|
api_token_id: ansible
|
|
api_token_secret: "{{ proxmox_token_secret }}"
|
|
|
|
name: "{{ vm_hostname }}"
|
|
cores: 4
|
|
memory: 4096 # Minimal value for debian based OS for smooth workflow
|
|
update: true
|
|
|
|
- name: Make sure the VM has started
|
|
become: false
|
|
community.proxmox.proxmox_kvm:
|
|
validate_certs: false
|
|
node: proxmox-server
|
|
api_user: root@pam
|
|
api_host: 192.168.0.2
|
|
api_token_id: ansible
|
|
api_token_secret: "{{ proxmox_token_secret }}"
|
|
|
|
name: "{{ vm_hostname }}"
|
|
state: started
|
|
|
|
- name: Sleep for 2 minutes to make sure that VM has started and cloud init has done its thing
|
|
become: false
|
|
ansible.builtin.wait_for:
|
|
timeout: 120
|
|
delegate_to: localhost
|
|
changed_when: false
|
|
|