-
Notifications
You must be signed in to change notification settings - Fork 5
/
outputs.tf
222 lines (179 loc) · 8.51 KB
/
outputs.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# ----------------------------------------------------------------------------------------------------------------------
# OUTPUT CALCULATED VARIABLES (prefer full objects)
# ----------------------------------------------------------------------------------------------------------------------
locals {
public_aws_subnets_by_group = {
for group, subnets in local.public_subnets_by_group : group => [
for subnet in aws_subnet.subnet : subnet if contains(subnets.*.cidr_block, subnet.cidr_block)
]
}
private_aws_subnets_by_group = {
for group, subnets in local.private_subnets_by_group : group => [
for subnet in aws_subnet.subnet : subnet if contains(subnets.*.cidr_block, subnet.cidr_block)
]
}
intra_aws_subnets_by_group = {
for group, subnets in local.intra_subnets_by_group : group => [
for subnet in aws_subnet.subnet : subnet if contains(subnets.*.cidr_block, subnet.cidr_block)
]
}
public_subnet_ids_by_group = {
for group, subnets in local.public_aws_subnets_by_group : group => subnets.*.id
}
private_subnet_ids_by_group = {
for group, subnets in local.private_aws_subnets_by_group : group => subnets.*.id
}
intra_subnet_ids_by_group = {
for group, subnets in local.intra_aws_subnets_by_group : group => subnets.*.id
}
public_route_table_ids_by_group = {
for group, subnet_ids in local.public_subnet_ids_by_group : group => distinct([
for rta in try(values(aws_route_table_association.public), []) :
rta.route_table_id if contains(subnet_ids, rta.subnet_id)
])
}
private_route_table_ids_by_group = {
for group, subnet_ids in local.private_subnet_ids_by_group : group => distinct([
for rta in try(values(aws_route_table_association.private), []) :
rta.route_table_id if contains(subnet_ids, rta.subnet_id)
])
}
intra_route_table_ids_by_group = {
for group, subnet_ids in local.intra_subnet_ids_by_group : group => distinct([
for rta in try(values(aws_route_table_association.intra), []) :
rta.route_table_id if contains(subnet_ids, rta.subnet_id)
])
}
}
output "public_subnets_by_group" {
description = "A map of lists of public subnets keyed by group. (aws_subnet)"
value = local.public_aws_subnets_by_group
}
output "public_route_table_ids_by_group" {
description = "A map of lists of public route table IDs keyed by group."
value = local.public_route_table_ids_by_group
}
output "public_subnet_ids_by_group" {
description = "A map of lists of public subnet IDs keyed by group."
value = local.public_subnet_ids_by_group
}
output "private_subnets_by_group" {
description = "A map of lists of private subnets keyed by group. (aws_subnet)"
value = local.private_aws_subnets_by_group
}
output "private_route_table_ids_by_group" {
description = "A map of lists of private route table IDs keyed by group."
value = local.private_route_table_ids_by_group
}
output "private_subnet_ids_by_group" {
description = "A map of lists of private subnet IDs keyed by group."
value = local.private_subnet_ids_by_group
}
output "intra_subnets_by_group" {
description = "A map of lists of intra aws_subnet keyed by group. (aws_subnet)"
value = local.intra_aws_subnets_by_group
}
output "intra_route_table_ids_by_group" {
description = "A map of lists of intra route table IDs keyed by group."
value = local.intra_route_table_ids_by_group
}
output "intra_subnet_ids_by_group" {
description = "A map of lists of intra subnet IDs keyed by group."
value = local.intra_subnet_ids_by_group
}
# ----------------------------------------------------------------------------------------------------------------------
# OUTPUT ALL RESOURCES AS FULL OBJECTS
# ----------------------------------------------------------------------------------------------------------------------
output "vpc" {
description = "The VPC. (aws_vpc)"
value = try(aws_vpc.vpc[0], null)
}
output "intra_route_tables" {
description = "A map of intra route tables keyed by group. (aws_route_table)"
value = try(aws_route_table.intra, null)
}
output "intra_route_table_associations" {
description = "A map of intra route table associations keyed by the subnets CIDR Blocks. (aws_route_table_association)"
value = try(aws_route_table_association.intra, null)
}
output "eips" {
description = "A map of Elastic IP Adresses (EIPs) keyed by availability zone. (aws_eip)"
value = try(aws_eip.eip, null)
}
output "nat_gateways" {
description = "A map of NAT gatweways keyed by availability zone. (aws_nat_gateway)"
value = try(aws_nat_gateway.nat_gateway, null)
}
output "private_route_tables" {
description = "A map of private route tables keyed by group. (aws_route_table)"
value = try(aws_route_table.private, null)
}
output "private_route_table_associations" {
description = "A map of private route table associations keyed by the subnets CIDR Blocks. (aws_route_table_association)"
value = try(aws_route_table_association.private, null)
}
output "routes_to_nat_gateways" {
description = "A map of routes to the NAT Gateways keyed by group. (aws_route)"
value = try(aws_route.nat_gateway, null)
}
output "internet_gateway" {
description = "The Internet Gateway. (aws_internet_gateway)"
value = try(aws_internet_gateway.internet_gateway[0], null)
}
output "public_route_tables" {
description = "A map of public route tables keyed by group. (aws_route_table)"
value = try(aws_route_table.public, null)
}
output "public_route_table_associations" {
description = "A map of public route table associations keyed by the subnets CIDR Blocks. (aws_route_table_association)"
value = try(aws_route_table_association.public, null)
}
output "routes_to_internet_gateway" {
description = "A map of routes to the Internet Gateway keyed by group. (aws_route)"
value = try(aws_route.internet_gateway, null)
}
output "subnets" {
description = "A map of subnets keyed by CIDR Blocks. (aws_subnet)"
value = try(aws_subnet.subnet, null)
}
# ----------------------------------------------------------------------------------------------------------------------
# OUTPUT ALL INPUT VARIABLES
# ----------------------------------------------------------------------------------------------------------------------
output "module_inputs" {
description = "A map of all module arguments. Set to the provided values or calculated default values."
value = {
vpc_name = var.vpc_name
cidr_block = var.cidr_block
assign_generated_ipv6_cidr_block = var.assign_generated_ipv6_cidr_block
enable_classiclink = var.enable_classiclink
enable_classiclink_dns_support = var.enable_classiclink_dns_support
enable_dns_support = var.enable_dns_support
enable_dns_hostnames = var.enable_dns_hostnames
instance_tenancy = var.instance_tenancy
subnets = var.subnets
nat_gateway_mode = var.nat_gateway_mode
vpc_tags = merge(var.module_tags, var.vpc_tags)
internet_gateway_tags = merge(var.module_tags, var.internet_gateway_tags)
eip_tags = merge(var.module_tags, var.eip_tags)
nat_gateway_tags = merge(var.module_tags, var.nat_gateway_tags)
subnet_tags = merge(var.module_tags, var.subnet_tags)
public_subnet_tags = merge(var.module_tags, var.subnet_tags, var.public_subnet_tags)
private_subnet_tags = merge(var.module_tags, var.subnet_tags, var.private_subnet_tags)
intra_subnet_tags = merge(var.module_tags, var.subnet_tags, var.intra_subnet_tags)
route_table_tags = merge(var.module_tags, var.route_table_tags)
public_route_table_tags = merge(var.module_tags, var.route_table_tags, var.public_route_table_tags)
private_route_table_tags = merge(var.module_tags, var.route_table_tags, var.private_route_table_tags)
intra_route_table_tags = merge(var.module_tags, var.route_table_tags, var.intra_route_table_tags)
}
}
# ----------------------------------------------------------------------------------------------------------------------
# OUTPUT MODULE CONFIGURATION
# ----------------------------------------------------------------------------------------------------------------------
output "module_enabled" {
description = "Whether the module is enabled."
value = var.module_enabled
}
output "module_tags" {
description = "A map of tags that will be applied to all created resources that accept tags."
value = var.module_tags
}