#chef-infra
#шеф-инфра
Вопрос:
Как мне обратиться к активному списку выполнения во время конвергенции?
Я пытаюсь записать список выполнения в файл атрибута json для AMI, который я создаю с помощью chef-клиента, подключенного к серверу chef. Моя версия chef-client — 12.14.89.
Ответ №1:
В зависимости от того, что вы имеете в виду, вероятно node.run_list
, который является экземпляром Chef::RunList
. node.run_list.to_json
предоставит вам список выполнения, отформатированный в формате JSON.
Комментарии:
1. Я все еще отлаживаю свой шаблон (вероятно, он сломан по другим причинам), поэтому я еще не подтвердил, что это решает мою проблему. Было бы проблемой, если бы я изменил вопрос, включив в него как определить, принадлежит ли конкретный рецепт текущему run_list?
2. Для этого вы хотите
node['recipes'].include?('whatever')
. Это также приведет к сбоямinclude_recipe
.3. node.run_list.to_json выводит только массив JSON. Чтобы использовать его так, как мне нужно, строка должна выглядеть так:
"run_list": <%= node.run_list.to_json %>
.4. Кроме того, @coderanger, что относится к части «что угодно»? Должен ли рецепт отображаться как
cookbook::recipe
илиrecipe[cookbook::recipe]
или какой-либо другой вариант? Я пыталсяcookbook::recipe
, и, похоже, это не сработало, но я мог бы испортить это каким-то другим способом.5.
cookbook::recipe
🙂 Вы также можете просмотреть данные атрибута узлаknife node show
со своей рабочей станции, чтобы увидеть, что находится в этом массиве.