working on it

This commit is contained in:
n0mad1k
2025-05-10 15:14:10 -04:00
parent f4e24edf9b
commit ce5d7c4fb7
9 changed files with 542 additions and 525 deletions
+8 -198
View File
@@ -1,204 +1,14 @@
---
# VPC Cleanup Process with enhanced dependency handling
# Step 1: Network Interfaces
- name: Find network interfaces in VPC {{ vpc_id }}
amazon.aws.ec2_eni_info:
region: "{{ aws_region }}"
filters:
vpc-id: "{{ vpc_id }}"
register: eni_info
failed_when: false
changed_when: false
# Removed detailed cleanup tasks for ENIs, RTs, IGWs, NATs, subnets, SGs to simplify deletion
- name: Delete network interfaces
amazon.aws.ec2_eni:
region: "{{ aws_region }}"
eni_id: "{{ item.id }}"
state: absent
force_detach: true
loop: "{{ eni_info.network_interfaces }}"
register: eni_deleted
ignore_errors: yes
when: eni_info.network_interfaces | length > 0
- name: Wait after deleting network interfaces
pause:
seconds: 10
when: eni_info.network_interfaces | length > 0
# Step 2: Route Tables
- name: Find all route tables for VPC {{ vpc_id }}
amazon.aws.ec2_vpc_route_table_info:
region: "{{ aws_region }}"
filters:
vpc-id: "{{ vpc_id }}"
register: rt_info
failed_when: false
changed_when: false
- name: Process route tables
when: rt_info.route_tables | length > 0
block:
- name: Delete non-main route tables
amazon.aws.ec2_vpc_route_table:
region: "{{ aws_region }}"
vpc_id: "{{ vpc_id }}"
route_table_id: "{{ item.id }}"
state: absent
loop: "{{ rt_info.route_tables }}"
when: not item.associations or not item.associations[0].main | default(false)
register: deleted_rts
ignore_errors: yes
- name: Update cleaned route tables
set_fact:
cleaned_resources: "{{ cleaned_resources | combine({'route_tables': cleaned_resources.route_tables + [item.id]}, recursive=True) }}"
with_items: "{{ rt_info.route_tables }}"
when: not item.associations or not item.associations[0].main | default(false)
- name: Wait after deleting route tables
pause:
seconds: 10
when: rt_info.route_tables | length > 0
# Step 3: Internet Gateways
- name: Find internet gateways for VPC {{ vpc_id }}
amazon.aws.ec2_vpc_igw_info:
region: "{{ aws_region }}"
filters:
attachment.vpc-id: "{{ vpc_id }}"
register: igw_info
failed_when: false
changed_when: false
- name: Process internet gateways
when: igw_info.internet_gateways | length > 0
block:
- name: Detach internet gateways
amazon.aws.ec2_vpc_igw:
region: "{{ aws_region }}"
vpc_id: "{{ vpc_id }}"
state: absent
register: igw_detached
ignore_errors: yes
- name: Wait after detaching IGW
pause:
seconds: 15
when: igw_detached is changed
- name: Delete internet gateways
amazon.aws.ec2_vpc_igw:
region: "{{ aws_region }}"
igw_id: "{{ item.id }}"
state: absent
loop: "{{ igw_info.internet_gateways }}"
register: deleted_igws
ignore_errors: yes
- name: Update cleaned internet gateways
set_fact:
cleaned_resources: "{{ cleaned_resources | combine({'internet_gateways': cleaned_resources.internet_gateways + [item.id]}, recursive=True) }}"
with_items: "{{ igw_info.internet_gateways }}"
# Step 4: Subnets
- name: Find subnets for VPC {{ vpc_id }}
amazon.aws.ec2_vpc_subnet_info:
region: "{{ aws_region }}"
filters:
vpc-id: "{{ vpc_id }}"
register: subnet_info
failed_when: false
changed_when: false
- name: Delete subnets
amazon.aws.ec2_vpc_subnet:
# Step X: Delete VPC directly
- name: Delete VPC {{ vpc_id }}
amazon.aws.ec2_vpc_net:
region: "{{ aws_region }}"
vpc_id: "{{ vpc_id }}"
cidr: "{{ item.cidr_block }}"
state: absent
loop: "{{ subnet_info.subnets }}"
register: deleted_subnets
ignore_errors: true
when: subnet_info.subnets | length > 0
- name: Update cleaned subnets
set_fact:
cleaned_resources: "{{ cleaned_resources | combine({'subnets': cleaned_resources.subnets + [item.id]}, recursive=True) }}"
with_items: "{{ subnet_info.subnets }}"
when: subnet_info.subnets | length > 0
- name: Wait after deleting subnets
pause:
seconds: 15
when: subnet_info.subnets | length > 0
# Step 5: Security Groups (except default)
- name: Find non-default security groups for VPC {{ vpc_id }}
amazon.aws.ec2_security_group_info:
region: "{{ aws_region }}"
filters:
vpc-id: "{{ vpc_id }}"
register: sg_info
failed_when: false
changed_when: false
- name: Delete non-default security groups
amazon.aws.ec2_security_group:
region: "{{ aws_region }}"
group_id: "{{ item.group_id }}"
state: absent
loop: "{{ sg_info.security_groups }}"
when: item.group_name != 'default'
register: deleted_sgs
ignore_errors: true
- name: Update cleaned security groups
set_fact:
cleaned_resources: "{{ cleaned_resources | combine({'security_groups': cleaned_resources.security_groups + [item.group_id]}, recursive=True) }}"
with_items: "{{ sg_info.security_groups }}"
when: item.group_name != 'default'
- name: Wait after deleting security groups
pause:
seconds: 15
when: sg_info.security_groups | length > 0
# Step 6: Delete VPC with proper dependencies and retries
- name: Wait longer before trying to delete VPC
pause:
seconds: 30
- name: Delete VPC with retries
block:
- name: Delete VPC {{ vpc_id }}
amazon.aws.ec2_vpc_net:
region: "{{ aws_region }}"
vpc_id: "{{ vpc_id }}"
state: absent
register: vpc_delete_result
retries: 5
delay: 15
until: vpc_delete_result is success
rescue:
- name: Force check dependencies again if VPC deletion failed
amazon.aws.ec2_vpc_net_info:
region: "{{ aws_region }}"
vpc_ids:
- "{{ vpc_id }}"
register: vpc_check
- name: Final attempt to delete VPC if it still exists
amazon.aws.ec2_vpc_net:
region: "{{ aws_region }}"
vpc_id: "{{ vpc_id }}"
state: absent
when: vpc_check.vpcs | length > 0
ignore_errors: true
register: final_vpc_delete
- name: Update cleaned VPCs
set_fact:
cleaned_resources: "{{ cleaned_resources | combine({'vpcs': cleaned_resources.vpcs + [vpc_id]}, recursive=True) }}"
when: (vpc_delete_result is defined and vpc_delete_result is success) or
(final_vpc_delete is defined and final_vpc_delete is success)
retries: 5
delay: 15
register: vpc_delete_result
until: vpc_delete_result is success