Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
57 changes: 57 additions & 0 deletions .github/workflows/terraform-docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Check Terraform Docs

permissions:
contents: read

on:
pull_request:
paths:
- "modules/ecs_fargate/**"
- ".github/workflows/terraform-docs-check.yaml"
workflow_dispatch:

jobs:
terraform-docs:
name: Check terraform-docs for ecs_fargate
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Set up Go
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
with:
go-version: "1.23"

- name: Install terraform-docs
run: |
VERSION="v0.19.0"
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; fi
URL="https://github.com/terraform-docs/terraform-docs/releases/download/${VERSION}/terraform-docs-${VERSION}-${OS}-${ARCH}.tar.gz"
echo "Downloading terraform-docs from $URL"
curl -sSLo terraform-docs.tar.gz "$URL"
tar -xzf terraform-docs.tar.gz terraform-docs
sudo mv terraform-docs /usr/local/bin/

- name: Setup Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2 v3
with:
terraform_version: 1.5.0

- name: Terraform Init
working-directory: modules/ecs_fargate
run: terraform init -backend=false

- name: Generate docs and check for drift
working-directory: modules/ecs_fargate
run: |
cp README.md /tmp/README.md.bak
terraform-docs . --config .terraform-docs.yml
if ! diff README.md /tmp/README.md.bak > /dev/null; then
echo "::error::Documentation is out of date. Please run 'make docs' in modules/ecs_fargate and commit the changes."
echo "Diff:"
diff README.md /tmp/README.md.bak || true
exit 1
fi
25 changes: 25 additions & 0 deletions .github/workflows/terraform-fmt.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Terraform Format Check

permissions:
contents: read

on:
pull_request:
workflow_dispatch:

jobs:
terraform-fmt:
name: Check Terraform Formatting
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Setup Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2 v3
with:
terraform_version: 1.5.0

- name: Run terraform fmt check
run: terraform fmt -recursive -check -diff .
4 changes: 3 additions & 1 deletion makefile → Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
fmt:
terraform fmt -recursive .
license:
dd-license-attribution https://github.com/datadog/terraform-aws-ecs-datadog/ --no-gh-auth > LICENSE-3rdparty.csv
dd-license-attribution https://github.com/datadog/terraform-aws-ecs-datadog/ --no-gh-auth > LICENSE-3rdparty.csv
test:
go test ./tests
6 changes: 6 additions & 0 deletions modules/ecs_fargate/.terraform-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,9 @@ settings:
required: true
sensitive: true
type: true
sections:
hide:
# Don't include the version of AWS provider in the docs.
# Having the minimum version of the provider in the requirements
# is sufficient. This causes issues with generating docs in CI.
- providers
2 changes: 1 addition & 1 deletion modules/ecs_fargate/Makefile
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
docs:
terraform-docs . --config .terraform-docs.yml
terraform-docs . --config .terraform-docs.yml
10 changes: 2 additions & 8 deletions modules/ecs_fargate/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,12 +192,6 @@ All of the input variables prefixed with `dd` are related to Datadog configurati
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.5.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.77.0 |

## Providers

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

## Modules

No modules.
Expand Down Expand Up @@ -229,7 +223,7 @@ No modules.
| <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 |
| <a name="input_dd_api_key"></a> [dd\_api\_key](#input\_dd\_api\_key) | Datadog API Key | `string` | `null` | no |
| <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 |
| <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 |
| <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 |
| <a name="input_dd_checks_cardinality"></a> [dd\_checks\_cardinality](#input\_dd\_checks\_cardinality) | Datadog Agent checks cardinality | `string` | `null` | no |
| <a name="input_dd_cluster_name"></a> [dd\_cluster\_name](#input\_dd\_cluster\_name) | Datadog cluster name | `string` | `null` | no |
| <a name="input_dd_cpu"></a> [dd\_cpu](#input\_dd\_cpu) | Datadog Agent container CPU units | `number` | `null` | no |
Expand All @@ -241,7 +235,7 @@ No modules.
| <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 |
| <a name="input_dd_image_version"></a> [dd\_image\_version](#input\_dd\_image\_version) | Datadog Agent image version | `string` | `"latest"` | no |
| <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 |
| <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 |
| <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 |
| <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 |
| <a name="input_dd_registry"></a> [dd\_registry](#input\_dd\_registry) | Datadog Agent image registry | `string` | `"public.ecr.aws/datadog/agent"` | no |
| <a name="input_dd_service"></a> [dd\_service](#input\_dd\_service) | The task service name. Used for tagging (UST) | `string` | `null` | no |
Expand Down
3 changes: 2 additions & 1 deletion modules/ecs_fargate/datadog.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ locals {
install_info_tool_version = "terraform-aws-ecs-datadog"
install_info_installer_version = local.version

# AWS Resource Tags
tags = {
dd_ecs_terraform_module = local.version
}
Expand Down Expand Up @@ -351,7 +352,7 @@ locals {
enable-ecs-log-metadata = "true"
},
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 } : {},
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 } : {}
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 } : {}
)
}
cpu = var.dd_log_collection.fluentbit_config.cpu
Expand Down
2 changes: 1 addition & 1 deletion modules/ecs_fargate/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ variable "dd_log_collection" {
}
)
firelens_options = optional(object({
config_file_type = optional(string)
config_file_type = optional(string)
config_file_value = optional(string)
}))
log_driver_configuration = optional(object({
Expand Down
2 changes: 1 addition & 1 deletion smoke_tests/ecs_fargate/logging-only.tf
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ module "dd_task_logging_only" {
fluentbit_config = {
is_log_router_dependency_enabled = true,
firelens_options = {
config_file_type = "file"
config_file_type = "file"
config_file_value = "file:///fluent-bit/etc/fluent-bit.conf"
}
}
Expand Down