@@ -34,14 +34,32 @@ data "template_file" "vault" {
34
34
}
35
35
}
36
36
37
+ data "template_file" "vault_init" {
38
+ template = " ${ file (" ${ path . module } /files/vault_init.json" )} "
39
+
40
+ vars {
41
+ datacenter = " ${ local . vpc_name } "
42
+ env = " ${ var . env } "
43
+ image = " ${ var . vault_image } "
44
+ awslogs_group = " vault-${ var . env } "
45
+ awslogs_stream_prefix = " vault-${ var . env } "
46
+ awslogs_region = " ${ data . aws_region . current . name } "
47
+ vault_ui = " ${ var . enable_vault_ui ? " true" : " false" } "
48
+ }
49
+ }
50
+
37
51
# End Data block
38
52
# local variables
39
53
locals {
40
- cluster_count = " ${ length (var. ecs_cluster_ids )} "
41
- vpc_name = " ${ data . aws_vpc . vpc . tags [" Name" ]} "
42
- sg_name = " tf-${ local . vpc_name } -vault-uiSecurityGroup"
43
- sg_tags = " ${ merge (var. tags , map (" Name" , local. sg_name , " Environment" , var. env ))} "
44
- log_tags = " ${ merge (var. tags , map (" VPC" , local. vpc_name , " Application" , aws_ecs_task_definition. vault . family ))} "
54
+ initialize = " ${ var . initialize ? true : false } "
55
+ cluster_count = " ${ length (var. ecs_cluster_ids )} "
56
+ vault_standalone_count = " ${ local . initialize ? 0 : local . cluster_count == 1 ? 1 : 0 } "
57
+ vault_clustered_count = " ${ local . initialize ? 0 : local . cluster_count > 1 ? 1 : 0 } "
58
+ vault_init_count = " ${ local . initialize ? 1 : 0 } "
59
+ vpc_name = " ${ data . aws_vpc . vpc . tags [" Name" ]} "
60
+ sg_name = " tf-${ local . vpc_name } -vault-uiSecurityGroup"
61
+ sg_tags = " ${ merge (var. tags , map (" Name" , local. sg_name , " Environment" , var. env ))} "
62
+ log_tags = " ${ merge (var. tags , map (" VPC" , local. vpc_name , " Application" , aws_ecs_task_definition. vault . family ))} "
45
63
}
46
64
47
65
resource "aws_ecs_task_definition" "vault" {
@@ -57,9 +75,25 @@ resource "aws_cloudwatch_log_group" "vault" {
57
75
tags = " ${ local . log_tags } "
58
76
}
59
77
78
+ resource "aws_ecs_task_definition" "vault_init" {
79
+ count = " ${ local . vault_init_count } "
80
+ family = " vault-init-${ var . env } "
81
+ container_definitions = " ${ data . template_file . vault_init . rendered } "
82
+ network_mode = " host"
83
+ task_role_arn = " ${ aws_iam_role . vault_task . arn } "
84
+ }
85
+
86
+ resource "aws_cloudwatch_log_group" "vault_init" {
87
+ count = " ${ local . vault_init_count } "
88
+ name = " ${ aws_ecs_task_definition . vault_init . family } "
89
+ retention_in_days = " 1"
90
+ tags = " ${ local . log_tags } "
91
+ }
92
+
60
93
# ECS Service
61
94
resource "aws_ecs_service" "vault" {
62
- count = " ${ local . cluster_count == 1 ? 1 : 0 } "
95
+ /* count = "${local.cluster_count == 1 ? 1 : 0}" */
96
+ count = " ${ local . vault_standalone_count } "
63
97
name = " vault-${ var . env } "
64
98
cluster = " ${ var . ecs_cluster_ids [0 ]} "
65
99
task_definition = " ${ aws_ecs_task_definition . vault . arn } "
@@ -85,7 +119,8 @@ resource "aws_ecs_service" "vault" {
85
119
}
86
120
87
121
resource "aws_ecs_service" "vault_primary" {
88
- count = " ${ local . cluster_count > 1 ? 1 : 0 } "
122
+ /* count = "${local.cluster_count > 1 ? 1 : 0}" */
123
+ count = " ${ local . vault_clustered_count } "
89
124
name = " vault-${ var . env } -primary"
90
125
cluster = " ${ var . ecs_cluster_ids [0 ]} "
91
126
task_definition = " ${ aws_ecs_task_definition . vault . arn } "
@@ -111,7 +146,8 @@ resource "aws_ecs_service" "vault_primary" {
111
146
}
112
147
113
148
resource "aws_ecs_service" "vault_secondary" {
114
- count = " ${ local . cluster_count > 1 ? 1 : 0 } "
149
+ /* count = "${local.cluster_count > 1 ? 1 : 0}" */
150
+ count = " ${ local . vault_clustered_count } "
115
151
name = " vault-${ var . env } -secondary"
116
152
cluster = " ${ var . ecs_cluster_ids [1 ]} "
117
153
task_definition = " ${ aws_ecs_task_definition . vault . arn } "
@@ -136,6 +172,19 @@ resource "aws_ecs_service" "vault_secondary" {
136
172
]
137
173
}
138
174
175
+ resource "aws_ecs_service" "vault_init" {
176
+ count = " ${ local . vault_init_count } "
177
+ name = " vault-init-${ var . env } "
178
+ cluster = " ${ var . ecs_cluster_ids [0 ]} "
179
+ task_definition = " ${ aws_ecs_task_definition . vault_init . arn } "
180
+ desired_count = " 1"
181
+ deployment_minimum_healthy_percent = " 0"
182
+
183
+ placement_constraints {
184
+ type = " distinctInstance"
185
+ }
186
+ }
187
+
139
188
# End Service
140
189
# Security Groups
141
190
resource "aws_security_group" "lb-vault-sg" {
0 commit comments