Как получить доступ к списку выполнения во время запуска chef-клиента

#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 со своей рабочей станции, чтобы увидеть, что находится в этом массиве.