11locals {
2+ # Datadog Firelens log configuration
3+ dd_firelens_log_configuration = var. dd_log_collection . enabled ? merge (
4+ {
5+ logDriver = " awsfirelens"
6+ options = merge (
7+ {
8+ provider = " ecs"
9+ Name = " datadog"
10+ Host = " http-intake.logs.datadoghq.com"
11+ TLS = " on"
12+ retry_limit = " 2"
13+ },
14+ var. dd_log_collection . log_driver_configuration . service_name != null ? { dd_service = var.dd_log_collection.log_driver_configuration.service_name } : {},
15+ var. dd_log_collection . log_driver_configuration . source_name != null ? { dd_source = var.dd_log_collection.log_driver_configuration.source_name } : {},
16+ var. dd_tags != null ? { dd_tags = var.dd_tags } : {},
17+ var. dd_api_key != null ? { apikey = var.dd_api_key } : {}
18+ )
19+ },
20+ var. dd_api_key_secret_arn != null ? {
21+ secretOptions = [
22+ {
23+ name = " apikey"
24+ valueFrom = var.dd_api_key_secret_arn
25+ }
26+ ]
27+ } : {}
28+ ) : null
29+
230 # Application container modifications
3- is_linux = var. runtime_platform == null || var. runtime_platform . operating_system_family == null || var. runtime_platform . operating_system_family == " LINUX"
31+ is_linux = var. runtime_platform == null || var. runtime_platform . operating_system_family == null || var. runtime_platform . operating_system_family == " LINUX"
432 is_apm_socket_mount = var. dd_apm . enabled && var. dd_apm . socket_enabled && local. is_linux
533 is_dsd_socket_mount = var. dd_dogstatsd . enabled && var. dd_dogstatsd . socket_enabled && local. is_linux
634 is_apm_dsd_volume = local. is_apm_socket_mount || local. is_dsd_socket_mount
@@ -34,6 +62,20 @@ locals {
3462 }
3563 ] : []
3664
65+ agent_dependency = var. dd_is_datadog_dependency_enabled && var. dd_health_check . command != null ? [
66+ {
67+ containerName = " datadog-agent"
68+ condition = " HEALTHY"
69+ }
70+ ] : []
71+
72+ log_router_dependency = var. dd_log_collection . is_log_router_dependency_enabled && var. dd_log_collection . log_router_health_check . command != null && local. dd_firelens_log_configuration != null ? [
73+ {
74+ containerName = " datadog-log-router"
75+ condition = " HEALTHY"
76+ }
77+ ] : []
78+
3779 modified_container_definitions = [
3880 for container in var . container_definitions : merge (
3981 container ,
@@ -50,7 +92,14 @@ locals {
5092 lookup (container, " mountPoints" , []),
5193 local. apm_dsd_mount
5294 )
53- }
95+ dependsOn = concat (
96+ lookup (container, " dependsOn" , []),
97+ local. agent_dependency ,
98+ local. log_router_dependency ,
99+ )
100+ },
101+ # Only override the log configuration if the Datadog firelens configuration exists
102+ local . dd_firelens_log_configuration != null ? { logConfiguration = local.dd_firelens_log_configuration } : {}
54103 )
55104 ]
56105
@@ -74,8 +123,9 @@ locals {
74123 { key = " DD_SERVICE" , value = var.dd_service },
75124 { key = " DD_ENV" , value = var.dd_env },
76125 { key = " DD_VERSION" , value = var.dd_version },
77- { key = " DD_DOGSTATSD_TAG_CARDINALITY" , value = var.dd_dogstatsd.dogstatsd_cardinality }
78- # TODO: clusterName, ddTags, etc.
126+ { key = " DD_DOGSTATSD_TAG_CARDINALITY" , value = var.dd_dogstatsd.dogstatsd_cardinality },
127+ { key = " DD_TAGS" , value = var.dd_tags },
128+ { key = " DD_CLUSTER_NAME" , value = var.dd_cluster_name }
79129 ] : { name = pair.key, value = pair.value } if pair. value != null
80130 ]
81131
@@ -97,28 +147,74 @@ locals {
97147 )
98148
99149 # Datadog Agent container definition
100- dd_agent_container = {
101- name = " datadog-agent"
102- image = " ${ var . dd_registry } :${ var . dd_image_version } "
103- environment = local.dd_agent_env
104- secrets = var.dd_api_key_secret_arn != null ? [
150+ dd_agent_container = [
151+ merge (
105152 {
106- name = " DD_API_KEY"
107- valueFrom = var.dd_api_key_secret_arn
153+ name = " datadog-agent"
154+ image = " ${ var . dd_registry } :${ var . dd_image_version } "
155+ essential = var.dd_essential
156+ environment = local.dd_agent_env
157+ secrets = var.dd_api_key_secret_arn != null ? [
158+ {
159+ name = " DD_API_KEY"
160+ valueFrom = var.dd_api_key_secret_arn
161+ }
162+ ] : []
163+ portMappings = [
164+ {
165+ containerPort = 8125
166+ hostPort = 8125
167+ protocol = " udp"
168+ },
169+ {
170+ containerPort = 8126
171+ hostPort = 8126
172+ protocol = " tcp"
173+ }
174+ ],
175+ mountPoints = local.apm_dsd_mount,
176+ logConfiguration = local.dd_firelens_log_configuration,
177+ dependsOn = var.dd_log_collection.is_log_router_dependency_enabled && local.dd_firelens_log_configuration != null ? local.log_router_dependency : [],
178+ },
179+ var. dd_health_check . command == null ? {} : {
180+ healthCheck = {
181+ command = var.dd_health_check.command
182+ interval = var.dd_health_check.interval
183+ timeout = var.dd_health_check.timeout
184+ retries = var.dd_health_check.retries
185+ startPeriod = var.dd_health_check.start_period
186+ }
108187 }
109- ] : []
110- portMappings = [
188+ )
189+ ]
190+
191+ # Datadog log router container definition
192+ dd_log_container = var. dd_log_collection . enabled ? [
193+ merge (
111194 {
112- containerPort = 8125
113- hostPort = 8125
114- protocol = " udp"
195+ name = " datadog-log-router"
196+ image = " ${ var . dd_log_collection . registry } :${ var . dd_log_collection . image_version } "
197+ essential = var.dd_log_collection.is_log_router_essential
198+ firelensConfiguration = {
199+ type = " fluentbit"
200+ options = {
201+ enable-ecs-log-metadata = " true"
202+ }
203+ }
204+ cpu = var.dd_log_collection.cpu
205+ memory_limit_mib = var.dd_log_collection.memory_limit_mib
206+ user = " 0"
115207 },
116- {
117- containerPort = 8126
118- hostPort = 8126
119- protocol = " tcp"
208+ var. dd_log_collection . log_router_health_check . command == null ? {} : {
209+ healthCheck = {
210+ command = var.dd_log_collection.log_router_health_check.command
211+ interval = var.dd_log_collection.log_router_health_check.interval
212+ timeout = var.dd_log_collection.log_router_health_check.timeout
213+ retries = var.dd_log_collection.log_router_health_check.retries
214+ startPeriod = var.dd_log_collection.log_router_health_check.start_period
215+ }
120216 }
121- ],
122- mountPoints = local.apm_dsd_mount
123- }
217+ )
218+ ] : []
219+
124220}
0 commit comments