2013-09-23 2 views
3

Можно ли настроить атрибуты, доступные по рецептам? Если да, то как? Я настроил атрибуты для каждого рецепта, но есть значительное повторение, которое я бы хотел устранить.Атрибуты доступа по рецептам

ответ

4

Способ работы шеф-повара заключается в том, что в начале конвергенции шеф-повар выполняет итерацию через все кулинарные книги, в которых есть рецепты, которые будут выполняться на узле (либо непосредственно в списке запуска, либо через include_recipe). Для каждой поваренной книги шеф-повар будет читать в все файлов атрибутов, хранящихся в папке attributes, и добавить атрибуты в хэш-код node.

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

Ваше описание немного расплывчато, но из того, что я могу собрать, у вас есть кулинарная книга с несколькими рецептами, и для каждого рецепта вы создаете соответствующий файл атрибута. В каждом из этих файлов атрибутов вы повторно определяете один и тот же атрибут (например, default['myapp']['foo'] = "blah").

Это необязательно из-за процесса, который я описал в начале. Во время конвергенции Chef будет читать все ваши файлы атрибутов независимо от того, какие рецепты вы используете. Это означает, что загруженный второй (или третий или четвертый и т. Д.) Файл атрибута просто перезапишет атрибут node['myapp']['foo'], который был установлен ранее загруженным файлом атрибутов.

В этой ситуации общий шаблон должен содержать файл атрибута default.rb, который определяет все общие атрибуты, которые будут использоваться всеми вашими рецептами. При необходимости вы можете перенести атрибуты, относящиеся к рецепту/компоненту, в их собственный файл атрибутов.

В этой ситуации нужно знать, что шеф-повар загружает файлы атрибутов в алфавитном порядке. Если ваш файл атрибута, специфичный для рецепта (например, client.rb), ссылается на один из атрибутов, определенный в default.rb, тогда вам нужно будет использовать директиву include_attribute, чтобы заставить шеф-повара загрузить default.rb перед вашим client.rb, в противном случае все атрибуты от default.rb будут по-прежнему быть ноль.

+0

Как обмениваться атрибутами между кулинарами? – sixty4bit

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