2015-06-07 3 views
10

Я вижу в документации столба, что есть два способа сопоставления данных столбцов в SLS.Должен ли я всегда использовать pillar.get вместо столбца ['foo']?

{{ pillar['foo'] }} 

и

{{ salt['pillar.get']('foo') }} 

Метод pillar.get обрабатывает вложенные данные Столб лучше и позволяет указать значение по умолчанию, если данные не найдены в столбе. Но это немного больше, и я считаю, что первый метод легче читать.

Таким образом, считается оптимальной практикой всегда использовать метод pillar.get или использовать стойку ['foo'] приемлемо, особенно при работе с не-гнездовыми данными столбцов.

Я подозреваю, что всегда использовать метод pillar.get лучше, поскольку имеет смысл использовать его при работе с вложенными данными столба или вы хотите установить значение по умолчанию. И это лучше всего для вас одним методом. Но я хотел получить мысли других людей.

Thansk, Джо

ответ

6

Я согласен, что более короткий синтаксис выглядит лучше.

В состояниях, которые я создаю, я склонен использовать синтаксис {{ pillar['foo'] }}, когда я ссылаюсь на значение, которое АБСОЛЮТНО должно быть там, где мое состояние работает правильно. В этом случае я хочу, чтобы произошел сбой.

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

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

1

Причина, по которой вы хотите использовать pillar.get, заключается в том, что вы можете указать значение по умолчанию в случае, если столп не сможет ничего получить.

salt['pillar.get']('element', 'default') 
10

Я использую pillar['foo'] для "необходимых" вариантов, как предполагает Utah_Dave. Я использую salt['pillar.get']('foo', 'default') для параметров, которые имеют нормальное значение по умолчанию. Есть несколько других вариаций, которые интересны.

Первый - salt['defaults.get']('foo'), что позволяет сохранять значения по умолчанию в отдельном файле. Очень полезно, если у вас много возможных переменных столбцов, большинство или все из которых имеют значения по умолчанию.

Второе, что можно псевдоним salt['pillar.get'] (и другие функции одного и того же рода), так что они меньше неприятностей печатать и читать:

{%- set pget = salt['pillar.get'] %} 
{%- set dget = salt['defaults.get'] %} 
{%- set mget = salt['mine.get'] %} 
{{ pget("foo1", "default1") }} 
{{ pget("foo2", "default2") }} 
{{ dget("foo3") }} 
{{ dget("foo4") }} 
...and so on. 

Это последнее изменение, в частности (DGET) творит чудеса для удобочитаемости в сильно настраиваемых состояниях.

+0

Спасибо за ответ. Я бы поднял тебя, но я пока не могу. – NimbusScale

+0

Линия pget используется практически во всех моих конфигурациях и является очень полезной таблицей. – umeboshi

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