terraform - 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)}"
但没有运气。
解决方案
@apollo13在Nomad Gitter上找到了一种使用Nomad 模板base64encode
延迟运行时插值执行的方法。他们建议使用类似的东西:
template {
data = "HOST_ID={{ env \"NOMAD_ADDR_ServiceA\" | base64Encode }}"
env = true
destination = "secrets/env"
}
这完全符合预期!惊讶地发现,base64encode
它不等待变量变得可用。
推荐阅读
- java - AsyncHttpClient 创建了太多 AsyncHttpClient-timer 线程
- ios - 如何在一个版本中使用 gitflow
- acumatica - 无法将所有 SOLine 项目创建到装运屏幕(SOShipLine-手动我们将非库存项目带到装运屏幕)
- python - 为没有分隔符和不同大小值数量的熊猫打开 .txt
- c++ - 如何使用 qopenglwidget 中的线将缓冲区中的一些顶点渲染为点,其余的顶点?
- kubernetes - 是否可以在 c# 中为 Kubernetes 对象创建自定义字段或子字段
- c# - 如何在 sns 短信中创建正确的换行符?
- javascript - DateTimePicker 验证提交操作
- c# - 后面代码中的 ComboBox SelectedValuePath 问题
- git - GIT - 从上次拉取提交消息和差异