@@ -48,6 +48,14 @@ resource "aws_ecs_service" "retool" {
48
48
container_name = " retool"
49
49
container_port = 3000
50
50
}
51
+
52
+ # Need to explictly set this in aws_ecs_service to avoid destructive behavior: https://github.com/hashicorp/terraform-provider-aws/issues/22823
53
+ capacity_provider_strategy {
54
+ base = 1
55
+ weight = 100
56
+ capacity_provider = var. launch_type == " FARGATE" ? " FARGATE" : aws_ecs_capacity_provider. this [0 ]. name
57
+ }
58
+
51
59
dynamic "network_configuration" {
52
60
for_each = var. launch_type == " FARGATE" ? toset ([1 ]) : toset ([])
53
61
@@ -66,6 +74,14 @@ resource "aws_ecs_service" "jobs_runner" {
66
74
cluster = aws_ecs_cluster. this . id
67
75
desired_count = 1
68
76
task_definition = aws_ecs_task_definition. retool_jobs_runner . arn
77
+
78
+ # Need to explictly set this in aws_ecs_service to avoid destructive behavior: https://github.com/hashicorp/terraform-provider-aws/issues/22823
79
+ capacity_provider_strategy {
80
+ base = 1
81
+ weight = 100
82
+ capacity_provider = var. launch_type == " FARGATE" ? " FARGATE" : aws_ecs_capacity_provider. this [0 ]. name
83
+ }
84
+
69
85
dynamic "network_configuration" {
70
86
71
87
for_each = var. launch_type == " FARGATE" ? toset ([1 ]) : toset ([])
@@ -87,6 +103,13 @@ resource "aws_ecs_service" "workflows_backend" {
87
103
desired_count = 1
88
104
task_definition = aws_ecs_task_definition. retool_workflows_backend [0 ]. arn
89
105
106
+ # Need to explictly set this in aws_ecs_service to avoid destructive behavior: https://github.com/hashicorp/terraform-provider-aws/issues/22823
107
+ capacity_provider_strategy {
108
+ base = 1
109
+ weight = 100
110
+ capacity_provider = var. launch_type == " FARGATE" ? " FARGATE" : aws_ecs_capacity_provider. this [0 ]. name
111
+ }
112
+
90
113
service_registries {
91
114
registry_arn = aws_service_discovery_service. retool_workflow_backend_service [0 ]. arn
92
115
}
@@ -110,6 +133,13 @@ resource "aws_ecs_service" "workflows_worker" {
110
133
cluster = aws_ecs_cluster. this . id
111
134
desired_count = 1
112
135
task_definition = aws_ecs_task_definition. retool_workflows_worker [0 ]. arn
136
+
137
+ # Need to explictly set this in aws_ecs_service to avoid destructive behavior: https://github.com/hashicorp/terraform-provider-aws/issues/22823
138
+ capacity_provider_strategy {
139
+ base = 1
140
+ weight = 100
141
+ capacity_provider = var. launch_type == " FARGATE" ? " FARGATE" : aws_ecs_capacity_provider. this [0 ]. name
142
+ }
113
143
dynamic "network_configuration" {
114
144
115
145
for_each = var. launch_type == " FARGATE" ? toset ([1 ]) : toset ([])
@@ -130,16 +160,16 @@ resource "aws_ecs_task_definition" "retool_jobs_runner" {
130
160
execution_role_arn = var. launch_type == " FARGATE" ? aws_iam_role. execution_role [0 ]. arn : null
131
161
requires_compatibilities = var. launch_type == " FARGATE" ? [" FARGATE" ] : null
132
162
network_mode = var. launch_type == " FARGATE" ? " awsvpc" : " bridge"
133
- cpu = var. launch_type == " FARGATE" ? var. ecs_task_cpu : null
134
- memory = var. launch_type == " FARGATE" ? var. ecs_task_memory : null
163
+ cpu = var. launch_type == " FARGATE" ? var. ecs_task_resource_map [ " jobs_runner " ][ " cpu " ] : null
164
+ memory = var. launch_type == " FARGATE" ? var. ecs_task_resource_map [ " jobs_runner " ][ " memory " ] : null
135
165
container_definitions = jsonencode (
136
166
[
137
167
{
138
168
name = " retool-jobs-runner"
139
169
essential = true
140
170
image = var.ecs_retool_image
141
- cpu = var.launch_type == " EC2" ? var.ecs_task_cpu : null
142
- memory = var.launch_type == " EC2" ? var.ecs_task_memory : null
171
+ cpu = var.launch_type == " EC2" ? var.ecs_task_resource_map[ " jobs_runner " ][ " cpu " ] : null
172
+ memory = var.launch_type == " EC2" ? var.ecs_task_resource_map[ " jobs_runner " ][ " memory " ] : null
143
173
command = [
144
174
" ./docker_scripts/start_api.sh"
145
175
]
@@ -180,16 +210,16 @@ resource "aws_ecs_task_definition" "retool" {
180
210
execution_role_arn = var. launch_type == " FARGATE" ? aws_iam_role. execution_role [0 ]. arn : null
181
211
requires_compatibilities = var. launch_type == " FARGATE" ? [" FARGATE" ] : null
182
212
network_mode = var. launch_type == " FARGATE" ? " awsvpc" : " bridge"
183
- cpu = var. launch_type == " FARGATE" ? var. ecs_task_cpu : null
184
- memory = var. launch_type == " FARGATE" ? var. ecs_task_memory : null
213
+ cpu = var. launch_type == " FARGATE" ? var. ecs_task_resource_map [ " main " ][ " cpu " ] : null
214
+ memory = var. launch_type == " FARGATE" ? var. ecs_task_resource_map [ " main " ][ " memory " ] : null
185
215
container_definitions = jsonencode (
186
216
[
187
217
{
188
218
name = " retool"
189
219
essential = true
190
220
image = var.ecs_retool_image
191
- cpu = var.launch_type == " EC2" ? var.ecs_task_cpu : null
192
- memory = var.launch_type == " EC2" ? var.ecs_task_memory : null
221
+ cpu = var.launch_type == " EC2" ? var.ecs_task_resource_map[ " main " ][ " cpu " ] : null
222
+ memory = var.launch_type == " EC2" ? var.ecs_task_resource_map[ " main " ][ " memory " ] : null
193
223
command = [
194
224
" ./docker_scripts/start_api.sh"
195
225
]
@@ -236,16 +266,16 @@ resource "aws_ecs_task_definition" "retool_workflows_backend" {
236
266
execution_role_arn = var. launch_type == " FARGATE" ? aws_iam_role. execution_role [0 ]. arn : null
237
267
requires_compatibilities = var. launch_type == " FARGATE" ? [" FARGATE" ] : null
238
268
network_mode = var. launch_type == " FARGATE" ? " awsvpc" : " bridge"
239
- cpu = var. launch_type == " FARGATE" ? var. ecs_task_cpu : null
240
- memory = var. launch_type == " FARGATE" ? var. ecs_task_memory : null
269
+ cpu = var. launch_type == " FARGATE" ? var. ecs_task_resource_map [ " workflows_backend " ][ " cpu " ] : null
270
+ memory = var. launch_type == " FARGATE" ? var. ecs_task_resource_map [ " workflows_backend " ][ " memory " ] : null
241
271
container_definitions = jsonencode (
242
272
[
243
273
{
244
- name = " retool"
274
+ name = " retool-workflows-backend "
245
275
essential = true
246
276
image = var.ecs_retool_image
247
- cpu = var.launch_type == " EC2" ? var.ecs_task_cpu : null
248
- memory = var.launch_type == " EC2" ? var.ecs_task_memory : null
277
+ cpu = var.launch_type == " EC2" ? var.ecs_task_resource_map[ " workflows_backend " ][ " cpu " ] : null
278
+ memory = var.launch_type == " EC2" ? var.ecs_task_resource_map[ " workflows_backend " ][ " memory " ] : null
249
279
command = [
250
280
" ./docker_scripts/start_api.sh"
251
281
]
@@ -291,16 +321,16 @@ resource "aws_ecs_task_definition" "retool_workflows_worker" {
291
321
execution_role_arn = var. launch_type == " FARGATE" ? aws_iam_role. execution_role [0 ]. arn : null
292
322
requires_compatibilities = var. launch_type == " FARGATE" ? [" FARGATE" ] : null
293
323
network_mode = var. launch_type == " FARGATE" ? " awsvpc" : " bridge"
294
- cpu = var. launch_type == " FARGATE" ? var. ecs_task_cpu : null
295
- memory = var. launch_type == " FARGATE" ? var. ecs_task_memory : null
324
+ cpu = var. launch_type == " FARGATE" ? var. ecs_task_resource_map [ " workflows_worker " ][ " cpu " ] : null
325
+ memory = var. launch_type == " FARGATE" ? var. ecs_task_resource_map [ " workflows_worker " ][ " memory " ] : null
296
326
container_definitions = jsonencode (
297
327
[
298
328
{
299
- name = " retool"
329
+ name = " retool-workflows-worker "
300
330
essential = true
301
331
image = var.ecs_retool_image
302
- cpu = var.launch_type == " EC2" ? var.ecs_task_cpu : null
303
- memory = var.launch_type == " EC2" ? var.ecs_task_memory : null
332
+ cpu = var.launch_type == " EC2" ? var.ecs_task_resource_map[ " workflows_worker " ][ " cpu " ] : null
333
+ memory = var.launch_type == " EC2" ? var.ecs_task_resource_map[ " workflows_worker " ][ " memory " ] : null
304
334
command = [
305
335
" ./docker_scripts/start_api.sh"
306
336
]
@@ -372,7 +402,7 @@ resource "aws_service_discovery_service" "retool_workflow_backend_service" {
372
402
}
373
403
374
404
module "temporal" {
375
- count = var. workflows_enabled ? 1 : 0
405
+ count = var. workflows_enabled && ! var . use_exising_temporal_cluster ? 1 : 0
376
406
source = " ./temporal"
377
407
378
408
deployment_name = " ${ var . deployment_name } -temporal"
@@ -384,4 +414,5 @@ module "temporal" {
384
414
aws_ecs_cluster_id = aws_ecs_cluster. this . id
385
415
launch_type = var. launch_type
386
416
container_sg_id = aws_security_group. containers . id
417
+ aws_ecs_capacity_provider_name = var. launch_type == " EC2" ? aws_ecs_capacity_provider. this [0 ]. name : null
387
418
}
0 commit comments