2016-04-07 3 views
2

Angenommen, ich habe unterschiedliche Anmeldeinformationen in zwei verschiedenen Umgebungen, aber das ist die einzige Sache, die zwischen ihnen unterscheidet, und ich möchte keine zusätzlichen Pillar-Dateien für ein einzelnes Element erstellen.Wird Jinja in Säulen gerendert, bevor oder nachdem es an den Diener gesendet wurde?

Angenommen ich das Problem, wie dieser Angriff:

{%- set deployment = grains.get('deployment') %} 
{%- load_yaml as credentials %} 
prod: prodpassword 
test: testpassword 
dev: devpassword 
{%- endload %} 

some_app: 
    user: someuser 
    password: {{ credentials[deployment] }} 

    ...more configuration here... 

Dies funktioniert wie erwartet. Aber kann ein Scherge im Test theoretisch das Passwort für prod bekommen? Das hängt davon ab, ob die Diktatsuche vor oder nach dem Senden von Daten an den Client stattfindet, was wiederum davon abhängt, wann die Jinja gerendert wird. Wird der Master zuerst gerendert und dann die resultierenden Daten gesendet, oder erhält der Diener die Pillar-Datei unverändert und rendert sie dann selbst?

Antwort

2

Pillar Daten ist immer gerendert auf dem Master, nie der Diener. Der Meister hat jedoch Zugriff auf die Körner des Dieners, weshalb dein Beispiel funktioniert.

eine Säule SLS-Datei mit folgendem Inhalt Gegeben:

test: {{ grains['id'] }} 

Folgende Säule Daten führen:

# salt testminion pillar.item test 
testminion: 
    ---------- 
    test: 
     testminion 

Quelle: Ich bin ein SaltStack Kernentwickler.

+0

Nun, kann damit nicht streiten. :-P Es war das Korn-Ding, das mich dazu brachte, mich zu wundern. Vielen Dank. – Andrew

Verwandte Themen