16
16
17
17
# tfdoc:file:description Landing VPC and related resources.
18
18
19
+ locals {
20
+ # streamline VPC configuration conditionals for modules by moving them here
21
+ landing_cfg = {
22
+ cloudnat = (
23
+ local.spoke_connection != " ncc" &&
24
+ var.vpc_configs.landing.cloudnat.enable == true
25
+ )
26
+ dns_logging = var.vpc_configs.landing.dns.enable_logging == true
27
+ dns_policy = var.vpc_configs.landing.dns.create_inbound_policy == true
28
+ fw_classic = (
29
+ local.spoke_connection != " ncc" &&
30
+ var.vpc_configs.landing.firewall.use_classic == true
31
+ )
32
+ fw_order = (
33
+ var.vpc_configs.landing.firewall.policy_has_priority == true
34
+ ? " BEFORE_CLASSIC_FIREWALL"
35
+ : " AFTER_CLASSIC_FIREWALL"
36
+ )
37
+ fw_policy = (
38
+ local.spoke_connection != " ncc" &&
39
+ var.vpc_configs.landing.firewall.create_policy == true
40
+ )
41
+ }
42
+ }
43
+
19
44
module "landing-project" {
20
45
source = " ../../../modules/project"
21
46
billing_account = var. billing_account . id
@@ -42,19 +67,20 @@ module "landing-project" {
42
67
}
43
68
44
69
module "landing-vpc" {
45
- source = " ../../../modules/net-vpc"
46
- project_id = module. landing-project . project_id
47
- name = " prod-landing-0"
48
- mtu = 1500
49
- dns_policy = {
70
+ source = " ../../../modules/net-vpc"
71
+ project_id = module. landing-project . project_id
72
+ name = " prod-landing-0"
73
+ mtu = var. vpc_configs . landing . mtu
74
+ delete_default_routes_on_create = true
75
+ dns_policy = ! local. landing_cfg . dns_policy ? {} : {
50
76
inbound = true
51
- logging = var.dns.enable_logging
77
+ logging = local.landing_cfg.dns_logging
52
78
}
53
79
factories_config = {
54
80
context = { regions = var.regions }
55
- subnets_folder = " ${ var . factories_config . data_dir } / subnets/landing"
81
+ subnets_folder = " ${ var . factories_config . subnets } /landing"
56
82
}
57
- delete_default_routes_on_create = true
83
+ firewall_policy_enforcement_order = local . landing_cfg . fw_order
58
84
routes = {
59
85
default = {
60
86
dest_range = " 0.0.0.0/0"
@@ -66,22 +92,39 @@ module "landing-vpc" {
66
92
}
67
93
68
94
module "landing-firewall" {
69
- count = local. spoke_connection != " ncc" ? 1 : 0
70
95
source = " ../../../modules/net-vpc-firewall"
96
+ count = local. landing_cfg . fw_classic ? 1 : 0
71
97
project_id = module. landing-project . project_id
72
98
network = module. landing-vpc . name
73
99
default_rules_config = {
74
100
disabled = true
75
101
}
76
102
factories_config = {
77
- cidr_tpl_file = " ${ var . factories_config . data_dir } /cidrs.yaml"
78
- rules_folder = " ${ var . factories_config . data_dir } /firewall-rules/landing"
103
+ cidr_tpl_file = var.factories_config.firewall.cidr_file
104
+ rules_folder = " ${ var . factories_config . firewall . classic_rules } /landing"
105
+ }
106
+ }
107
+
108
+ module "landing-firewall-policy" {
109
+ source = " ../../../modules/net-firewall-policy"
110
+ count = local. landing_cfg . fw_policy ? 1 : 0
111
+ name = " prod-landing-0"
112
+ parent_id = module. landing-project . project_id
113
+ region = " global"
114
+ attachments = {
115
+ landing-0 = module.landing- vpc.id
116
+ }
117
+ # TODO: add context for security groups
118
+ factories_config = {
119
+ cidr_file_path = var.factories_config.firewall.cidr_file
120
+ egress_rules_file_path = " ${ var . factories_config . firewall . policy_rules } /landing/egress.yaml"
121
+ ingress_rules_file_path = " ${ var . factories_config . firewall . policy_rules } /landing/ingress.yaml"
79
122
}
80
123
}
81
124
82
125
module "landing-nat-primary" {
83
126
source = " ../../../modules/net-cloudnat"
84
- count = var . enable_cloud_nat && local. spoke_connection != " ncc " ? 1 : 0
127
+ count = local. landing_cfg . cloudnat ? 1 : 0
85
128
project_id = module. landing-project . project_id
86
129
region = var. regions . primary
87
130
name = local. region_shortnames [var . regions . primary ]
0 commit comments