首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform Helm图环境变量

Terraform Helm图环境变量
EN

Stack Overflow用户
提问于 2022-02-07 19:24:06
回答 2查看 918关注 0票数 0

我正试图通过terraform为我的Helm图表部署设置一个环境变量。目前,我的代码如下所示:

代码语言:javascript
复制
resource "helm_release" "datadog" {
  name       = "datadog"
  repository = "https://helm.datadoghq.com"
  chart      = "datadog"

  namespace        = "datadog"
  create_namespace = true

  # Default Configuration items
  set {
    name  = "datadog.apiKey"
    value = var.datadog_api_key
  }

  set {
    name  = "datadog.appKey"
    value = var.datadog_app_key
  }

  set {
    name  = "clusterAgent.enabled"
    value = true
  }

  set {
    name  = "targetSystem"
    value = "linux"
  }

  # Set Datadog Configuration Items

  # Event Collection
  set {
    name  = "agents.rbac.create"
    value = true
  }

  set {
    name  = "datadog.leaderElection"
    value = true
  }

  set {
    name  = "datadog.collectEvents"
    value = true
  }

  # Custom/External Metrics
  set {
    name  = "clusterAgent.metricsProvider.enabled"
    value = true
  }

  # APM Configuration
  set {
    name  = "datadog.apm.enabled"
    value = true
  }

  # Logs Configuration
  set {
    name  = "datadog.logs.enabled"
    value = true
  }

  set {
    name  = "datadog.logs.containerCollectAll"
    value = true
  }

  set {
    name  = "datadog.containerExcludeLogs"
    value = local.exclude_image_list
  }

  # Set logging verbosity, valid log levels are: trace, debug, info, warn, error, critical, off.  Default is info
  set {
    name  = "datadog.logLevel"
    value = "INFO"
  }

  # Process Collection Configuration
  set {
    name  = "datadog.processAgent.enabled"
    value = true
  }

  # Exclude Containers
  set {
    name  = "datadog.containerExclude"
    value = local.exclude_image_list
  }

  # Set Environment Variables
  # DD_LOGS_CONFIG_USE_HTTP is for DD AWS PrivateLink: https://docs.datadoghq.com/agent/guide/private-link/?tab=useast1
  set {
    name  = "env"
    value = "{DD_LOGS_CONFIG_USE_HTTP = true}"
  }
}

请注意,在底部,我是如何设置这个。我尝试将它作为一个字符串传递,但它不起作用。我也把它设置为一张地图,它也不起作用。当我将它设置为一个映射时,我会得到以下错误:

代码语言:javascript
复制
╷
│ Error: Incorrect attribute value type
│ 
│   on .terraform/modules/datadog/helm.tf line 104, in resource "helm_release" "datadog":
│  104:     value = {"DD_LOGS_CONFIG_USE_HTTP" = true}
│ 
│ Inappropriate value for attribute "value": string required.

这是我试图修改的舵图:

https://github.com/DataDog/helm-charts/tree/main/charts/datadog

EN

回答 2

Stack Overflow用户

发布于 2022-08-09 11:20:32

这条路适用于我:

代码语言:javascript
复制
values = [<<YAML
datadog:
  env:
    - name: DD_LOGS_CONFIG_USE_HTTP
      value: "true"
YAML
]
票数 0
EN

Stack Overflow用户

发布于 2022-08-16 21:31:35

实际上,环境的值应该是一个带有键(namevalue)的对象数组,terraform允许您在数组元素中定义键,因此可以分两个步骤:

  1. 为第一个元素设置键name的值
  2. 为第一个元素设置键value的值
代码语言:javascript
复制
resource "helm_release" "datadog" {
  name       = "datadog"
  repository = "https://helm.datadoghq.com"
  chart      = "datadog"

  namespace        = "datadog"
  create_namespace = true

  # Default Configuration items
  set {
    name  = "datadog.apiKey"
    value = var.datadog_api_key
  }

  set {
    name  = "datadog.appKey"
    value = var.datadog_app_key
  }

  set {
    name  = "clusterAgent.enabled"
    value = true
  }

  set {
    name  = "targetSystem"
    value = "linux"
  }

  # Set Datadog Configuration Items

  # Event Collection
  set {
    name  = "agents.rbac.create"
    value = true
  }

  set {
    name  = "datadog.leaderElection"
    value = true
  }

  set {
    name  = "datadog.collectEvents"
    value = true
  }

  # Custom/External Metrics
  set {
    name  = "clusterAgent.metricsProvider.enabled"
    value = true
  }

  # APM Configuration
  set {
    name  = "datadog.apm.enabled"
    value = true
  }

  # Logs Configuration
  set {
    name  = "datadog.logs.enabled"
    value = true
  }

  set {
    name  = "datadog.logs.containerCollectAll"
    value = true
  }

  set {
    name  = "datadog.containerExcludeLogs"
    value = local.exclude_image_list
  }

  # Set logging verbosity, valid log levels are: trace, debug, info, warn, error, critical, off.  Default is info
  set {
    name  = "datadog.logLevel"
    value = "INFO"
  }

  # Process Collection Configuration
  set {
    name  = "datadog.processAgent.enabled"
    value = true
  }

  # Exclude Containers
  set {
    name  = "datadog.containerExclude"
    value = local.exclude_image_list
  }

  # Set Environment Variables
  # DD_LOGS_CONFIG_USE_HTTP is for DD AWS PrivateLink: https://docs.datadoghq.com/agent/guide/private-link/?tab=useast1
  set {
    name  = "env[0].name"
    value = "DD_LOGS_CONFIG_USE_HTTP"
  }
  set {
    name  = "env[0].value"
    value = "true"
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71024249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档