如何将加密的数据包项目值插入 Chef 食谱?
How do I insert an encrypted data bag item value into a Chef recipe?
我创建了一个加密的数据包值,我正试图将其加载到厨师食谱中。
knife data bag show foo bar --secret_file secret.key
Encrypted data bag detected, decrypting with provided secret.
id: bar
pass: p4ssw0rd
我试图让传递值作为变量加载到 bash 资源中,并在客户端的 /etc/chef 中设置 encrypted_data_bag_secret(因此没有秘密密钥显示,恢复到默认 /etc/chef 位置):
dbag = Chef::EncryptedDataBagItem.load("foo", "bar")
foo_pass = dbag["pass"]
我也尝试过使用食谱 DSL 而不是 Chef::EncryptedDataBadItem 方法:
dbag = data_bag_item('foo', 'bar')
foo_pass = dbag["pass"]
然后将其加载到 bash 资源中:
bash 'install_mysql' do
code <<-EOC
...
sudo mysqladmin -u root password {foo_pass}
...
EOC
end
关于这个过程我有几个问题。
i) 将 Chef::EncryptedDataBagItem.load 弃用并替换为 data_bag_item;我应该用一个代替另一个吗?
ii) 我是否使用正确的方法拉动 dbag["pass"];我如何从 foo (data bag) => bar (item?)
中获取 'pass' 值
iii) 要在 bash 资源中调用 foo_pass 变量,我只是将变量封装在花括号 {} 中,还是我在这里遗漏了什么?
iv) 有没有比我正在尝试的更好的方法?
我尝试添加以下内容以查看当 运行 主厨客户端时是否可以看到打印到屏幕上的变量值,但它没有显示任何文本或值:
puts "foo_pass equals 1:{foo_pass} 2:#{foo_pass}'
这个问题我苦苦思索了半天,希望能得到一些更有经验的回答如何处理。
- 是的,在大多数情况下更喜欢
data_bag_item
,它更正确。
- 是的,没错。
- 您需要
#{foo_pass}
,前导 #
。
我创建了一个加密的数据包值,我正试图将其加载到厨师食谱中。
knife data bag show foo bar --secret_file secret.key
Encrypted data bag detected, decrypting with provided secret.
id: bar
pass: p4ssw0rd
我试图让传递值作为变量加载到 bash 资源中,并在客户端的 /etc/chef 中设置 encrypted_data_bag_secret(因此没有秘密密钥显示,恢复到默认 /etc/chef 位置):
dbag = Chef::EncryptedDataBagItem.load("foo", "bar")
foo_pass = dbag["pass"]
我也尝试过使用食谱 DSL 而不是 Chef::EncryptedDataBadItem 方法:
dbag = data_bag_item('foo', 'bar')
foo_pass = dbag["pass"]
然后将其加载到 bash 资源中:
bash 'install_mysql' do
code <<-EOC
...
sudo mysqladmin -u root password {foo_pass}
...
EOC
end
关于这个过程我有几个问题。
i) 将 Chef::EncryptedDataBagItem.load 弃用并替换为 data_bag_item;我应该用一个代替另一个吗?
ii) 我是否使用正确的方法拉动 dbag["pass"];我如何从 foo (data bag) => bar (item?)
中获取 'pass' 值
iii) 要在 bash 资源中调用 foo_pass 变量,我只是将变量封装在花括号 {} 中,还是我在这里遗漏了什么?
iv) 有没有比我正在尝试的更好的方法?
我尝试添加以下内容以查看当 运行 主厨客户端时是否可以看到打印到屏幕上的变量值,但它没有显示任何文本或值:
puts "foo_pass equals 1:{foo_pass} 2:#{foo_pass}'
这个问题我苦苦思索了半天,希望能得到一些更有经验的回答如何处理。
- 是的,在大多数情况下更喜欢
data_bag_item
,它更正确。 - 是的,没错。
- 您需要
#{foo_pass}
,前导#
。