Понимание атрибутов шеф-повара - PullRequest
0 голосов
/ 03 апреля 2019

Я новичок от шеф-повара и пытаюсь понять разницу между

default[:foo] = 'something'

и

node[:foo]

и

node.default[:foo] = 'nothing'

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

Мое понимание

  • default[:foo] = 'something' это самый низкий приоритет и устанавливает foo

  • node[:foo] это ничего не устанавливает, просто получает значение foo, типичный вариант использования для условных операторов

  • node.default[:foo] = 'nothing' переопределяет default[:foo]

Полагаю, здесь я хочу доказать, что node[:foo] предназначен только для получения, а не для установки, а также для default[:foo] и node.default[:foo], они только для атрибутов сеттера?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

условности шеф-повара время от времени меняются. если вы используете последнюю версию chef, вы должны использовать node.default, а не старые способы.

читать атрибут атрибута для получения дополнительной информации

1 голос
/ 01 мая 2019

Самый простой способ думать об атрибутах узла - это просто переменные.

  • node.default[:foo] = 'something' # назначает атрибут / переменную
  • node.default[:foo] # Доступ к содержимому атрибута/ variable

С различными уровнями приоритета все усложняется, но в этом суть.

default[:foo] = 'something' и node.default[:foo] = 'something' функционально одно и то же.Вы можете использовать default без узла спереди в файлах атрибутов, но не в рецептах.Это просто ярлык.

Шеф-повар сначала загружает файлы атрибутов, поэтому, если вы установили default [: foo], а затем установите node.default [: foo] в рецепте, значение будет перезаписано.

...