【发布时间】:2016-10-04 09:37:06
【问题描述】:
我不清楚如何通过 Chef 以可靠且可预测的方式最好地管理机密。
我尝试将所有秘密逻辑放在一个单独的食谱中,然后依赖于它为其管理秘密的所有食谱。
这样 - 我想 - 可以在一个地方以一致的方式处理秘密。另一个好处是我不必更改现有的食谱。
这本秘密食谱正在从加密的数据包中获取秘密并使用它来设置密码/秘密属性。为了防止将机密上传到 Chef 服务器,我将所有不想上传的属性都列入了黑名单。
对于某些食谱而言,这具有预期的效果,但对于其他食谱而言,结果变得非常不可预测。到目前为止,我现在确信这不是解决问题的方法。推荐的方法是什么?我不想更改现有的食谱。
例如,如果有类似的食谱
execute 'change first install root password' do
# Add sensitive true when foodcritic #233 fixed
command '/usr/bin/mysqladmin -u root password \'' + \
node['mariadb']['server_root_password'] + '\''
action :nothing
not_if { node['mariadb']['server_root_password_2'].empty? }
end
将属性['mariadb']['server_root_password'] 转为机密并从加密数据包中检索其值的最佳方法是什么?我不想更改食谱,也不想将密码上传到服务器。
更新
我认为这些问题是由于 blacklist_node_attrs 中的错误导致在 Chef 运行期间列入黑名单的属性不可用。
但是,在 Chef 中,与秘密相结合的整个属性方法似乎在很大程度上是未开发的。这是惊人的。
当前状态是,如果您想管理机密,则必须更改现有的食谱。如果您在属性文件和配方文件中尝试食谱属性,您会发现结果是随机的。在某些情况下它会起作用,在其他情况下则不会。
【问题讨论】:
标签: chef-infra