Nomad 作业文件中的 base64encode 不是变量的编码值

base64encode in Nomad job file not encoding value of variable

我正在尝试将 base64encode 的结果存储在 env 块中,如下所示:

env {
  HOST_ID = "${base64encode("${NOMAD_ADDR_serviceA}")}"
}

这导致 HOST_ID 持有 base64 编码的字符串“${NOMAD_ADDR_serviceA}”,而不是我希望的 NOMAD_ADDR_serviceA 的值。例如。 HOST_ID = JHtOT01BRF9BRERSX3NlcnZpY2VBfQ==.

我也试过:

env {
  HOST_ID = base64encode("${NOMAD_ADDR_serviceA}")
}

...但这会生成相同的编码。

知道如何才能达到预期的结果吗?如有任何帮助,我们将不胜感激!

编辑:我也试过以下方法:

HOST_ID = "${base64encode(NOMAD_ADDR_serviceA)}"

但运气不好。

@apollo13 over on the Nomad Gitter figured out a way to delay the execution of base64encode for runtime interpolation using Nomad templates。他们建议使用类似的东西:

template {
    data        = "HOST_ID={{ env \"NOMAD_ADDR_ServiceA\" | base64Encode }}"
    env         = true
    destination = "secrets/env"
}

这完全符合预期!惊讶地看到 base64encode 没有等待变量可用。