【发布时间】: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