Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
2aadbc2
implement service connect for ecs service
juliareynolds-nava Jan 13, 2026
3dc0754
Merge branch 'main' into plt-1448_implement_service_connect
juliareynolds-nava Jan 14, 2026
fc0f27e
add prefix for uniqueness
juliareynolds-nava Jan 14, 2026
f9e8a2d
restore load balancers
juliareynolds-nava Jan 14, 2026
7b6866d
Merge branch 'main' into plt-1448_implement_service_connect
juliareynolds-nava Jan 16, 2026
61bd109
initial checkin
juliareynolds-nava Jan 20, 2026
a0b5af6
initial checkin
juliareynolds-nava Jan 21, 2026
83d8782
testing scripts
juliareynolds-nava Jan 21, 2026
98ac661
create aws_service_discovery_http_namespace with cluster
juliareynolds-nava Jan 21, 2026
efce24d
implement cluster and service modules
juliareynolds-nava Jan 21, 2026
171c748
get first portMapping
juliareynolds-nava Jan 21, 2026
6926c62
initial checkin
juliareynolds-nava Jan 20, 2026
0f923ea
initial checkin
juliareynolds-nava Jan 21, 2026
dfb9fda
testing scripts
juliareynolds-nava Jan 21, 2026
c220fb6
implement cluster and service modules
juliareynolds-nava Jan 21, 2026
9310e4c
fix outputs
juliareynolds-nava Jan 21, 2026
6c809f8
Merge remote-tracking branch 'origin/plt-1448_test_service_connect' i…
juliareynolds-nava Jan 21, 2026
65aed30
updated the vpc id
juliareynolds-nava Jan 21, 2026
6e27904
correcting container names
juliareynolds-nava Jan 21, 2026
de1c7fd
added container_name_override
juliareynolds-nava Jan 22, 2026
87a09f8
correct public subnets
juliareynolds-nava Jan 22, 2026
ef276f8
private subnets
juliareynolds-nava Jan 22, 2026
f49260a
index port_mappings
juliareynolds-nava Jan 21, 2026
7b41f6b
added output for service connect discovery namespace
juliareynolds-nava Jan 21, 2026
b50e74f
added var for service connect discovery namespace
juliareynolds-nava Jan 21, 2026
af99d95
adding cdap as an allowed app
juliareynolds-nava Jan 21, 2026
5ba0a1d
Bump @smithy/config-resolver from 3.0.5 to 3.0.13 in /actions/aws-par…
dependabot[bot] Jan 21, 2026
a478c52
Bump @smithy/config-resolver from 3.0.13 to 4.4.6 in /actions/aws-par…
dependabot[bot] Jan 21, 2026
ebc2413
implement service connect for ecs service
juliareynolds-nava Jan 13, 2026
fa04b7b
added container_name_override
juliareynolds-nava Jan 21, 2026
2723da1
PLT-1562: Revert version update that broke ncc build (#378)
gfreeman-navapbc Jan 21, 2026
50b92da
implement service connect for ecs service
juliareynolds-nava Jan 13, 2026
2b0f017
restore load balancers
juliareynolds-nava Jan 14, 2026
99650d7
added container_name_override
juliareynolds-nava Jan 22, 2026
6bc17db
fixing merge issue
juliareynolds-nava Jan 22, 2026
23388b5
removed dupe service connect discovery namespace
juliareynolds-nava Jan 22, 2026
955a549
add env to discovery service
juliareynolds-nava Jan 22, 2026
44e2db2
remove extra dash
juliareynolds-nava Jan 22, 2026
0e80ea2
initial checkin
juliareynolds-nava Jan 20, 2026
f12155d
initial checkin
juliareynolds-nava Jan 21, 2026
6d5a887
correcting container names
juliareynolds-nava Jan 21, 2026
194fee2
merged with implement branch and reordered service variables
juliareynolds-nava Jan 26, 2026
a4d027d
writable volumes in task defs
juliareynolds-nava Jan 27, 2026
ddc6565
use aws_service_discovery_http_namespace.ecs-service-discovery.arn fr…
juliareynolds-nava Jan 27, 2026
ed02f59
add variables
juliareynolds-nava Jan 27, 2026
b30f1a1
lb for backend
juliareynolds-nava Jan 27, 2026
308cd55
lb for backend
juliareynolds-nava Jan 27, 2026
3c6b09b
readonly false for demo
juliareynolds-nava Jan 27, 2026
f33fcb5
readonly false for demo
juliareynolds-nava Jan 27, 2026
82a178e
fix reference
juliareynolds-nava Jan 28, 2026
751da9c
remove ns for now
juliareynolds-nava Jan 28, 2026
7790e5f
remove ns for now
juliareynolds-nava Jan 28, 2026
fa8204d
Wrote a service to create a service connect namespace for each ECS cl…
juliareynolds-nava Jan 28, 2026
2d6e36c
Use data block to fetch service connect namespace
juliareynolds-nava Jan 28, 2026
d685d86
To fix plan/apply for service-connect-cluster-namespaces.
juliareynolds-nava Jan 28, 2026
93c65e6
assign existing cluster service connect namespaces
juliareynolds-nava Jan 29, 2026
78b57fc
assign existing cluster service connect namespaces
juliareynolds-nava Jan 29, 2026
0b2e36b
configure cluster arn from module
juliareynolds-nava Jan 29, 2026
1a9d312
update readme
juliareynolds-nava Jan 29, 2026
5731eb4
add readme
juliareynolds-nava Jan 29, 2026
8137ea6
moved service connect to test directory for service module
juliareynolds-nava Feb 2, 2026
57e0751
Add workflow and update scripts for tf-module-test
gsf Feb 2, 2026
02ba61b
make service connect client alias unique
juliareynolds-nava Feb 2, 2026
46daefe
make service connect client alias unique
juliareynolds-nava Feb 2, 2026
1eab8a8
make service connect client alias unique
juliareynolds-nava Feb 2, 2026
e7a0fc7
make service connect client alias unique
juliareynolds-nava Feb 2, 2026
07df2df
port 8080
juliareynolds-nava Feb 2, 2026
556aaf2
remove container override
juliareynolds-nava Feb 4, 2026
86e5609
remove duplicate data block
juliareynolds-nava Feb 4, 2026
cb47d92
remove duplicate data block
juliareynolds-nava Feb 4, 2026
7963c54
data call for accountid
juliareynolds-nava Feb 5, 2026
28d0c42
data call for region name
juliareynolds-nava Feb 5, 2026
1692d4a
add acm-pca:GetCertificateAuthorityCsr permission
juliareynolds-nava Feb 5, 2026
f482c35
add acm-pca:GetCertificateAuthorityCsr permission
juliareynolds-nava Feb 5, 2026
59f548a
add acm-pca:GetCertificateAuthorityCsr permission
juliareynolds-nava Feb 5, 2026
44666f4
add acm-pca:GetCertificateAuthorityCsr permission
juliareynolds-nava Feb 5, 2026
4bfceb9
refactored demo to test folder
juliareynolds-nava Feb 11, 2026
da72f28
advice per oit
juliareynolds-nava Feb 12, 2026
34415a8
advice per oit
juliareynolds-nava Feb 12, 2026
a6dc253
advice per oit
juliareynolds-nava Feb 12, 2026
c9e5a2c
advice per oit
juliareynolds-nava Feb 12, 2026
5193902
Give ServiceConnect generatedatakeypair permissions
juliareynolds-nava Feb 12, 2026
7e7c051
correct policy
juliareynolds-nava Feb 12, 2026
d32d974
correct policy
juliareynolds-nava Feb 12, 2026
5ace4fd
correct policy
juliareynolds-nava Feb 12, 2026
cccdf47
correct policy
juliareynolds-nava Feb 12, 2026
d344051
correct policy
juliareynolds-nava Feb 13, 2026
d16c61a
correct policy
juliareynolds-nava Feb 13, 2026
2e71ed8
correct policy
juliareynolds-nava Feb 13, 2026
5545098
correct policy
juliareynolds-nava Feb 13, 2026
24123e8
correct policy
juliareynolds-nava Feb 13, 2026
559425f
correct policy
juliareynolds-nava Feb 13, 2026
f8375c8
correct policy
juliareynolds-nava Feb 13, 2026
923548d
correct policy
juliareynolds-nava Feb 13, 2026
beb957e
correct policy
juliareynolds-nava Feb 13, 2026
2ab4691
correct policy
juliareynolds-nava Feb 13, 2026
118fcd8
correct policy
juliareynolds-nava Feb 13, 2026
2859091
correct policy
juliareynolds-nava Feb 13, 2026
5af0ad1
correct policy
juliareynolds-nava Feb 13, 2026
48e0d41
correct policy
juliareynolds-nava Feb 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .github/workflows/tf-module-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: tf-module-test

on:
workflow_dispatch:
pull_request:
paths:
- 'terraform/modules/**'

concurrency:
group: tf-module-test

env:
TENV_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
apply:
permissions:
contents: read
id-token: write
runs-on: codebuild-cdap-${{github.run_id}}-${{github.run_attempt}}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: sigstore/cosign-installer@d58896d6a1865668819e1d91763c7751a165e159 # v3.9.2
- uses: cmsgov/cdap/actions/setup-tenv@8343fb96563ce4b74c4dececee9b268f42bd4a40
- uses: cmsgov/cdap/actions/setup-sops@84a6bcee5b70d63c44f8fec4f9b542cb5ec29a54
- uses: cmsgov/cdap/actions/setup-yq@328406d6e1d435b4e3da598bcdab22e576c3945e
- uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 # v5.1.0
with:
role-to-assume: arn:aws:iam::${{ secrets.NON_PROD_ACCOUNT }}:role/delegatedadmin/developer/cdap-test-github-actions
aws-region: ${{ vars.AWS_REGION }}
- uses: tj-actions/changed-files@24d32ffd492484c1d75e0c0b894501ddb9d30d62 # v47
id: changed-dirs
with:
files: |
terraform/modules/**
dir_names: 'true'
- run: scripts/tf-module-test
env:
APP: cdap
ENV: test
CHANGED_DIRS: ${{ steps.changed-dirs.outputs.all_changed_files }}
24 changes: 24 additions & 0 deletions scripts/lib/tofu-destroy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Library to be sourced into scripts for running tofu destroy
# in a GitHub Action.

echo "::group::$dir tofu destroy"

export TF_VAR_app="$APP"
export TF_VAR_env="$ENV"
tofu_warning=""
tofu_error=""

echo "Removing resources for $dir"
if ! tofu destroy -auto-approve; then
job_error=true
tofu_error="Error in tofu apply for $dir"
fi

echo "::endgroup::"

if [ -n "$tofu_warning" ]; then
echo "::warning::$tofu_warning"
fi
if [ -n "$tofu_error" ]; then
echo "::error::$tofu_error"
fi
40 changes: 40 additions & 0 deletions scripts/lib/tofu-init-plan-apply.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Library to be sourced into scripts for running tofu init, plan, and apply
# in a GitHub Action.

echo "::group::$dir tofu"

if ! tofu init -reconfigure -backend-config="$repo_root/terraform/backends/${APP}-${ENV}.s3.tfbackend"; then
job_error=true
echo "::endgroup::"
echo "::error::Error in tofu init for $dir"
continue
fi

export TF_VAR_app="$APP"
export TF_VAR_env="$ENV"
tofu_warning=""
tofu_error=""
if tofu plan -detailed-exitcode -out "$temp_plan_out"; then
echo "No changes planned for $dir"
elif [ "$?" -eq "2" ]; then # Detailed exit code is 2, meaning changes are planned
tofu_warning="Changes planned for $dir"
else
job_error=true
tofu_error="Error in tofu plan for $dir"
fi

if [[ -n "$tofu_warning" && "$APPLY" == "true" ]]; then
echo "Applying plan for $dir"
if ! tofu apply "$temp_plan_out"; then
job_error=true
tofu_error="Error in tofu apply for $dir"
fi
fi
echo "::endgroup::"

if [ -n "$tofu_warning" ]; then
echo "::warning::$tofu_warning"
fi
if [ -n "$tofu_error" ]; then
echo "::error::$tofu_error"
fi
40 changes: 40 additions & 0 deletions scripts/tf-module-test
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash
# Run tests on tf modules. Used in the tf-module-test workflow.
set -e

repo_root="$(git rev-parse --show-toplevel)"
script_dir="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")"
job_error=false
temp_plan_out=$(mktemp)
APPLY=true

for dir in $CHANGED_DIRS; do
dir_absolute="$repo_root/$dir"
[ ! -d "$dir_absolute/test" ] && echo "No directory found at $dir. Skipping" && continue
cd "$dir_absolute"
[ ! -f "test/test.sh" ] && echo "No test.sh file found in $dir/test. Skipping" && continue
dir=$dir/test

source $script_dir/lib/tofu-init-plan-apply.sh

# The test.sh script must use test_warning, test_error, and job_error
# variables and "continue" as done in tofu lib scripts rather than erroring
# out to allow for looping through dirs.
test_warning=""
test_error=""
echo "::group::$dir test"
source test.sh
echo "::endgroup::"
if [ -n "$test_warning" ]; then
echo "::warning::$test_warning"
fi
if [ -n "$test_error" ]; then
echo "::error::$test_error"
fi

source $script_dir/lib/tofu-destroy.sh
done

if [ "$job_error" == "true" ]; then
exit 1
fi
39 changes: 2 additions & 37 deletions scripts/tofu-plan
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# Run tofu plan across all services. Used in the tofu-plan and tofu-apply workflows.

repo_root="$(git rev-parse --show-toplevel)"
script_dir="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")"
job_error=false
temp_plan_out=$(mktemp)

Expand Down Expand Up @@ -41,43 +42,7 @@ for dir in $(ls "$repo_root/terraform/services"); do
;;
esac

echo "::group::$dir tofu"

if ! tofu init -reconfigure -backend-config="../../backends/${APP}-${ENV}.s3.tfbackend"; then
job_error=true
echo "::endgroup::"
echo "::error::Error in tofu init for $dir"
continue
fi

export TF_VAR_app="$APP"
export TF_VAR_env="$ENV"
tofu_warning=""
tofu_error=""
if tofu plan -detailed-exitcode -out "$temp_plan_out"; then
echo "No changes planned for $dir"
elif [ "$?" -eq "2" ]; then # Detailed exit code is 2, meaning changes are planned
tofu_warning="Changes planned for $dir"
else
job_error=true
tofu_error="Error in tofu plan for $dir"
fi

if [[ -n "$tofu_warning" && "$APPLY" == "true" ]]; then
echo "Applying plan for $dir"
if ! tofu apply "$temp_plan_out"; then
job_error=true
tofu_error="Error in tofu apply for $dir"
fi
fi
echo "::endgroup::"

if [ -n "$tofu_warning" ]; then
echo "::warning::$tofu_warning"
fi
if [ -n "$tofu_error" ]; then
echo "::error::$tofu_error"
fi
source $script_dir/lib/tofu-run.sh
done

if [ "$job_error" == "true" ]; then
Expand Down
5 changes: 3 additions & 2 deletions terraform/modules/cluster/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ No requirements.

| Name | Version |
|------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | 5.100.0 |
| <a name="provider_aws"></a> [aws](#provider\_aws) | n/a |

## Modules

Expand All @@ -43,13 +43,14 @@ No modules.
| Name | Type |
|------|------|
| [aws_ecs_cluster.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_cluster) | resource |
| [aws_service_discovery_http_namespace.cluster_service_connect_namespace](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/service_discovery_http_namespace) | resource |

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_cluster_name_override"></a> [cluster\_name\_override](#input\_cluster\_name\_override) | Name of the ecs cluster. | `string` | `null` | no |
| <a name="input_platform"></a> [platform](#input\_platform) | Object that describes standardized platform values. | `any` | n/a | yes |
| <a name="input_platform"></a> [platform](#input\_platform) | Object that describes standardized platform values. | <pre>object({<br/> app = string,<br/> env = string,<br/> kms_alias_primary = object({<br/> target_key_arn = string<br/> }),<br/> service = string,<br/> is_ephemeral_env = string<br/> })</pre> | n/a | yes |

## Outputs

Expand Down
20 changes: 20 additions & 0 deletions terraform/modules/cluster/main.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
locals {
name = var.cluster_name_override != null ? var.cluster_name_override : "${var.platform.app}-${var.platform.env}-${var.platform.service}"
}

resource "aws_service_discovery_http_namespace" "cluster_service_connect_namespace" {
name = local.name
description = "Service Connect namespace for ${local.name}"
}


resource "aws_ecs_cluster" "this" {
name = var.cluster_name_override != null ? var.cluster_name_override : "${var.platform.app}-${var.platform.env}-${var.platform.service}"

Expand All @@ -6,10 +16,20 @@ resource "aws_ecs_cluster" "this" {
value = var.platform.is_ephemeral_env ? "disabled" : "enabled"
}

service_connect_defaults {
namespace = aws_service_discovery_http_namespace.cluster_service_connect_namespace.arn
}

configuration {
managed_storage_configuration {
fargate_ephemeral_storage_kms_key_id = var.platform.kms_alias_primary.target_key_arn
kms_key_id = var.platform.kms_alias_primary.target_key_arn
}
}

depends_on = [aws_service_discovery_http_namespace.cluster_service_connect_namespace]
}




4 changes: 2 additions & 2 deletions terraform/modules/platform/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ variable "app" {
description = "The short name for the delivery team or ADO."
type = string
validation {
condition = contains(["ab2d", "bcda", "dpc"], var.app)
error_message = "Invalid short var.app (application). Must be one of ab2d, bcda, or dpc."
condition = contains(["ab2d", "bcda", "cdap", "dpc"], var.app)
error_message = "Invalid short var.app (application). Must be one of ab2d, bcda, cdap or dpc."
}
}

Expand Down
Loading