Files
vmn-ansible/roles/deploy_vm_on_proxmox/tasks/main.yaml
T

104 lines
2.6 KiB
YAML

---
- name: Check if VM already exists
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: current
ignore_errors: true
register: vm_status
- name: Create a new VM with minimal options only if it doesn't exist
when: vm_status is failed or 'does not exist in cluster' in vm_status.msg
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 120 seconds just to make sure that all settings are applied
become: false
ansible.builtin.wait_for:
timeout: 120
delegate_to: localhost
changed_when: false