infra: introduce terraform/opentofu for proxmox management
- move ansible project within infra - introduce terraform/opentofu for proxmox VM management
This commit is contained in:
		
							
								
								
									
										72
									
								
								infra/ansible/roles/destroy-vms/tasks/main.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								infra/ansible/roles/destroy-vms/tasks/main.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,72 @@ | ||||
| - 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 | ||||
		Reference in New Issue
	
	Block a user