【问题标题】:Nomad job: interpolating within Docker argsNomad 工作:在 Docker args 中进行插值
【发布时间】:2023-02-08 01:20:45
【问题描述】:

我正在为 Prometheus 编写 Thanos sidecar 作业。我看过但无法弄清楚如何在配置文件中指定此参数,所以我的工作看起来像这样。这是 Terraform 的模板文件,因此如果您尝试引用 ${var},Terraform 会尝试将其评估为模板文件变量。

  task "thanos-sidecar" {
      driver = "docker"

      config {
        image = "quay.io/thanos/thanos:v0.30.2"
        args = [
          "sidecar",
          "--tsdb.path=/alloc/data/tsdb",
# XXX BUSTED
# variants using single or double curlies break the job. HALP.
#          "--prometheus.url=http://$NOMAD_ADDR_prometheus_ui",  # doesn't evaluate
          "--grpc-address=0.0.0.0:10901",
          "--http-address=0.0.0.0:10902",
          "--objstore.config-file=/local/thanos.yml"
        ]
      } # end config

      template {
        change_mode = "restart"
        destination = "local/thanos.yml"

        data = <<EOH
#{{ env "NOMAD_ADDR_prometheus_ui" }} # This evaluates as expected!
type: S3
config:
  bucket: metrics
{{ with service "olly-${olly_name}.ssnc-olly-minio-s3" }}
{{ with index . 0 }}
  endpoint: {{ .Address }}:{{ .Port }} # {{ .Node }}
{{ end }}{{ end }}
  signature_version2: false
  access_key: minioadmin
  secret_key: minioadmin
EOH
      } # end template


      resources {
        memory = 1024
      } # end resources
    } # end task

我尝试了多种不同的语法选项。我几乎要使用 Terraform 询问 Consul 工作在哪里,并传入要在模板文件中评估的地址。由于一些原因,这不太理想,其中最重要的是作业可能会重新安排,但 Terraform 可能不知道这一点,因此地址可能会更改而无需在配置文件中重新制定。

我也看过使用模板序列,但没有骰子。

【问题讨论】:

    标签: hcl terraform-template-file nomad consul-template


    【解决方案1】:

    而且...解决方案很简单。使用格式 $${ NOMAD_ADDR_prometheus_ui } - 注意双美元符号,这样 Terraform 的 templatefile() 就不会在第一阶段解释它。

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 1970-01-01
      • 2021-10-20
      • 2021-04-06
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      相关资源
      最近更新 更多