reconfiging everything
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
---
|
||||
# Linode Cleanup Playbook
|
||||
# Used to tear down Linode infrastructure
|
||||
|
||||
- name: Clean up Linode infrastructure
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: false
|
||||
vars_files:
|
||||
- vars.yaml
|
||||
vars:
|
||||
cleanup_redirector: "{{ (redirector_name is defined and redirector_name != '') | ternary(true, false) }}"
|
||||
cleanup_c2: "{{ (c2_name is defined and c2_name != '') | ternary(true, false) }}"
|
||||
confirm_cleanup: "{{ confirm_cleanup | default(true) }}"
|
||||
|
||||
tasks:
|
||||
- name: Validate required Linode token
|
||||
assert:
|
||||
that:
|
||||
- linode_token is defined and linode_token != ""
|
||||
fail_msg: "Linode API token is required. Set linode_token in vars.yaml or via --linode-token."
|
||||
|
||||
- name: Confirm cleanup if required
|
||||
pause:
|
||||
prompt: "WARNING: This will permanently delete all infrastructure. Type 'yes' to continue"
|
||||
register: confirmation
|
||||
when: confirm_cleanup
|
||||
|
||||
- name: Exit if not confirmed
|
||||
meta: end_play
|
||||
when: confirm_cleanup and confirmation.user_input != 'yes'
|
||||
|
||||
- name: Get redirector instance info
|
||||
community.general.linode_v4:
|
||||
access_token: "{{ linode_token }}"
|
||||
command: list
|
||||
label: "{{ redirector_name }}"
|
||||
register: redirector_info
|
||||
failed_when: false
|
||||
when: cleanup_redirector
|
||||
|
||||
- name: Get C2 instance info
|
||||
community.general.linode_v4:
|
||||
access_token: "{{ linode_token }}"
|
||||
command: list
|
||||
label: "{{ c2_name }}"
|
||||
register: c2_info
|
||||
failed_when: false
|
||||
when: cleanup_c2
|
||||
|
||||
- name: Set redirector ID as fact
|
||||
set_fact:
|
||||
redirector_instance_id: "{{ redirector_info.instances[0].id }}"
|
||||
when:
|
||||
- cleanup_redirector
|
||||
- redirector_info.instances is defined
|
||||
- redirector_info.instances | length > 0
|
||||
|
||||
- name: Set C2 ID as fact
|
||||
set_fact:
|
||||
c2_instance_id: "{{ c2_info.instances[0].id }}"
|
||||
when:
|
||||
- cleanup_c2
|
||||
- c2_info.instances is defined
|
||||
- c2_info.instances | length > 0
|
||||
|
||||
- name: Delete redirector instance
|
||||
community.general.linode_v4:
|
||||
access_token: "{{ linode_token }}"
|
||||
command: delete
|
||||
label: "{{ redirector_name }}"
|
||||
state: absent
|
||||
when:
|
||||
- cleanup_redirector
|
||||
- redirector_instance_id is defined
|
||||
register: redirector_deletion
|
||||
|
||||
- name: Delete C2 instance
|
||||
community.general.linode_v4:
|
||||
access_token: "{{ linode_token }}"
|
||||
command: delete
|
||||
label: "{{ c2_name }}"
|
||||
state: absent
|
||||
when:
|
||||
- cleanup_c2
|
||||
- c2_instance_id is defined
|
||||
register: c2_deletion
|
||||
|
||||
- name: Remove SSH key file if it's not a shared key
|
||||
file:
|
||||
path: "{{ ssh_key_path | replace('.pub', '') }}"
|
||||
state: absent
|
||||
when:
|
||||
- ssh_key_path is defined
|
||||
- ssh_key_path is search('c2deploy_')
|
||||
ignore_errors: true
|
||||
|
||||
- name: Remove SSH public key file if it's not a shared key
|
||||
file:
|
||||
path: "{{ ssh_key_path }}"
|
||||
state: absent
|
||||
when:
|
||||
- ssh_key_path is defined
|
||||
- ssh_key_path is search('c2deploy_')
|
||||
ignore_errors: true
|
||||
|
||||
- name: Cleanup complete message
|
||||
debug:
|
||||
msg:
|
||||
- "Linode infrastructure cleanup complete!"
|
||||
- "Resources that were cleaned up:"
|
||||
- "{{ cleanup_redirector | ternary('- Redirector instance: ' + redirector_name, '') }}"
|
||||
- "{{ cleanup_c2 | ternary('- C2 instance: ' + c2_name, '') }}"
|
||||
Reference in New Issue
Block a user