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

Posted

技术标签:

【中文标题】Nomad作业文件中的base64encode未编码变量的值【英文标题】:base64encode in Nomad job file not encoding value of variable 【发布时间】:2021-12-09 14:59:02 【问题描述】:

我正在尝试将 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)"

但没有运气。

【问题讨论】:

【参考方案1】:

@apollo13 在Nomad Gitter 上找到了一种方法来延迟base64encode 的执行,以便使用Nomad templates 进行运行时插值。他们建议使用类似的东西:

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

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

【讨论】:

以上是关于Nomad作业文件中的base64encode未编码变量的值的主要内容,如果未能解决你的问题,请参考以下文章

JDK从1.8升级到9.0.1后sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用

base64_encode 字符串的 php 大小 - 文件

Base64_encoder行为中的安全性

奇怪的 Base64 编码/解码问题

java URLEncoder 和Base64.encode()

BASE64Encoder,BASE64Decoder加密后再解密不成功