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?
Nun, kann damit nicht streiten. :-P Es war das Korn-Ding, das mich dazu brachte, mich zu wundern. Vielen Dank. – Andrew