Skip to content

Commit 27af0c0

Browse files
committed
Terraform CI base
1 parent 3716d2d commit 27af0c0

File tree

8 files changed

+97
-12
lines changed

8 files changed

+97
-12
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: Check Terraform Docs
2+
3+
permissions:
4+
contents: read
5+
6+
on:
7+
pull_request:
8+
paths:
9+
- "modules/ecs_fargate/**"
10+
- ".github/workflows/terraform-docs-check.yaml"
11+
workflow_dispatch:
12+
13+
jobs:
14+
terraform-docs:
15+
name: Check terraform-docs for ecs_fargate
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
20+
21+
- name: Set up Go
22+
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
23+
with:
24+
go-version: "1.23"
25+
26+
- name: Install terraform-docs
27+
run: |
28+
VERSION="v0.19.0"
29+
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
30+
ARCH=$(uname -m)
31+
URL="https://github.com/terraform-docs/terraform-docs/releases/download/${VERSION}/terraform-docs-${VERSION}-${OS}-${ARCH}.tar.gz"
32+
echo "Downloading terraform-docs from $URL"
33+
curl -sSLo terraform-docs.tar.gz "$URL"
34+
tar -xzf terraform-docs.tar.gz terraform-docs
35+
sudo mv terraform-docs /usr/local/bin/
36+
37+
- name: Setup Terraform
38+
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2 v3
39+
with:
40+
terraform_version: 1.5.0
41+
42+
- name: Terraform Init
43+
working-directory: modules/ecs_fargate
44+
run: terraform init -backend=false
45+
46+
- name: Generate docs and check for drift
47+
working-directory: modules/ecs_fargate
48+
run: |
49+
mkdir -p tmp
50+
cp README.md /tmp/README.md.bak
51+
terraform-docs . --config .terraform-docs.yml
52+
if ! diff README.md /tmp/README.md.bak > /dev/null; then
53+
echo "::error::Documentation is out of date. Please run 'make docs' in modules/ecs_fargate and commit the changes."
54+
echo "Diff:"
55+
diff README.md /tmp/README.md.bak || true
56+
exit 1
57+
fi
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Terraform Format Check
2+
3+
permissions:
4+
contents: read
5+
6+
on:
7+
pull_request:
8+
workflow_dispatch:
9+
10+
jobs:
11+
terraform-fmt:
12+
name: Check Terraform Formatting
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
18+
19+
- name: Setup Terraform
20+
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2 v3
21+
with:
22+
terraform_version: 1.5.0
23+
24+
- name: Run terraform fmt check
25+
run: terraform fmt -recursive -check -diff .

makefile renamed to Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
fmt:
22
terraform fmt -recursive .
33
license:
4-
dd-license-attribution https://github.com/datadog/terraform-aws-ecs-datadog/ --no-gh-auth > LICENSE-3rdparty.csv
4+
dd-license-attribution https://github.com/datadog/terraform-aws-ecs-datadog/ --no-gh-auth > LICENSE-3rdparty.csv
5+
test:
6+
go test ./tests

modules/ecs_fargate/.terraform-docs.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,9 @@ settings:
1313
required: true
1414
sensitive: true
1515
type: true
16+
sections:
17+
hide:
18+
# Don't include the version of AWS provider in the docs.
19+
# Having the minimum version of the provider in the requirements
20+
# is sufficient. This causes issues with generating docs in CI.
21+
- providers

modules/ecs_fargate/README.md

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,6 @@ All of the input variables prefixed with `dd` are related to Datadog configurati
192192
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.5.0 |
193193
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.77.0 |
194194

195-
## Providers
196-
197-
| Name | Version |
198-
|------|---------|
199-
| <a name="provider_aws"></a> [aws](#provider\_aws) | 5.90.1 |
200-
201195
## Modules
202196

203197
No modules.
@@ -229,7 +223,7 @@ No modules.
229223
| <a name="input_cpu"></a> [cpu](#input\_cpu) | Number of cpu units used by the task. If the `requires_compatibilities` is `FARGATE` this field is required | `number` | `256` | no |
230224
| <a name="input_dd_api_key"></a> [dd\_api\_key](#input\_dd\_api\_key) | Datadog API Key | `string` | `null` | no |
231225
| <a name="input_dd_api_key_secret"></a> [dd\_api\_key\_secret](#input\_dd\_api\_key\_secret) | Datadog API Key Secret ARN | <pre>object({<br/> arn = string<br/> })</pre> | `null` | no |
232-
| <a name="input_dd_apm"></a> [dd\_apm](#input\_dd\_apm) | Configuration for Datadog APM | <pre>object({<br/> enabled = optional(bool, true)<br/> socket_enabled = optional(bool, true)<br/> profiling = optional(bool, false)<br/> trace_inferred_proxy_services = optional(bool, false)<br/> })</pre> | <pre>{<br/> "enabled": true,<br/> "socket_enabled": true,<br/> "profiling": false,<br/> "trace_inferred_proxy_services": false<br/>}</pre> | no |
226+
| <a name="input_dd_apm"></a> [dd\_apm](#input\_dd\_apm) | Configuration for Datadog APM | <pre>object({<br/> enabled = optional(bool, true)<br/> socket_enabled = optional(bool, true)<br/> profiling = optional(bool, false)<br/> trace_inferred_proxy_services = optional(bool, false)<br/> })</pre> | <pre>{<br/> "enabled": true,<br/> "profiling": false,<br/> "socket_enabled": true,<br/> "trace_inferred_proxy_services": false<br/>}</pre> | no |
233227
| <a name="input_dd_checks_cardinality"></a> [dd\_checks\_cardinality](#input\_dd\_checks\_cardinality) | Datadog Agent checks cardinality | `string` | `null` | no |
234228
| <a name="input_dd_cluster_name"></a> [dd\_cluster\_name](#input\_dd\_cluster\_name) | Datadog cluster name | `string` | `null` | no |
235229
| <a name="input_dd_cpu"></a> [dd\_cpu](#input\_dd\_cpu) | Datadog Agent container CPU units | `number` | `null` | no |
@@ -241,7 +235,7 @@ No modules.
241235
| <a name="input_dd_health_check"></a> [dd\_health\_check](#input\_dd\_health\_check) | Datadog Agent health check configuration | <pre>object({<br/> command = optional(list(string))<br/> interval = optional(number)<br/> retries = optional(number)<br/> start_period = optional(number)<br/> timeout = optional(number)<br/> })</pre> | <pre>{<br/> "command": [<br/> "CMD-SHELL",<br/> "/probe.sh"<br/> ],<br/> "interval": 15,<br/> "retries": 3,<br/> "start_period": 60,<br/> "timeout": 5<br/>}</pre> | no |
242236
| <a name="input_dd_image_version"></a> [dd\_image\_version](#input\_dd\_image\_version) | Datadog Agent image version | `string` | `"latest"` | no |
243237
| <a name="input_dd_is_datadog_dependency_enabled"></a> [dd\_is\_datadog\_dependency\_enabled](#input\_dd\_is\_datadog\_dependency\_enabled) | Whether the Datadog Agent container is a dependency for other containers | `bool` | `false` | no |
244-
| <a name="input_dd_log_collection"></a> [dd\_log\_collection](#input\_dd\_log\_collection) | Configuration for Datadog Log Collection | <pre>object({<br/> enabled = optional(bool, false)<br/> fluentbit_config = optional(object({<br/> registry = optional(string, "public.ecr.aws/aws-observability/aws-for-fluent-bit")<br/> image_version = optional(string, "stable")<br/> cpu = optional(number)<br/> memory_limit_mib = optional(number)<br/> is_log_router_essential = optional(bool, false)<br/> is_log_router_dependency_enabled = optional(bool, false)<br/> log_router_health_check = optional(object({<br/> command = optional(list(string))<br/> interval = optional(number)<br/> retries = optional(number)<br/> start_period = optional(number)<br/> timeout = optional(number)<br/> }),<br/> {<br/> command = ["CMD-SHELL", "exit 0"]<br/> interval = 5<br/> retries = 3<br/> start_period = 15<br/> timeout = 5<br/> }<br/> )<br/> log_driver_configuration = optional(object({<br/> host_endpoint = optional(string, "http-intake.logs.datadoghq.com")<br/> tls = optional(bool)<br/> compress = optional(string)<br/> service_name = optional(string)<br/> source_name = optional(string)<br/> message_key = optional(string)<br/> }),<br/> {<br/> host_endpoint = "http-intake.logs.datadoghq.com"<br/> }<br/> )<br/> }),<br/> {<br/> fluentbit_config = {<br/> registry = "public.ecr.aws/aws-observability/aws-for-fluent-bit"<br/> image_version = "stable"<br/> log_driver_configuration = {<br/> host_endpoint = "http-intake.logs.datadoghq.com"<br/> }<br/> }<br/> }<br/> )<br/> })</pre> | <pre>{<br/> "enabled": false,<br/> "fluentbit_config": {<br/> "is_log_router_essential": false,<br/> "log_driver_configuration": {<br/> "host_endpoint": "http-intake.logs.datadoghq.com"<br/> }<br/> }<br/>}</pre> | no |
238+
| <a name="input_dd_log_collection"></a> [dd\_log\_collection](#input\_dd\_log\_collection) | Configuration for Datadog Log Collection | <pre>object({<br/> enabled = optional(bool, false)<br/> fluentbit_config = optional(object({<br/> registry = optional(string, "public.ecr.aws/aws-observability/aws-for-fluent-bit")<br/> image_version = optional(string, "stable")<br/> cpu = optional(number)<br/> memory_limit_mib = optional(number)<br/> is_log_router_essential = optional(bool, false)<br/> is_log_router_dependency_enabled = optional(bool, false)<br/> log_router_health_check = optional(object({<br/> command = optional(list(string))<br/> interval = optional(number)<br/> retries = optional(number)<br/> start_period = optional(number)<br/> timeout = optional(number)<br/> }),<br/> {<br/> command = ["CMD-SHELL", "exit 0"]<br/> interval = 5<br/> retries = 3<br/> start_period = 15<br/> timeout = 5<br/> }<br/> )<br/> firelens_options = optional(object({<br/> config_file_type = optional(string)<br/> config_file_value = optional(string)<br/> }))<br/> log_driver_configuration = optional(object({<br/> host_endpoint = optional(string, "http-intake.logs.datadoghq.com")<br/> tls = optional(bool)<br/> compress = optional(string)<br/> service_name = optional(string)<br/> source_name = optional(string)<br/> message_key = optional(string)<br/> }),<br/> {<br/> host_endpoint = "http-intake.logs.datadoghq.com"<br/> }<br/> )<br/> }),<br/> {<br/> fluentbit_config = {<br/> registry = "public.ecr.aws/aws-observability/aws-for-fluent-bit"<br/> image_version = "stable"<br/> log_driver_configuration = {<br/> host_endpoint = "http-intake.logs.datadoghq.com"<br/> }<br/> }<br/> }<br/> )<br/> })</pre> | <pre>{<br/> "enabled": false,<br/> "fluentbit_config": {<br/> "is_log_router_essential": false,<br/> "log_driver_configuration": {<br/> "host_endpoint": "http-intake.logs.datadoghq.com"<br/> }<br/> }<br/>}</pre> | no |
245239
| <a name="input_dd_memory_limit_mib"></a> [dd\_memory\_limit\_mib](#input\_dd\_memory\_limit\_mib) | Datadog Agent container memory limit in MiB | `number` | `null` | no |
246240
| <a name="input_dd_registry"></a> [dd\_registry](#input\_dd\_registry) | Datadog Agent image registry | `string` | `"public.ecr.aws/datadog/agent"` | no |
247241
| <a name="input_dd_service"></a> [dd\_service](#input\_dd\_service) | The task service name. Used for tagging (UST) | `string` | `null` | no |

modules/ecs_fargate/datadog.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ locals {
1212
install_info_tool_version = "terraform-aws-ecs-datadog"
1313
install_info_installer_version = local.version
1414

15+
# AWS Resource Tags
1516
tags = {
1617
dd_ecs_terraform_module = local.version
1718
}
@@ -351,7 +352,7 @@ locals {
351352
enable-ecs-log-metadata = "true"
352353
},
353354
try(var.dd_log_collection.fluentbit_config.firelens_options.config_file_type != null, false) ? { config-file-type = var.dd_log_collection.fluentbit_config.firelens_options.config_file_type } : {},
354-
try(var.dd_log_collection.fluentbit_config.firelens_options.config_file_value != null, false) ? { config-file-value = var.dd_log_collection.fluentbit_config.firelens_options.config_file_value } : {}
355+
try(var.dd_log_collection.fluentbit_config.firelens_options.config_file_value != null, false) ? { config-file-value = var.dd_log_collection.fluentbit_config.firelens_options.config_file_value } : {}
355356
)
356357
}
357358
cpu = var.dd_log_collection.fluentbit_config.cpu

modules/ecs_fargate/variables.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ variable "dd_log_collection" {
207207
}
208208
)
209209
firelens_options = optional(object({
210-
config_file_type = optional(string)
210+
config_file_type = optional(string)
211211
config_file_value = optional(string)
212212
}))
213213
log_driver_configuration = optional(object({

smoke_tests/ecs_fargate/logging-only.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ module "dd_task_logging_only" {
2828
fluentbit_config = {
2929
is_log_router_dependency_enabled = true,
3030
firelens_options = {
31-
config_file_type = "file"
31+
config_file_type = "file"
3232
config_file_value = "file:///fluent-bit/etc/fluent-bit.conf"
3333
}
3434
}

0 commit comments

Comments
 (0)