2014-12-22 3 views
2

У меня есть node.run_list.add('recipe[ckbk::recipe_name]') в ckbk::recipe. Когда chef-client запускается с опцией -o, recipe_name в run_list.add не добавляется в список запуска. Является ли это ожидаемым поведением использования chef-client -o.Добавление рецептов в Chef run_list и chef-client -o опция

+0

Я мог ошибаться, но я уверен, что изменение узла.run_list НЕ добавит рецепт в ваш список. Он просто добавит его в атрибут, но не приведет к тому, что рецепт будет выполнен. –

+0

Да. Похоже, это поведение, так как рецепт добавляется к биту атрибута, который не выполняется. –

ответ

1

Я не думаю, что run_list.add влияет на текущий пробег. Это потребует полного повторного расширения списка задач и версии. «Обычно», что просто повлияет на ваш следующий запуск, но -o автоматически отключает данные сохраняемого узла обратно на сервер, потому что вы можете получить частичные данные.

+0

Спасибо @coderanger. Короче говоря, runlist нельзя динамически изменять во время работы chef-client. –

+0

Вы можете использовать 'include_recipe' для динамического решения, какие рецепты выполняются, но вы не можете добавлять или удалять кулинарные книги во время прогона. – coderanger

0

Когда вы используете клиент chef с опцией -o, вы переопределяете список запуска только для этого запуска, поэтому в основном замораживает runlist к вашему новому, и вы не можете его изменить.

-o RUN_LIST_ITEM, --override-runlist RUN_LIST_ITEM 
Replace the current run list with the specified items. This option will not clear the list of cookbooks (and related files) that is cached on the node. 

Вы можете использовать include_recipe включать несколько (другие) рецепты йо ваш основной рецепт. Он не изменит runlist, но включенный рецепт будет добавлен как более низкий уровень зависимости к вашему списку.

+0

Спасибо @rastasheep. Так как мне нужно запустить рецепт для запуска в качестве последнего в run_list, я не смог перейти с 'include_recipe'. –

+0

Поскольку это ваша поваренная книга, вы можете уведомить свой ресурс о запуске в конце прогона. Вот несколько примеров https://docs.chef.io/resource_common.html#notifies-syntax https://docs.chef.io/resource_execute.html#examples или http://stackoverflow.com/a/13140171/ 2760469 – rastasheep

+0

Еще раз спасибо. Так как это - выполнение 'recipe' в конце, интересно, какие-либо методы там похожи на то, что' notifying' a 'resource'. –

Смежные вопросы