|
1 | 1 | locals { |
2 | 2 | enabled = module.this.enabled |
| 3 | + |
| 4 | + tags = module.this.tags |
| 5 | + |
| 6 | + datadog_api_key = module.datadog_configuration.datadog_api_key |
| 7 | + datadog_app_key = module.datadog_configuration.datadog_app_key |
| 8 | + datadog_site = module.datadog_configuration.datadog_site |
| 9 | + |
| 10 | + # combine context tags with passed in datadog_tags |
| 11 | + # skip name since that won't be relevant for each metric |
| 12 | + datadog_tags = toset(distinct(concat([ |
| 13 | + for k, v in module.this.tags : "${lower(k)}:${v}" if lower(k) != "name" |
| 14 | + ], tolist(var.datadog_tags)))) |
| 15 | + |
| 16 | + cluster_checks_enabled = local.enabled && var.cluster_checks_enabled |
| 17 | + |
| 18 | + context_tags = { |
| 19 | + for k, v in module.this.tags : |
| 20 | + lower(k) => v |
| 21 | + } |
| 22 | + |
| 23 | + deep_map_merge = local.cluster_checks_enabled ? module.datadog_cluster_check_yaml_config[0].map_configs : {} |
| 24 | + datadog_cluster_checks = { |
| 25 | + for k, v in local.deep_map_merge : |
| 26 | + k => merge(v, { |
| 27 | + instances = [ |
| 28 | + for key, val in v.instances : |
| 29 | + merge(val, { |
| 30 | + tags = [ |
| 31 | + for tag, tag_value in local.context_tags : |
| 32 | + format("%s:%s", tag, tag_value) |
| 33 | + if contains(var.datadog_cluster_check_auto_added_tags, tag) |
| 34 | + ] |
| 35 | + }) |
| 36 | + ] |
| 37 | + }) |
| 38 | + } |
| 39 | + set_datadog_cluster_checks = [ |
| 40 | + for cluster_check_key, cluster_check_value in local.datadog_cluster_checks : { |
| 41 | + # Since we are using json pathing to set deep yaml values, and the key we want to set is `something.yaml` |
| 42 | + # we need to escape the key of the cluster check. |
| 43 | + name = format("clusterAgent.confd.%s", replace(cluster_check_key, ".", "\\.")) |
| 44 | + type = "auto" |
| 45 | + value = yamlencode(cluster_check_value) |
| 46 | + } |
| 47 | + ] |
3 | 48 | } |
4 | 49 |
|
| 50 | +module "datadog_configuration" { |
| 51 | + source = "../../datadog-configuration/modules/datadog_keys" |
| 52 | + context = module.this.context |
| 53 | +} |
5 | 54 |
|
| 55 | +module "datadog_cluster_check_yaml_config" { |
| 56 | + count = local.cluster_checks_enabled ? 1 : 0 |
6 | 57 |
|
| 58 | + source = "cloudposse/config/yaml" |
| 59 | + version = "1.0.2" |
7 | 60 |
|
| 61 | + map_config_local_base_path = path.module |
| 62 | + map_config_paths = var.datadog_cluster_check_config_paths |
8 | 63 |
|
| 64 | + append_list_enabled = true |
| 65 | + |
| 66 | + parameters = merge( |
| 67 | + var.datadog_cluster_check_config_parameters, |
| 68 | + local.context_tags |
| 69 | + ) |
| 70 | + |
| 71 | + context = module.this.context |
| 72 | +} |
| 73 | + |
| 74 | +module "values_merge" { |
| 75 | + source = "cloudposse/config/yaml//modules/deepmerge" |
| 76 | + version = "1.0.2" |
| 77 | + |
| 78 | + # Merge in order: datadog values, var.values |
| 79 | + maps = [ |
| 80 | + yamldecode( |
| 81 | + file("${path.module}/values.yaml") |
| 82 | + ), |
| 83 | + var.values, |
| 84 | + ] |
| 85 | +} |
| 86 | + |
| 87 | + |
| 88 | +module "datadog_agent" { |
| 89 | + source = "cloudposse/helm-release/aws" |
| 90 | + version = "0.10.0" |
| 91 | + |
| 92 | + name = module.this.name |
| 93 | + chart = var.chart |
| 94 | + description = var.description |
| 95 | + repository = var.repository |
| 96 | + chart_version = var.chart_version |
| 97 | + |
| 98 | + kubernetes_namespace = var.kubernetes_namespace |
| 99 | + create_namespace_with_kubernetes = var.create_namespace |
| 100 | + |
| 101 | + verify = var.verify |
| 102 | + wait = var.wait |
| 103 | + atomic = var.atomic |
| 104 | + cleanup_on_fail = var.cleanup_on_fail |
| 105 | + timeout = var.timeout |
| 106 | + |
| 107 | + eks_cluster_oidc_issuer_url = module.eks.outputs.eks_cluster_identity_oidc_issuer |
| 108 | + |
| 109 | + values = [ |
| 110 | + yamlencode(module.values_merge.merged) |
| 111 | + ] |
| 112 | + |
| 113 | + set_sensitive = [ |
| 114 | + { |
| 115 | + name = "datadog.apiKey" |
| 116 | + type = "string" |
| 117 | + value = local.datadog_api_key |
| 118 | + }, |
| 119 | + { |
| 120 | + name = "datadog.appKey" |
| 121 | + type = "string" |
| 122 | + value = local.datadog_app_key |
| 123 | + }, |
| 124 | + { |
| 125 | + name = "datadog.site" |
| 126 | + type = "string" |
| 127 | + value = local.datadog_site |
| 128 | + } |
| 129 | + ] |
| 130 | + |
| 131 | + set = concat([ |
| 132 | + { |
| 133 | + name = "datadog.tags" |
| 134 | + type = "auto" |
| 135 | + value = yamlencode(local.datadog_tags) |
| 136 | + }, |
| 137 | + { |
| 138 | + name = "datadog.clusterName" |
| 139 | + type = "string" |
| 140 | + value = module.eks.outputs.eks_cluster_id |
| 141 | + }, |
| 142 | + ], local.set_datadog_cluster_checks) |
| 143 | + |
| 144 | + iam_role_enabled = false |
| 145 | + |
| 146 | + context = module.this.context |
| 147 | +} |
0 commit comments