Chef:从 JSON 角色中的加密数据包加载属性

Chef:从 JSON 角色中的加密数据包加载属性

我想使用 postfix cookbook 来做 chef。sasl 密码应该位于属性中。因此通常你会这样做:

"default_attributes": {
  "postfix": {
    "sasl": {
      "smtp_sasl_passwd": "somepassword"
    }
  }
}

问题是:我不想将密码以纯文本形式保存在存储库中。因此,我将它放在加密数据包中。现在我想访问它。可以使用以下命令完成此操作:

Chef::EncryptedDataBagItem.load("passwords", "postfix")['password']

问题:这只适用于 .rb 文件,但我的角色在 json 中;我所有的角色都在 json 中!我不想仅仅为了这个目的而改变它。有人知道这里该怎么做吗?非常感谢您的帮助。

答案1

将角色转换为 Ruby DSL 不会有帮助 - 它们在上传到 Chef 服务器之前会转换为 JSON,并且 chef-client 会加载 JSON 版本。环境也是如此。

换句话说,无法从角色或环境中加载数据包(加密或其他)。您需要将这种逻辑放入食谱中。

相关内容