首页 > 解决方案 > Nomad作业文件中的base64encode未编码变量的值

问题描述

我正在尝试将 a 的结果存储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)}"

但没有运气。

标签: terraformhclnomad

解决方案


@apollo13Nomad Gitter上找到了一种使用Nomad 模板base64encode延迟运行时插值执行的方法。他们建议使用类似的东西:

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

这完全符合预期!惊讶地发现,base64encode它不等待变量变得可用。


推荐阅读