Как протестировать рецепт шеф-повара с зашифрованными пакетами данных

Итак, в моем рецепте есть следующее:

secret = Chef::EncryptedDataBagItem.load_secret("/root/.chef/encrypted_data_bag_secret")

# Decrypt the data bag
creds = Chef::EncryptedDataBagItem.load("passwords", "mysql-root", secret)

Как я могу переопределить эти строки своими тестовыми данными? Рецепт устанавливает базу данных MySQL, поэтому я хотел бы проверить существование БД.


person sdot257    schedule 18.08.2017    source источник


Ответы (2)


я создал отдельные пакеты данных для теста с нужными секретами и загружаю их, если это тестовая кухня

person OK999    schedule 18.08.2017
comment
мое первое знакомство с тестовой кухней и шеф-поваром... вы действительно используете те же значения, что и в prod? например, у меня есть пароль root, установленный в пакете данных для установки mysql. это устанавливается в рецепте, но во время тестовой кухни мой тест не проходит, если у меня нет правильного пароля. поэтому мне нужно указать пароль из зашифрованного пакета данных. - person sdot257; 18.08.2017
comment
Почему бы вам не установить другой тестовый пароль / учетную запись для тестовой среды ... я создаю локальную кухню vm ... так что у меня есть другие секреты относительно продукта - person OK999; 18.08.2017
comment
ну, рецепт ссылается на пароль root для использования из зашифрованного пакета данных. не будет ли тестировать кухню и нужен указанный пароль? но я думаю, что вы подразумеваете, что я могу заставить рецепт читать все вместе из другого пакета данных? - person sdot257; 18.08.2017

Лучший подход — вообще не использовать зашифрованные пакеты для тестирования, изменить свой код, чтобы использовать data_bag_item() хелпер вместо базовых классов, и он будет работать с обоими. Затем просто поместите некоторые обычные фикстуры пакета данных в test/integration/data_bags/ (или установите data_bags_path в своей конфигурации для загрузки из другого места).

person coderanger    schedule 18.08.2017
comment
Впервые вижу ссылки на data_bag_item() ... использовать это в моем обычном рецепте или в моих тестовых файлах спецификаций? - person sdot257; 18.08.2017
comment
Рецепт, docs.chef.io/data_bags.html#with-recipes охватывает DSL. - person coderanger; 18.08.2017