|
20 | 20 | # VPC info |
21 | 21 | - name: Retrieve VPC details # noqa: syntax-check[unknown-module] |
22 | 22 | amazon.aws.ec2_vpc_net_info: # noqa: syntax-check[unknown-module] |
23 | | - region: "{{ aws_region }}" |
| 23 | + region: "{{ _region }}" |
24 | 24 | filters: |
25 | 25 | "tag:Name": "{{ aws_vpc_name }}" |
26 | 26 | "tag:Creator": "{{ aws_tag_creator }}" |
27 | 27 | register: vpc_info |
| 28 | + loop: "{{ all_aws_regions }}" |
| 29 | + loop_control: |
| 30 | + label: "{{ _region }}" |
| 31 | + loop_var: _region |
28 | 32 |
|
29 | 33 | - name: Check if VPC info is not empty |
30 | 34 | ansible.builtin.assert: |
31 | 35 | that: |
32 | | - - vpc_info.vpcs | length > 0 |
| 36 | + - vpc_info.results | map(attribute='vpcs') | flatten | length > 0 |
33 | 37 | fail_msg: "No VPC found. Please check your VPC configuration. Might be that you already removed your configuration." |
34 | 38 |
|
35 | 39 | - name: Set fact from register variable |
36 | 40 | ansible.builtin.set_fact: |
37 | | - aws_vpc_id: "{{ vpc_info.vpcs[0].id }}" |
38 | | - |
39 | | - |
40 | | -# SUBNET info |
41 | | -- name: Gather information about all subnets in VPC |
42 | | - amazon.aws.ec2_vpc_subnet_info: |
43 | | - filters: |
44 | | - vpc-id: "{{ aws_vpc_id }}" |
45 | | - region: "{{ aws_region }}" |
46 | | - register: vpc_subnets |
47 | | - |
48 | | -- name: Set fact from register variable |
49 | | - ansible.builtin.set_fact: |
50 | | - aws_vpc_subnets: "{{ vpc_subnets }}" |
51 | | - |
| 41 | + aws_vpc_region: "{{ aws_vpc_region | default([]) + [{'vpc_id': _vpc.vpcs[0].id, 'region': _vpc._region}] }}" |
| 42 | + loop: |
| 43 | + "{{ vpc_info.results }}" |
| 44 | + when: _vpc.vpcs |
| 45 | + loop_control: |
| 46 | + label: "{{ _vpc._region }}" |
| 47 | + loop_var: _vpc |
52 | 48 |
|
53 | 49 | ####################### Teardown ####################### |
54 | 50 |
|
|
60 | 56 | - name: Stop and terminate ec2 instance |
61 | 57 | ansible.builtin.include_tasks: ec2_instance.yml |
62 | 58 | when: not teardown_specific_instances |
| 59 | + loop: "{{ aws_vpc_region }}" |
| 60 | + loop_control: |
| 61 | + label: "{{ _vpc_region.region }}" |
| 62 | + loop_var: _vpc_region |
| 63 | + vars: |
| 64 | + aws_region: "{{ _vpc_region.region }}" |
| 65 | + aws_vpc_id: "{{ _vpc_region.vpc_id }}" |
63 | 66 |
|
64 | 67 | # eip and network interfaces |
65 | 68 | - name: Remove all network interfaces associated with VPC |
66 | 69 | ansible.builtin.include_tasks: ec2_eni.yml |
67 | 70 | when: not teardown_specific_instances |
| 71 | + loop: "{{ aws_vpc_region }}" |
| 72 | + loop_control: |
| 73 | + label: "{{ _vpc_region.region }}" |
| 74 | + loop_var: _vpc_region |
| 75 | + vars: |
| 76 | + aws_region: "{{ _vpc_region.region }}" |
| 77 | + aws_vpc_id: "{{ _vpc_region.vpc_id }}" |
68 | 78 |
|
69 | 79 | # security groups |
70 | 80 | - name: Remove all security groups associated with VPC |
71 | 81 | when: not teardown_specific_instances |
72 | 82 | ansible.builtin.include_tasks: ec2_group.yml |
| 83 | + loop: "{{ aws_vpc_region }}" |
| 84 | + loop_control: |
| 85 | + label: "{{ _vpc_region.region }}" |
| 86 | + loop_var: _vpc_region |
| 87 | + vars: |
| 88 | + aws_region: "{{ _vpc_region.region }}" |
| 89 | + aws_vpc_id: "{{ _vpc_region.vpc_id }}" |
73 | 90 |
|
74 | 91 | # route tables |
75 | 92 | - name: Remove all route tables associated with VPC |
76 | 93 | when: not teardown_specific_instances |
77 | 94 | ansible.builtin.include_tasks: ec2_vpc_route_table.yml |
| 95 | + loop: "{{ aws_vpc_region }}" |
| 96 | + loop_control: |
| 97 | + label: "{{ _vpc_region.region }}" |
| 98 | + loop_var: _vpc_region |
| 99 | + vars: |
| 100 | + aws_region: "{{ _vpc_region.region }}" |
| 101 | + aws_vpc_id: "{{ _vpc_region.vpc_id }}" |
78 | 102 |
|
79 | 103 | # subnets |
80 | 104 | - name: Remove all subnets associated with VPC |
81 | 105 | when: not teardown_specific_instances |
82 | 106 | ansible.builtin.include_tasks: ec2_vpc_subnet.yml |
| 107 | + loop: "{{ aws_vpc_region }}" |
| 108 | + loop_control: |
| 109 | + label: "{{ _vpc_region.region }}" |
| 110 | + loop_var: _vpc_region |
| 111 | + vars: |
| 112 | + aws_region: "{{ _vpc_region.region }}" |
| 113 | + aws_vpc_id: "{{ _vpc_region.vpc_id }}" |
83 | 114 |
|
84 | 115 | # igw |
85 | 116 | - name: Remove all internet gateways |
86 | 117 | when: not teardown_specific_instances |
87 | 118 | ansible.builtin.include_tasks: ec2_vpc_igw.yml |
| 119 | + loop: "{{ aws_vpc_region }}" |
| 120 | + loop_control: |
| 121 | + label: "{{ _vpc_region.region }}" |
| 122 | + loop_var: _vpc_region |
| 123 | + vars: |
| 124 | + aws_region: "{{ _vpc_region.region }}" |
| 125 | + aws_vpc_id: "{{ _vpc_region.vpc_id }}" |
88 | 126 |
|
89 | 127 | # vpc |
90 | 128 | - name: Remove VPC |
91 | 129 | when: not teardown_specific_instances |
92 | 130 | ansible.builtin.include_tasks: ec2_vpc_net.yml |
| 131 | + loop: "{{ aws_vpc_region }}" |
| 132 | + loop_control: |
| 133 | + label: "{{ _vpc_region.region }}" |
| 134 | + loop_var: _vpc_region |
| 135 | + vars: |
| 136 | + aws_region: "{{ _vpc_region.region }}" |
| 137 | + aws_vpc_id: "{{ _vpc_region.vpc_id }}" |
0 commit comments