Как обеспечить условие в рецепте Шеф-повара, чтобы видеть, работает ли оно под тестовой кухней?

Я использую зашифрованные пакеты данных в 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") для обоих. Он позаботится о расшифровке для вас автоматически.

Другие вопросы по тегам