- move ansible project within infra - introduce terraform/opentofu for proxmox VM management
73 lines
2.0 KiB
YAML
73 lines
2.0 KiB
YAML
- name: Get VM current state
|
|
delegate_to: localhost
|
|
vars:
|
|
ansible_python_interpreter: "{{ ansible_venv }}"
|
|
community.general.proxmox_kvm:
|
|
api_host: "{{ proxmox_api_url }}"
|
|
api_user: "{{ proxmox_user }}"
|
|
api_token_id: "{{ proxmox_api_token_id }}"
|
|
api_token_secret: "{{ proxmox_api_token }}"
|
|
name: "{{ item.name }}"
|
|
node: "{{ node }}"
|
|
state: current
|
|
register: vm_state
|
|
ignore_errors: yes
|
|
loop: "{{ vm_list }}"
|
|
loop_control:
|
|
index_var: vm_index
|
|
tags:
|
|
- vm_delete
|
|
|
|
- name: Debug VM state
|
|
debug:
|
|
msg: "VM {{ item.name }} state: {{ vm_state.results[vm_index].status }}"
|
|
when: vm_state.results[vm_index] is defined and vm_state.results[vm_index] is succeeded
|
|
loop: "{{ vm_list }}"
|
|
loop_control:
|
|
index_var: vm_index
|
|
|
|
- name: Stop VM
|
|
delegate_to: localhost
|
|
vars:
|
|
ansible_python_interpreter: "{{ ansible_venv }}"
|
|
community.general.proxmox_kvm:
|
|
api_host: "{{ proxmox_api_url }}"
|
|
api_user: "{{ proxmox_user }}"
|
|
api_token_id: "{{ proxmox_api_token_id }}"
|
|
api_token_secret: "{{ proxmox_api_token }}"
|
|
name: "{{ item.name }}"
|
|
node: "{{ node }}"
|
|
state: stopped
|
|
force: true
|
|
when: >
|
|
vm_state.results[vm_index] is defined and
|
|
vm_state.results[vm_index] is succeeded and
|
|
vm_state.results[vm_index].status != 'absent'
|
|
loop: "{{ vm_list }}"
|
|
loop_control:
|
|
index_var: vm_index
|
|
tags:
|
|
- vm_delete
|
|
|
|
- name: Delete VM
|
|
delegate_to: localhost
|
|
vars:
|
|
ansible_python_interpreter: "{{ ansible_venv }}"
|
|
community.general.proxmox_kvm:
|
|
api_host: "{{ proxmox_api_url }}"
|
|
api_user: "{{ proxmox_user }}"
|
|
api_token_id: "{{ proxmox_api_token_id }}"
|
|
api_token_secret: "{{ proxmox_api_token }}"
|
|
name: "{{ item.name }}"
|
|
node: "{{ node }}"
|
|
state: absent
|
|
when: >
|
|
vm_state.results[vm_index] is defined and
|
|
vm_state.results[vm_index] is succeeded and
|
|
vm_state.results[vm_index].status != 'absent'
|
|
loop: "{{ vm_list }}"
|
|
loop_control:
|
|
index_var: vm_index
|
|
tags:
|
|
- vm_delete
|