92 lines
2.4 KiB
YAML
92 lines
2.4 KiB
YAML
- name: Preview GCP destroy/cleanup request
|
|
ansible.builtin.debug:
|
|
msg:
|
|
- "gcp_project_id={{ gcp_project_id | default('n/a') }}"
|
|
- "gcp_vm_name={{ gcp_vm_name | default(profile_name | default('n/a')) }}"
|
|
- "gcp_cleanup_mode={{ gcp_cleanup_mode | default(false) }}"
|
|
- "cloud_vm_destroy_mode={{ cloud_vm_destroy_mode | default('destroy') }}"
|
|
|
|
- name: List GCP managed instances
|
|
ansible.builtin.command:
|
|
argv:
|
|
- gcloud
|
|
- compute
|
|
- instances
|
|
- list
|
|
- --project
|
|
- "{{ gcp_project_id }}"
|
|
- --filter
|
|
- "labels.toolkit_scope=cloud-dev-desktop AND labels.managed_by=ansible"
|
|
- --format=value(name,zone.basename())
|
|
register: gcp_managed_instances
|
|
changed_when: false
|
|
when:
|
|
- gcp_cleanup_mode | default(false)
|
|
- not ansible_check_mode
|
|
|
|
- name: Park GCP VM in lowest-consumption mode
|
|
ansible.builtin.command:
|
|
argv:
|
|
- gcloud
|
|
- compute
|
|
- instances
|
|
- stop
|
|
- "{{ gcp_vm_name }}"
|
|
- --project
|
|
- "{{ gcp_project_id }}"
|
|
- --zone
|
|
- "{{ gcp_zone }}"
|
|
- --quiet
|
|
changed_when: true
|
|
when:
|
|
- not gcp_cleanup_mode | default(false)
|
|
- (cloud_vm_destroy_mode | default('destroy')) == 'park'
|
|
- not ansible_check_mode
|
|
|
|
- name: Delete GCP VM directly
|
|
ansible.builtin.command:
|
|
argv:
|
|
- gcloud
|
|
- compute
|
|
- instances
|
|
- delete
|
|
- "{{ gcp_vm_name }}"
|
|
- --project
|
|
- "{{ gcp_project_id }}"
|
|
- --zone
|
|
- "{{ gcp_zone }}"
|
|
- --quiet
|
|
changed_when: true
|
|
when:
|
|
- not gcp_cleanup_mode | default(false)
|
|
- (cloud_vm_destroy_mode | default('destroy')) == 'destroy'
|
|
- not ansible_check_mode
|
|
|
|
- name: Delete GCP managed instances
|
|
ansible.builtin.command:
|
|
argv:
|
|
- gcloud
|
|
- compute
|
|
- instances
|
|
- delete
|
|
- "{{ item.split()[0] }}"
|
|
- --project
|
|
- "{{ gcp_project_id }}"
|
|
- --zone
|
|
- "{{ item.split()[1] }}"
|
|
- --quiet
|
|
loop: "{{ gcp_managed_instances.stdout_lines | default([]) }}"
|
|
changed_when: true
|
|
when:
|
|
- gcp_cleanup_mode | default(false)
|
|
- not ansible_check_mode
|
|
|
|
- name: Remove GCP state file after destroy
|
|
ansible.builtin.file:
|
|
path: "{{ cloud_vm_state_file }}"
|
|
state: absent
|
|
when:
|
|
- cloud_vm_state_file is defined
|
|
- not gcp_cleanup_mode | default(false)
|
|
- (cloud_vm_destroy_mode | default('destroy')) == 'destroy'
|