我想使用 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 版本。环境也是如此。
换句话说,无法从角色或环境中加载数据包(加密或其他)。您需要将这种逻辑放入食谱中。