Я использую зашифрованные пакеты данных в пределах 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"
Но если это не кухонный тест, а рецепт работает непосредственно на узле сервера, то как узел узнает о секретном ключе шифрования. Помните, что в случае теста на кухню я указываю ключ шифрования как 'encrypted_data_bag_secret_key_path:" test/integration/default/encrypted_data_bag_secret "' in 'kitchen.yml' – meallhour
Путь к секрету настроен в вашем 'client.rb', но то, что вы есть ли по умолчанию, я уверен. Шеф-повар ручками загружает секрет для вас внутренне. – coderanger
Я получаю эту ошибку 'ОШИБКА: никакой секрет не указан и не секрет, найденный в/etc/chef/encrypted_data_bag_secret', когда я использую' data_bag_item («tokens», «encryptkey») ' – meallhour