Как обеспечить условие в рецепте Шеф-повара, чтобы видеть, работает ли оно под тестовой кухней?
Я использую зашифрованные пакеты данных в 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_path
в kitchen.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 ответа
Используйте атрибуты на вашей кухне.
suites:
- name: default
data_bags_path: 'databags'
run_list:
- recipe[x::y]
attributes: {'kitchen' : 'true' }
Внутри вашего рецепта поместите условие if, используя значение node['chef-mode'].
if node['kitchen'] == 'true'
#something
else
#else
end
Просто используйте data_bag_item("tokens", "encryptkey")
для обоих. Он позаботится о расшифровке для вас автоматически.