2015-06-07 5 views
10

Ich sehe in der Pillar-Dokumentation, dass es zwei Möglichkeiten gibt, um Säulen-Daten in einem SLS zu referenzieren.Soll ich pillar.get immer anstelle von pillar ['foo'] verwenden?

{{ pillar['foo'] }} 

und

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

Die pillar.get Methode behandelt verschachtelte Säule Daten besser und ermöglicht eine Standard festlegen, wenn die Daten nicht in der Säule zu finden ist. Aber es ist ein bisschen mehr tippen und ich finde die erste Methode leichter zu lesen.

So gilt es als bewährte Methode, immer die pillar.get-Methode zu verwenden oder die Säule ['foo'] akzeptabel zu verwenden, insbesondere wenn es sich um nicht verschachtelte Pillar-Daten handelt.

Ich vermute, immer die pillar.get-Methode verwenden ist am besten, da es Sinn macht, es zu verwenden, wenn es um verschachtelte Pillar Daten geht oder Sie einen Standard festlegen möchten. Und es ist am besten, nur eine Methode konsequent zu verwenden. Aber ich wollte die Gedanken anderer Leute bekommen.

Thansk, Joe

Antwort

6

Ich bin damit einverstanden, dass die kürzere Syntax sieht besser aus.

In Staaten, die ich baue, neige ich dazu, die {{ pillar['foo'] }} Syntax zu verwenden, wenn ich einen Wert referenziere, der ABSOLUTELY muss da sein, damit mein Staat richtig funktioniert. In diesem Fall möchte ich, dass ein Fehler passiert.

Dann mit anderen Werten, wo ich verschachtelte Daten durchlaufen muss, oder wenn ich einen Standardwert verwenden möchte, verwende ich die längere Syntax.

Am Ende ist es meistens persönliche Vorliebe. Keiner von ihnen ist korrekter als ein anderer.

1

Der Grund, warum Sie pillar.get verwenden möchten, ist, weil Sie einen Standardwert angeben können, falls die Säule nichts erhält.

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

Ich benutze pillar['foo'] für "erforderlich" Optionen, wie Utah_Dave vermuten lässt. Ich verwende salt['pillar.get']('foo', 'default') für Optionen, die einen normalen Standard haben. Es gibt ein paar andere Variationen, die interessant sind.

Eins ist salt['defaults.get']('foo'), mit dem Sie die Standardwerte Ihres Status in einer separaten Datei speichern können. Sehr nützlich, wenn Sie viele mögliche Säulenvariablen haben, von denen die meisten oder alle Standardwerte haben.

Eine zweite ist, dass es zu Alias ​​salt['pillar.get'] (und andere Funktionen von derselben Art) möglich ist, so dass sie weniger störend sind, zu schreiben und lesen:

{%- 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. 

Diese letzte Variation, insbesondere (DGET) wirkt Wunder für die Lesbarkeit in stark anpassbaren Zuständen.

+0

Danke für die Antwort. Ich habe dich aufgezogen, aber ich kann es noch nicht. – NimbusScale

+0

Die Pget-Linie wird in fast allen meiner Konfiguration verwendet, und ist sehr nützlich Boilerplate. – umeboshi

Verwandte Themen