Files
CoM-c2itall/providers/Linode/cleanup.yml
T
2025-08-21 16:25:00 -04:00

117 lines
4.6 KiB
YAML
Executable File

---
# Linode/cleanup.yml
- 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) }}"
cleanup_tracker: "{{ (tracker_name is defined and tracker_name != '') | ternary(true, false) }}"
cleanup_attack_box: "{{ (attack_box_name is defined and attack_box_name != '') | ternary(true, false) }}"
confirm_cleanup: false # Skip confirmation in automated teardown
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: Cleanup resources notice
debug:
msg: |
===============================================
CLEANUP OPERATION
===============================================
The following resources will be DELETED PERMANENTLY:
{% if cleanup_redirector and redirector_name is defined %}
- Redirector instance: {{ redirector_name }}
{% endif %}
{% if cleanup_c2 and c2_name is defined %}
- C2 instance: {{ c2_name }}
{% endif %}
{% if cleanup_tracker and tracker_name is defined %}
- Tracker instance: {{ tracker_name }}
{% endif %}
{% if cleanup_attack_box and attack_box_name is defined %}
- Attack Box instance: {{ attack_box_name }}
{% endif %}
when: confirm_cleanup | bool
- name: Confirm cleanup operation
pause:
prompt: "\n>>> Type 'yes' to confirm deletion or press Ctrl+C to abort <<<"
register: confirmation
when: confirm_cleanup | bool
- name: Skip cleanup if not confirmed
meta: end_play
when: confirm_cleanup | bool and (confirmation.user_input | default('')) != 'yes'
- name: Delete redirector instance
community.general.linode_v4:
access_token: "{{ linode_token }}"
label: "{{ redirector_name }}"
state: absent
when: cleanup_redirector and redirector_name is defined and redirector_name != ""
register: redirector_deletion
ignore_errors: yes
- name: Delete C2 instance
community.general.linode_v4:
access_token: "{{ linode_token }}"
label: "{{ c2_name }}"
state: absent
when: cleanup_c2 and c2_name is defined and c2_name != ""
register: c2_deletion
ignore_errors: yes
- name: Delete tracker instance
community.general.linode_v4:
access_token: "{{ linode_token }}"
label: "{{ tracker_name }}"
state: absent
when: cleanup_tracker and tracker_name is defined and tracker_name != ""
register: tracker_deletion
ignore_errors: yes
- name: Delete attack box instance
community.general.linode_v4:
access_token: "{{ linode_token }}"
label: "{{ attack_box_name }}"
state: absent
when: cleanup_attack_box and attack_box_name is defined and attack_box_name != ""
register: attack_box_deletion
ignore_errors: yes
- name: Clean up deployment state file
file:
path: "{{ playbook_dir }}/../deployment_state_{{ deployment_id }}.json"
state: absent
ignore_errors: yes
register: state_file_deletion
- name: Report state file cleanup
debug:
msg: "Deployment state file {{ 'deleted' if state_file_deletion.changed else 'not found' }}"
when: state_file_deletion is defined
- name: Report cleanup status
debug:
msg: |
Cleanup results:
{% if redirector_deletion is defined and redirector_name is defined %}
- Redirector {{ redirector_name }}: {{ redirector_deletion.changed | ternary('Deleted', 'Not found/Could not delete') }}
{% endif %}
{% if c2_deletion is defined and c2_name is defined %}
- C2 {{ c2_name }}: {{ c2_deletion.changed | ternary('Deleted', 'Not found/Could not delete') }}
{% endif %}
{% if tracker_deletion is defined and tracker_name is defined %}
- Tracker {{ tracker_name }}: {{ tracker_deletion.changed | ternary('Deleted', 'Not found/Could not delete') }}
{% endif %}
{% if attack_box_deletion is defined and attack_box_name is defined %}
- Attack Box {{ attack_box_name }}: {{ attack_box_deletion.changed | ternary('Deleted', 'Not found/Could not delete') }}
{% endif %}