Подтвердить что ты не робот

Укажите, какие поваренные книги будут работать с шеф-поваром Solo

Я использую chef-solo для тестирования моих кулинарных книг на местном уровне, но я хочу, чтобы иметь возможность запускать только кулинарные книги, которые я тестирую. В настоящее время, похоже, что chef-solo будет запускать все кулинарные книги в каталоге кулинарных книг, указанных в solo.rb. Я указал список запуска в файле атрибутов json и указал местоположение json файла в файле solo.rb, но это, похоже, не помогает. Он по крайней мере анализирует атрибуты для всех других кулинарных книг, потому что у меня есть тот, который не работает для моей локальной конфигурации, и он не работает весь прогон.

Лучшее решение, которое я нашел до сих пор, - это переместить кулинарные книги, которые мне нужны для тестирования, в другой каталог и указать это в solo.rb. Есть ли лучший способ сделать это?

4b9b3361

Ответ 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) и должен реорганизовать те вещи, которые нужно сделать в ресурсе, который называется из рецепта.

Ответ 2

Также стоит отметить, что при тестировании вы можете легко переопределить runlist

chef-solo --override-runlist "role["somerole"],recipe[mycookbook::recipe]"

Ответ 3

К сожалению, я не думаю, что есть. Шеф-повар работает в двухпроходном режиме: во-первых, он анализирует и создает модель ваших кулинарных книг (фаза "компиляции" ), а затем она запускает только те кулинарные книги, которые вы указали в списке запуска. Я считаю, что он делает это, чтобы убедиться, что он улавливает зависимости между кулинарными книгами на этапе компиляции. Фаза компиляции должна быть последовательной, иначе она будет ошибочной.

Чтобы это понять, просмотрите ресурс ruby ​​block. Любой рубин, который плавает в ваших рецептах, будет оцениваться во время компиляции; любой рубин, который вы хотите запустить во время оценки, должен быть помещен в ресурс блока ruby. Как только вы это почувствуете, становится очевидной природа двухпроходной оценки.

Я думаю, что ваши единственные варианты - приносить свои поваренные книги по одному, например, вы делаете, или исправлять свои атрибуты.