Ответ 1
Обновить: chef-solo больше не является "отдельным" инструментом от шеф-повара. Из документация:
chef-solo - это команда, которая выполняет chef-клиент таким образом, чтобы сервер Chef не требовал слияния кулинарных книг. chef-solo использует режим шеф-повара шеф-повара и не поддерживает следующие функции, присутствующие в конфигурациях chef-client/server
Это изменение было реализовано в Chef версии 12.11, которая выполняет сообщество RFC. Это было выпущено 8 июня 2016 года. Старое поведение, описанное ниже (хотя и с 4 лет назад в это время), доступно с аргументом --legacy-mode
до chef-solo
.
Для получения самой актуальной и актуальной информации о Chef Solo, пожалуйста, прочитайте официальную документацию
Мой первоначальный ответ ниже:
Шеф-повар (клиент соло ИЛИ) не "запускает" все кулинарные книги.
Он загружает все файлы Ruby в cookbook в следующие каталоги, в следующем порядке:
- библиотеки /*. Гь
- провайдеры /*. Гь
- ресурсы /*. Гь
- атрибуты /*. Гь
- определения /*. Гь
Затем он загружает все рецепты, которые находятся в расширенном списке запуска node. С chef-solo
это происходит из файла JSON, поставляемого с -j
, или может быть сделано в файлах атрибутов, однако последний не рекомендуется и не рекомендуется.
Также загружаются все рецепты, которые включены в список расширенного запуска через include_recipe
. Шеф-повар загружает рецепты, оценивая их как код Ruby. Когда он сталкивается с рубиновым кодом, который признает его ресурсом или определением, он добавляет ресурс в коллекцию ресурсов, которая представляет собой числовое упорядоченное индексирование хэша всех ресурсов. Определения являются особыми, поскольку шеф-повар добавляет ресурсы, которые они содержат, а не само определение, в Сборник ресурсов. Включенные ресурсы рецептов через include_recipe
вставлены на место, затем шеф-повар продолжает участвовать в рецепте включения.
После того, как Chef обработал все рецепты для всех своих ресурсов, он просматривает коллекцию ресурсов, принимая указанное действие в каждом порядке, в который он был добавлен в коллекцию.
Я очень рекомендую прочитать документацию по этому процессу. Это относится к шеф-повару Соло; пропущена только часть, в которой кулинарные книги загружаются с сервера.
Чтобы убедиться, что тестируются только те рецепты, которые вы хотите протестировать, включите их в список запуска node через файл JSON. Это выглядит так:
{ "run_list": ["recipe[mything]", "recipe[anotherthing]"] }
Список запуска - это просто массив, а элементы могут быть recipe[cookbookname]
или role[somerole]
. Вы можете узнать больше о том, как использовать роли с шеф-поваром Solo в документации для шеф-повара.
Если у вас есть изменения в системе, когда шеф-повар загружает компоненты поваренной книги (рубиновые файлы в каждой кулинарной книге), тогда "You Do Do It Wrong" (tm) и должен реорганизовать те вещи, которые нужно сделать в ресурсе, который называется из рецепта.