У шеф-повара есть очень сложная (возможно, слишком большая) схема для кулинарных книг, чтобы предоставлять значения атрибутов по умолчанию. Я думаю, что Puppet делает что-то подобное с параметрами класса, где значения по умолчанию обычно идут в params.pp
. С Солью, я видел:Каков наилучший способ для формулы для предоставления атрибутов по умолчанию?
- указание значения по умолчанию в словаре/поиск столбцов.
grains.filter_by
объединения по умолчанию значений атрибутов с пользовательскими данными столба (например, map.jinja в apache-formula)- в вызове
file.managed
состояния, с указанием по умолчанию значения в качестве параметраdefaults
и заданного пользователь данных столба атрибутов, какcontext
.
Вариант 1 представляется наиболее распространенным, но имеет недостаток, что файл шаблона становится очень трудным для чтения. Он также требует повторения значения по умолчанию всякий раз, когда выполняется поиск, что позволяет сделать ошибку.
Вариант 2 чувствует себя ближе всего к подходу шеф-повара, но, по-видимому, ожидает, что дефолты по умолчанию разбиты на словари случаев на основе некоторого атрибута фильтрации (например, тип ОС, записанный в зернах).
Вариант 3 не плохо, но ставит атрибут по умолчанию в файле состояния, вместо того, чтобы отделить их в свой собственный файл, как они с опцией 2.
Saltstack-х best practices doc поддерживает вариант 2, за исключением того, что она не адрес, как объединить значения по умолчанию с указанными пользователем значениями без использования grains.filter_by
. Есть ли способ обойти это?
К сожалению, это новый правильный ответ. :-) Я говорю «грустно», потому что он менее изящный, чем старый, но так оно и есть. –