如何在Chef配方中提供条件,看它是否在测试厨房下运行?

时间:2016-07-10 04:41:10

标签: ruby chef test-kitchen

我在Chef中使用加密数据包,我想在Chef菜谱中添加一个条件,如下所示:

If (test kitchen) then
  encryptkey = data_bag_item("tokens", "encryptkey")

If ( not test kitchen ) then
  secret = Chef::EncryptedDataBagItem.load_secret("/etc/chef/encrypted_data_bag_secret")
  encryptkey = Chef::EncryptedDataBagItem.load("tokens", "encryptkey", secret)

我在data_bags_path中添加了encrypted_data_bag_secret_key_pathkitchen.yml,内容如下:

provisioner:
  name: chef_zero
  chef_omnibus_url: omni-url/chef/install.sh
  roles_path: 'test/integration/default/roles'
  data_bags_path: "test/integration/default/data_bags"
  encrypted_data_bag_secret_key_path: "test/integration/default/encrypted_data_bag_secret"

2 个答案:

答案 0 :(得分:2)

使用kitchen.yaml中的属性。

if node['kitchen'] == 'true'
    #something
else
   #else 
end

在你的食谱中,如果条件使用node ['chef-mode']的值。

{{1}}

答案 1 :(得分:0)

只需使用data_bag_item("tokens", "encryptkey")即可。它将自动为您解密。