Skip to content

Commit 7ac014a

Browse files
committed
ci: Bundle OpenTofu setup actions.
1 parent db350b8 commit 7ac014a

File tree

9 files changed

+177
-131
lines changed

9 files changed

+177
-131
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Setup OpenTofu
2+
description: Sets up OpenTofu and related environment variables
3+
inputs:
4+
config:
5+
description: OpenTofu configuration to initialize.
6+
required: true
7+
default: service
8+
runs:
9+
using: composite
10+
steps:
11+
- name: Setup OpenTofu
12+
uses: opentofu/setup-opentofu@v1
13+
with:
14+
tofu_wrapper: false
15+
- name: Display OpenTofu version
16+
shell: bash
17+
run: tofu version
18+
- name: Set optional variables
19+
shell: bash
20+
run: |
21+
variables=(
22+
"apply_database_updates_immediately" "consumer_container_count"
23+
"consumer_cpu" "consumer_memory" "database_instance_count"
24+
"database_skip_final_snapshot" "deletion_protection"
25+
"deployment_environments" "environment" "export_expiration"
26+
"image_tags_mutable" "key_recovery_period" "program" "project" "repository"
27+
)
28+
for var in ${variables[@]}; do
29+
name="TF_VAR_$(echo $var | tr '[:lower:]' '[:upper:]')"
30+
if [ -n "${!name}" ]; then
31+
echo "Setting TF_VAR_$var"
32+
echo "TF_VAR_$var=${!name}" >> $GITHUB_ENV
33+
else
34+
echo "$name is not set"
35+
fi
36+
done
37+
- name: Initialize OpenTofu
38+
shell: bash
39+
working-directory: ./tofu/config/${{ inputs.config }}
40+
run: tofu init

.github/workflows/deploy.yaml

Lines changed: 24 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -80,55 +80,35 @@ jobs:
8080
aws-region: ${{ secrets.AWS_REGION || 'us-west-1' }}
8181
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
8282
role-session-name: GitHub_to_AWS_via_FederatedOIDC
83-
- name: Setup OpenTofu
84-
uses: opentofu/setup-opentofu@v1
85-
with:
86-
tofu_wrapper: false
87-
- name: Display OpenTofu version
88-
run: tofu version
89-
- name: Set optional variables
90-
env:
91-
# For any of these that have a value, the corresponding TF_VAR_*
92-
# environment variable will be set.
93-
APPLY_DATABASE_UPDATES_IMMEDIATELY: ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
94-
TF_VAR_CONSUMER_CONTAINER_COUNT: ${{ secrets.TF_VAR_CONSUMER_CONTAINER_COUNT }}
95-
CONSUMER_CPU: ${{ secrets.TF_VAR_CONSUMER_CPU }}
96-
CONSUMER_MEMORY: ${{ secrets.TF_VAR_CONSUMER_MEMORY }}
97-
DATABASE_SKIP_FINAL_SNAPSHOT: ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
98-
DELETION_PROTECTION: ${{ secrets.TF_VAR_DELETION_PROTECTION }}
99-
DEPLOYMENT_ENVIRONMENTS: ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
100-
ENVIRONMENT: ${{ secrets.TF_VAR_ENVIRONMENT }}
101-
EXPORT_EXPIRATION: ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
102-
IMAGE_TAGS_MUTABLE: ${{ secrets.TF_VAR_IMAGE_TAGS_MUTABLE }}
103-
KEY_RECOVERY_PERIOD: ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
104-
PROGRAM: ${{ secrets.TF_VAR_PROGRAM }}
105-
PROJECT: ${{ secrets.TF_VAR_PROJECT }}
106-
REPOSITORY: ${{ secrets.TF_VAR_REPOSITORY }}
107-
run: |
108-
variables=(
109-
"apply_database_updates_immediately" "consumer_container_count"
110-
"consumer_cpu" "consumer_memory" "database_skip_final_snapshot"
111-
"deletion_protection" "deployment_environments" "environment"
112-
"export_expiration" "image_tags_mutable" "key_recovery_period"
113-
"program" "project" "repository"
114-
)
115-
for var in ${variables[@]}; do
116-
name="$(echo $var | tr '[:lower:]' '[:upper:]')"
117-
if [ -n "${!name}" ]; then
118-
echo "Setting TF_VAR_$var"
119-
echo "TF_VAR_$var=${!name}" >> $GITHUB_ENV
120-
else
121-
echo "$name is not set"
122-
fi
123-
done
12483
- name: Download plan file
12584
uses: actions/download-artifact@v4
12685
with:
12786
name: ${{ inputs.config }}-tfplan
12887
path: ./tofu/config/${{ inputs.config }}
129-
- name: Initialize OpenTofu
130-
working-directory: ./tofu/config/${{ inputs.config }}
131-
run: tofu init
88+
- name: Setup OpenTofu
89+
uses: ./.github/actions/setup-opentofu
90+
env:
91+
TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY: ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
92+
TF_VAR_CONSUMER_CONTAINER_COUNT: ${{ secrets.TF_VAR_CONSUMER_CONTAINER_COUNT }}
93+
TF_VAR_CONSUMER_CPU: ${{ secrets.TF_VAR_CONSUMER_CPU }}
94+
TF_VAR_CONSUMER_MEMORY: ${{ secrets.TF_VAR_CONSUMER_MEMORY }}
95+
TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT: ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
96+
TF_VAR_DATABASE_INSTANCE_COUNT: ${{ secrets.TF_VAR_DATABASE_INSTANCE_COUNT }}
97+
TF_VAR_DELETION_PROTECTION: ${{ secrets.TF_VAR_DELETION_PROTECTION }}
98+
TF_VAR_DEPLOYMENT_ENVIRONMENTS: ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
99+
TF_VAR_ENVIRONMENT: ${{ inputs.environment }}
100+
TF_VAR_EXPORT_EXPIRATION: ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
101+
TF_VAR_IMAGE_TAGS_MUTABLE: ${{ secrets.TF_VAR_IMAGE_TAGS_MUTABLE }}
102+
TF_VAR_KEY_RECOVERY_PERIOD: ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
103+
TF_VAR_PROJECT: ${{ secrets.TF_VAR_PROJECT }}
104+
TF_VAR_PROGRAM: ${{ secrets.TF_VAR_PROGRAM }}
105+
TF_VAR_REPO_OIDC_ARN: ${{ secrets.TF_VAR_REPO_OIDC_ARN }}
106+
TF_VAR_REPOSITORY: ${{ secrets.TF_VAR_REPOSITORY }}
107+
TF_VAR_VPC_CIDR: ${{ secrets.TF_VAR_VPC_CIDR }}
108+
TF_VAR_VPC_PRIVATE_SUBNET_CIDRS: ${{ secrets.TF_VAR_VPC_PRIVATE_SUBNET_CIDRS }}
109+
TF_VAR_VPC_PUBLIC_SUBNET_CIDRS: ${{ secrets.TF_VAR_VPC_PUBLIC_SUBNET_CIDRS }}
110+
with:
111+
config: ${{ inputs.config }}
132112
- name: Deploy changes
133113
working-directory: ./tofu/config/${{ inputs.config }}
134114
run: tofu apply tfplan

.github/workflows/launch-tools.yaml

Lines changed: 65 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -40,50 +40,74 @@ jobs:
4040
aws-region: ${{ secrets.AWS_REGION || 'us-west-1' }}
4141
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
4242
role-session-name: GitHub_to_AWS_via_FederatedOIDC
43+
# - name: Setup OpenTofu
44+
# uses: opentofu/setup-opentofu@v1
45+
# with:
46+
# tofu_wrapper: false
47+
# - name: Display OpenTofu version
48+
# run: tofu version
49+
# - name: Set optional variables
50+
# env:
51+
# # For any of these that have a value, the corresponding TF_VAR_*
52+
# # environment variable will be set.
53+
# APPLY_DATABASE_UPDATES_IMMEDIATELY: ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
54+
# TF_VAR_CONSUMER_CONTAINER_COUNT: ${{ secrets.TF_VAR_CONSUMER_CONTAINER_COUNT }}
55+
# CONSUMER_CPU: ${{ secrets.TF_VAR_CONSUMER_CPU }}
56+
# CONSUMER_MEMORY: ${{ secrets.TF_VAR_CONSUMER_MEMORY }}
57+
# DATABASE_SKIP_FINAL_SNAPSHOT: ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
58+
# DELETION_PROTECTION: ${{ secrets.TF_VAR_DELETION_PROTECTION }}
59+
# DEPLOYMENT_ENVIRONMENTS: ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
60+
# ENVIRONMENT: ${{ secrets.TF_VAR_ENVIRONMENT }}
61+
# EXPORT_EXPIRATION: ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
62+
# IMAGE_TAGS_MUTABLE: ${{ secrets.TF_VAR_IMAGE_TAGS_MUTABLE }}
63+
# KEY_RECOVERY_PERIOD: ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
64+
# PROGRAM: ${{ secrets.TF_VAR_PROGRAM }}
65+
# PROJECT: ${{ secrets.TF_VAR_PROJECT }}
66+
# REPOSITORY: ${{ secrets.TF_VAR_REPOSITORY }}
67+
# run: |
68+
# variables=(
69+
# "apply_database_updates_immediately" "consumer_container_count"
70+
# "consumer_cpu" "consumer_memory" "database_skip_final_snapshot"
71+
# "deletion_protection" "deployment_environments" "environment"
72+
# "export_expiration" "image_tags_mutable" "key_recovery_period"
73+
# "program" "project" "repository"
74+
# )
75+
# for var in ${variables[@]}; do
76+
# name="$(echo $var | tr '[:lower:]' '[:upper:]')"
77+
# if [ -n "${!name}" ]; then
78+
# echo "Setting TF_VAR_$var"
79+
# echo "TF_VAR_$var=${!name}" >> $GITHUB_ENV
80+
# else
81+
# echo "$name is not set"
82+
# fi
83+
# done
84+
# - name: Initialize OpenTofu
85+
# working-directory: ./tofu/config/service
86+
# run: tofu init
4387
- name: Setup OpenTofu
44-
uses: opentofu/setup-opentofu@v1
45-
with:
46-
tofu_wrapper: false
47-
- name: Display OpenTofu version
48-
run: tofu version
49-
- name: Set optional variables
88+
uses: ./.github/actions/setup-opentofu
5089
env:
51-
# For any of these that have a value, the corresponding TF_VAR_*
52-
# environment variable will be set.
53-
APPLY_DATABASE_UPDATES_IMMEDIATELY: ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
90+
TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY: ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
5491
TF_VAR_CONSUMER_CONTAINER_COUNT: ${{ secrets.TF_VAR_CONSUMER_CONTAINER_COUNT }}
55-
CONSUMER_CPU: ${{ secrets.TF_VAR_CONSUMER_CPU }}
56-
CONSUMER_MEMORY: ${{ secrets.TF_VAR_CONSUMER_MEMORY }}
57-
DATABASE_SKIP_FINAL_SNAPSHOT: ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
58-
DELETION_PROTECTION: ${{ secrets.TF_VAR_DELETION_PROTECTION }}
59-
DEPLOYMENT_ENVIRONMENTS: ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
60-
ENVIRONMENT: ${{ secrets.TF_VAR_ENVIRONMENT }}
61-
EXPORT_EXPIRATION: ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
62-
IMAGE_TAGS_MUTABLE: ${{ secrets.TF_VAR_IMAGE_TAGS_MUTABLE }}
63-
KEY_RECOVERY_PERIOD: ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
64-
PROGRAM: ${{ secrets.TF_VAR_PROGRAM }}
65-
PROJECT: ${{ secrets.TF_VAR_PROJECT }}
66-
REPOSITORY: ${{ secrets.TF_VAR_REPOSITORY }}
67-
run: |
68-
variables=(
69-
"apply_database_updates_immediately" "consumer_container_count"
70-
"consumer_cpu" "consumer_memory" "database_skip_final_snapshot"
71-
"deletion_protection" "deployment_environments" "environment"
72-
"export_expiration" "image_tags_mutable" "key_recovery_period"
73-
"program" "project" "repository"
74-
)
75-
for var in ${variables[@]}; do
76-
name="$(echo $var | tr '[:lower:]' '[:upper:]')"
77-
if [ -n "${!name}" ]; then
78-
echo "Setting TF_VAR_$var"
79-
echo "TF_VAR_$var=${!name}" >> $GITHUB_ENV
80-
else
81-
echo "$name is not set"
82-
fi
83-
done
84-
- name: Initialize OpenTofu
85-
working-directory: ./tofu/config/service
86-
run: tofu init
92+
TF_VAR_CONSUMER_CPU: ${{ secrets.TF_VAR_CONSUMER_CPU }}
93+
TF_VAR_CONSUMER_MEMORY: ${{ secrets.TF_VAR_CONSUMER_MEMORY }}
94+
TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT: ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
95+
TF_VAR_DATABASE_INSTANCE_COUNT: ${{ secrets.TF_VAR_DATABASE_INSTANCE_COUNT }}
96+
TF_VAR_DELETION_PROTECTION: ${{ secrets.TF_VAR_DELETION_PROTECTION }}
97+
TF_VAR_DEPLOYMENT_ENVIRONMENTS: ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
98+
TF_VAR_ENVIRONMENT: ${{ inputs.environment }}
99+
TF_VAR_EXPORT_EXPIRATION: ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
100+
TF_VAR_IMAGE_TAGS_MUTABLE: ${{ secrets.TF_VAR_IMAGE_TAGS_MUTABLE }}
101+
TF_VAR_KEY_RECOVERY_PERIOD: ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
102+
TF_VAR_PROJECT: ${{ secrets.TF_VAR_PROJECT }}
103+
TF_VAR_PROGRAM: ${{ secrets.TF_VAR_PROGRAM }}
104+
TF_VAR_REPO_OIDC_ARN: ${{ secrets.TF_VAR_REPO_OIDC_ARN }}
105+
TF_VAR_REPOSITORY: ${{ secrets.TF_VAR_REPOSITORY }}
106+
TF_VAR_VPC_CIDR: ${{ secrets.TF_VAR_VPC_CIDR }}
107+
TF_VAR_VPC_PRIVATE_SUBNET_CIDRS: ${{ secrets.TF_VAR_VPC_PRIVATE_SUBNET_CIDRS }}
108+
TF_VAR_VPC_PUBLIC_SUBNET_CIDRS: ${{ secrets.TF_VAR_VPC_PUBLIC_SUBNET_CIDRS }}
109+
with:
110+
config: service
87111
- name: Get OpenTofu outputs
88112
id: outputs
89113
working-directory: ./tofu/config/service
@@ -110,8 +134,6 @@ jobs:
110134
echo "command<<EOF" >> $GITHUB_OUTPUT
111135
echo "$COMMAND_STRING" >> $GITHUB_OUTPUT
112136
echo "EOF" >> $GITHUB_OUTPUT
113-
# - name: Show outputs
114-
# run: echo "${{ steps.command.outputs.command }}"
115137
- name: Launch container
116138
id: run-task
117139
uses: geekcell/github-action-aws-ecs-run-task@v5

.github/workflows/plan.yaml

Lines changed: 25 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ on:
6868
default: development
6969
required: true
7070
type: environment
71+
image_tag:
72+
description: (Optional) Image tag to use for the OpenTofu containers. Defaults to latest SHA.
73+
required: false
74+
type: string
7175

7276
permissions:
7377
contents: read
@@ -95,49 +99,29 @@ jobs:
9599
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
96100
role-session-name: GitHub_to_AWS_via_FederatedOIDC
97101
- name: Setup OpenTofu
98-
uses: opentofu/setup-opentofu@v1
99-
with:
100-
tofu_wrapper: false
101-
- name: Display OpenTofu version
102-
run: tofu version
103-
- name: Set optional variables
102+
uses: ./.github/actions/setup-opentofu
104103
env:
105-
# For any of these that have a value, the corresponding TF_VAR_*
106-
# environment variable will be set.
107-
APPLY_DATABASE_UPDATES_IMMEDIATELY: ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
104+
TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY: ${{ secrets.TF_VAR_APPLY_DATABASE_UPDATES_IMMEDIATELY }}
108105
TF_VAR_CONSUMER_CONTAINER_COUNT: ${{ secrets.TF_VAR_CONSUMER_CONTAINER_COUNT }}
109-
CONSUMER_CPU: ${{ secrets.TF_VAR_CONSUMER_CPU }}
110-
CONSUMER_MEMORY: ${{ secrets.TF_VAR_CONSUMER_MEMORY }}
111-
DATABASE_SKIP_FINAL_SNAPSHOT: ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
112-
DELETION_PROTECTION: ${{ secrets.TF_VAR_DELETION_PROTECTION }}
113-
DEPLOYMENT_ENVIRONMENTS: ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
114-
ENVIRONMENT: ${{ secrets.TF_VAR_ENVIRONMENT }}
115-
EXPORT_EXPIRATION: ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
116-
IMAGE_TAGS_MUTABLE: ${{ secrets.TF_VAR_IMAGE_TAGS_MUTABLE }}
117-
KEY_RECOVERY_PERIOD: ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
118-
PROGRAM: ${{ secrets.TF_VAR_PROGRAM }}
119-
PROJECT: ${{ secrets.TF_VAR_PROJECT }}
120-
REPOSITORY: ${{ secrets.TF_VAR_REPOSITORY }}
121-
run: |
122-
variables=(
123-
"apply_database_updates_immediately" "consumer_container_count"
124-
"consumer_cpu" "consumer_memory" "database_skip_final_snapshot"
125-
"deletion_protection" "deployment_environments" "environment"
126-
"export_expiration" "image_tags_mutable" "key_recovery_period"
127-
"program" "project" "repository"
128-
)
129-
for var in ${variables[@]}; do
130-
name="$(echo $var | tr '[:lower:]' '[:upper:]')"
131-
if [ -n "${!name}" ]; then
132-
echo "Setting TF_VAR_$var"
133-
echo "TF_VAR_$var=${!name}" >> $GITHUB_ENV
134-
else
135-
echo "$name is not set"
136-
fi
137-
done
138-
- name: Initialize OpenTofu
139-
working-directory: ./tofu/config/${{ inputs.config }}
140-
run: tofu init
106+
TF_VAR_CONSUMER_CPU: ${{ secrets.TF_VAR_CONSUMER_CPU }}
107+
TF_VAR_CONSUMER_MEMORY: ${{ secrets.TF_VAR_CONSUMER_MEMORY }}
108+
TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT: ${{ secrets.TF_VAR_DATABASE_SKIP_FINAL_SNAPSHOT }}
109+
TF_VAR_DATABASE_INSTANCE_COUNT: ${{ secrets.TF_VAR_DATABASE_INSTANCE_COUNT }}
110+
TF_VAR_DELETION_PROTECTION: ${{ secrets.TF_VAR_DELETION_PROTECTION }}
111+
TF_VAR_DEPLOYMENT_ENVIRONMENTS: ${{ secrets.TF_VAR_DEPLOYMENT_ENVIRONMENTS }}
112+
TF_VAR_ENVIRONMENT: ${{ inputs.environment }}
113+
TF_VAR_EXPORT_EXPIRATION: ${{ secrets.TF_VAR_EXPORT_EXPIRATION }}
114+
TF_VAR_IMAGE_TAGS_MUTABLE: ${{ secrets.TF_VAR_IMAGE_TAGS_MUTABLE }}
115+
TF_VAR_KEY_RECOVERY_PERIOD: ${{ secrets.TF_VAR_KEY_RECOVERY_PERIOD }}
116+
TF_VAR_PROJECT: ${{ secrets.TF_VAR_PROJECT }}
117+
TF_VAR_PROGRAM: ${{ secrets.TF_VAR_PROGRAM }}
118+
TF_VAR_REPO_OIDC_ARN: ${{ secrets.TF_VAR_REPO_OIDC_ARN }}
119+
TF_VAR_REPOSITORY: ${{ secrets.TF_VAR_REPOSITORY }}
120+
TF_VAR_VPC_CIDR: ${{ secrets.TF_VAR_VPC_CIDR }}
121+
TF_VAR_VPC_PRIVATE_SUBNET_CIDRS: ${{ secrets.TF_VAR_VPC_PRIVATE_SUBNET_CIDRS }}
122+
TF_VAR_VPC_PUBLIC_SUBNET_CIDRS: ${{ secrets.TF_VAR_VPC_PUBLIC_SUBNET_CIDRS }}
123+
with:
124+
config: ${{ inputs.config }}
141125
- name: Plan changes
142126
working-directory: ./tofu/config/${{ inputs.config }}
143127
run: tofu plan -concise -no-color -out tfplan > plan.txt

tofu/config/service/locals.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
locals {
2+
image_tag = var.image_tag != null ? var.image_tag : sha256(timestamp())
3+
}

tofu/config/service/main.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ module "system" {
3030
container_subnets = split(",", module.inputs.values["vpc/private_subnets"])
3131

3232
apply_database_updates_immediately = var.apply_database_updates_immediately
33+
database_instance_count = var.database_instance_count
3334
database_skip_final_snapshot = var.database_skip_final_snapshot
3435
deletion_protection = var.deletion_protection
35-
image_tag = var.image_tag != null ? var.image_tag : sha256(timestamp())
36+
image_tag = local.image_tag
3637
image_tags_mutable = var.image_tags_mutable
3738

3839
consumer_container_count = var.consumer_container_count

tofu/config/service/outputs.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ output "export_bucket" {
88
description = "The name of the S3 bucket for exports."
99
}
1010

11+
output "image_tag" {
12+
value = local.image_tag
13+
description = "The tag of the container image used for the ECS tasks."
14+
}
15+
1116
output "queue_url" {
1217
value = module.system.queue_url
1318
description = "The URL of the SQS queue."

tofu/config/service/variables.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,17 @@ variable "consumer_memory" {
2222
default = 4096
2323
}
2424

25+
variable "database_instance_count" {
26+
type = number
27+
description = "Number of instances in the database cluster."
28+
default = 1
29+
30+
validation {
31+
condition = var.database_instance_count >= 0 && var.database_instance_count < 17
32+
error_message = "Database instance count must be between 0 and 16."
33+
}
34+
}
35+
2536
variable "database_skip_final_snapshot" {
2637
type = bool
2738
description = "Whether to skip the final snapshot when the database cluster is deleted."

tofu/modules/system/variables.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ variable "database_instance_count" {
3333
default = 1
3434

3535
validation {
36-
condition = var.database_instance_count > 0 && var.database_instance_count < 17
37-
error_message = "Database instance count must be between 1 and 16."
36+
condition = var.database_instance_count >= 0 && var.database_instance_count < 17
37+
error_message = "Database instance count must be between 0 and 16."
3838
}
3939
}
4040

0 commit comments

Comments
 (0)