forked from cloudposse/terraform-aws-dynamic-subnets
-
Notifications
You must be signed in to change notification settings - Fork 0
/
public.tf
87 lines (74 loc) · 2.77 KB
/
public.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
module "public_label" {
source = "git::https://github.com/cloudposse/terraform-null-label.git?ref=tags/0.3.3"
namespace = "${var.namespace}"
stage = "${var.stage}"
name = "${var.name}"
delimiter = "${var.delimiter}"
attributes = ["public"]
tags = "${merge(
var.tags,
map("Network", "Public")
)}"
}
module "public_subnet_label" {
source = "git::https://github.com/cloudposse/terraform-null-label.git?ref=tags/0.3.3"
namespace = "${var.namespace}"
stage = "${var.stage}"
name = "${var.name}"
attributes = ["public"]
tags = "${merge(
var.tags,
map("Network", "Public")
)}"
}
locals {
public_subnet_count = "${var.max_subnet_count == 0 ? length(data.aws_availability_zones.available.names) : var.max_subnet_count}"
}
resource "aws_subnet" "public" {
count = "${length(var.availability_zones)}"
vpc_id = "${data.aws_vpc.default.id}"
availability_zone = "${element(var.availability_zones, count.index)}"
cidr_block = "${cidrsubnet(signum(length(var.cidr_block)) == 1 ? var.cidr_block : data.aws_vpc.default.cidr_block, ceil(log(local.public_subnet_count * 2, 2)), local.public_subnet_count + count.index)}"
tags = "${merge(module.public_subnet_label.tags, map("Name",format("%s%s%s", module.public_subnet_label.id, var.delimiter, replace(element(var.availability_zones, count.index),"-",var.delimiter))))}"
}
resource "aws_route_table" "public" {
count = "${signum(length(var.vpc_default_route_table_id)) == 1 ? 0 : 1}"
vpc_id = "${data.aws_vpc.default.id}"
route {
cidr_block = "0.0.0.0/0"
gateway_id = "${var.igw_id}"
}
tags = "${module.public_label.tags}"
}
resource "aws_route_table_association" "public" {
count = "${signum(length(var.vpc_default_route_table_id)) == 1 ? 0 : length(var.availability_zones)}"
subnet_id = "${element(aws_subnet.public.*.id, count.index)}"
route_table_id = "${aws_route_table.public.id}"
}
resource "aws_route_table_association" "public_default" {
count = "${signum(length(var.vpc_default_route_table_id)) == 1 ? length(var.availability_zones) : 0}"
subnet_id = "${element(aws_subnet.public.*.id, count.index)}"
route_table_id = "${var.vpc_default_route_table_id}"
}
resource "aws_network_acl" "public" {
count = "${signum(length(var.public_network_acl_id)) == 0 ? 1 : 0}"
vpc_id = "${var.vpc_id}"
subnet_ids = ["${aws_subnet.public.*.id}"]
egress {
rule_no = 100
action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 0
to_port = 0
protocol = "-1"
}
ingress {
rule_no = 100
action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 0
to_port = 0
protocol = "-1"
}
tags = "${module.public_label.tags}"
}