base64encode在Nomad作业文件中没有编码变量的值



我试图将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在Nomad Gitter上找到了一种方法来延迟base64encode的执行,使用Nomad模板进行运行时插值。他们建议使用如下格式:

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

完全按照预期工作!很惊讶地看到base64encode没有等待变量变为可用

最新更新