role_proxmox/tasks/vm_template.yml
2025-04-11 13:31:24 +02:00

72 lines
2.5 KiB
YAML

---
# tasks file for proxmox
- name: Create instance
community.general.proxmox_kvm:
api_host: "{{ proxmox_api_host }}"
api_user: "{{ proxmox_api_user }}"
api_token_id: "{{ proxmox_api_token_id }}"
api_token_secret: "{{ proxmox_api_token_secret }}"
agent: "enabled=1,fstrim_cloned_disks=1"
autostart: "{{ proxmox_instance_autostart }}"
cores: "{{ proxmox_instance_cores }}"
cpu: "{{ proxmox_instance_cpu }}"
hotplug: "{{ proxmox_instance_hotplug | join(',') }}"
ipconfig: "{{ proxmox_instance_ipconfig }}"
memory: "{{ proxmox_instance_memory }}"
name: "{{ inventory_hostname }}"
nameservers: "{{ proxmox_instance_cloudinit_nameservers }}"
net: "{{ proxmox_instance_net }}"
node: "{{ proxmox_instance_node }}"
numa_enabled: "{{ proxmox_instance_numa }}"
onboot: "{{ proxmox_instance_onboot }}"
scsihw: virtio-scsi-single
tablet: false
vmid: "{{ proxmox_instance_vmid }}"
delegate_to: "{{ proxmox_delegate_to | default(omit) }}"
register: create_instance
notify:
- Configure cloud-init
- Start instance
- Wait SSH port is open
- Wait cloud-init
- name: Import virtual disk
ansible.builtin.command:
cmd: >-
qm set {{ proxmox_instance_vmid }}
--{{ proxmox_instance_disks[0].disk }}
{{ proxmox_instance_disks[0].storage }}:0,import-from={{ proxmox_instance_disks[0].img }}
chdir: "{{ proxmox_instance_disks[0].img | ansible.builtin.dirname }}"
when: create_instance.changed # noqa: no-handler no-changed-when
become: true
delegate_to: "{{ proxmox_delegate_to | default(omit) }}"
- name: Workaround to add args to the VM
ansible.builtin.lineinfile:
path: /etc/pve/qemu-server/{{ proxmox_instance_vmid }}.conf
line: "args: {{ proxmox_instance_args }}"
state: present
when: proxmox_instance_args | length > 0
become: true
delegate_to: "{{ proxmox_delegate_to | default(omit) }}"
- name: Add configuration items
community.general.proxmox_kvm:
api_host: "{{ proxmox_api_host }}"
api_user: "{{ proxmox_api_user }}"
api_token_id: "{{ proxmox_api_token_id }}"
api_token_secret: "{{ proxmox_api_token_secret }}"
boot: order=virtio0
name: "{{ inventory_hostname }}"
node: "{{ proxmox_instance_node }}"
serial:
serial0: socket
update: true
update_unsafe: true
vmid: "{{ proxmox_instance_vmid }}"
delegate_to: "{{ proxmox_delegate_to | default(omit) }}"
notify:
- Start instance
- Wait SSH port is open