2016-07-10 1 views
0

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

ответ

0

Просто использование data_bag_item("tokens", "encryptkey") для обоих. Он автоматически позаботится о расшифровке.

+0

Но если это не кухонный тест, а рецепт работает непосредственно на узле сервера, то как узел узнает о секретном ключе шифрования. Помните, что в случае теста на кухню я указываю ключ шифрования как 'encrypted_data_bag_secret_key_path:" test/integration/default/encrypted_data_bag_secret "' in 'kitchen.yml' – meallhour

+1

Путь к секрету настроен в вашем 'client.rb', но то, что вы есть ли по умолчанию, я уверен. Шеф-повар ручками загружает секрет для вас внутренне. – coderanger

+0

Я получаю эту ошибку 'ОШИБКА: никакой секрет не указан и не секрет, найденный в/etc/chef/encrypted_data_bag_secret', когда я использую' data_bag_item («tokens», «encryptkey») ' – meallhour

1

Используйте атрибуты на вашей кухне.yaml.

suites: 
    - name: default 
    data_bags_path: 'databags' 
    run_list: 
     - recipe[x::y] 
    attributes: {'kitchen' : 'true' } 

Внутри вашего рецепта положите, если условие использует значение узла ['chef-mode'].

if node['kitchen'] == 'true' 
    #something 
else 
    #else 
end 
Смежные вопросы