В общем, шеф не нуждается в нем, он позволяет это для удобства.
Я бы рекомендовал не использовать normal
, так как атрибуты этого типа постоянно хранятся в узловом объекте, где default
и overrides
всегда вычисляются во время компиляции. Для этого важна последовательность приоритетов: override
будет окружать normal
, который будет окружать default
. Схема этого доступна в doc, к которой вы привязались.
По причине, почему существует так много разных типов, это позволяет определять значения по умолчанию в кулинарной книге, а затем заменять их в поваренной книге обертки, в роли, в среде или в рецепте, без необходимости изменять сама поваренная книга.
Пример случая: Я хотел бы установить сервер Apache на 3 коробки, я начну с поваренной делать минимальный установку apache2 с по умолчанию listen_port
атрибут 80.
Для моих общих случаев (2 узлов на 3) Я хочу, чтобы Apache прослушивал порт 800 вместо стандартного 80 и добавлял дополнительную конфигурацию. Я сделаю общую оболочку вокруг установки apache, чтобы изменить атрибут listen_port
на 800 и выполнить дополнительную конфигурацию.
Для третьего узла я хочу иметь такую же конфигурацию, но заставляю ее прослушивать порт 2053. Для решения этой проблемы я могу установить атрибут на узле, в роли или в другой куковой книге обертки.
Если в любой момент я хочу, чтобы параметр, который я установил, не будет заменен оболочкой или ролью, я могу получить уровень над ним, используя override
вместо default
в файле атрибута поваренной книги обертки делает ясно, я готов переопределить это значение и не иметь его supersede, когда включение происходит.
В конце дня, для 99% случаев, придерживаться уровня default
должно быть достаточно, но другие уровни доступны, когда это необходимо, для быстрого исправления или отладки и т. Д.
Это не вопрос для StackOverflow. Если вы хотите обсудить философию дизайна шеф-повара (и как она изменилась с годами), вы можете найти меня на IRC, Slack или в разделе Chef Dev на дискурсе. – coderanger