Salzstapel: Verwenden Sie Status-Jinja-Variablen in der Vorlage

9

Ich möchte mehrere Konfigurationsdateien für jeden openvpn-Benutzer generieren. Ich habe die IP-Adresse und zusätzliche Konfiguration in Säule.

Zum Beispiel:

openvpn:
  - user1:
    ip: 1.2.3.4
    config:
      - line1
      - line2

In der SLS möchte ich etwas tun wie:

{% for vpnuser in salt['pillar.get']('openvpn') %}
/etc/openvpn/ccd/{{ vpnuser }}:
  file.managed:
    - template: jinja
    - source: salt://openvpn/ccdtemplate
{% endfor %}

und in der ccdtemplate möchte ich die Konfiguration in Abhängigkeit vom Benutzer und den in der Säule gespeicherten Konfigurationsdaten für diesen Benutzer generieren.

Dafür müsste ich aber den Inhalt der Variablen 'vpnuser' vom Staat kennen.

Ist es möglich, Variablen aus einem Zustand an die Jinja-Vorlage zu übergeben?

Herrberg
quelle

Antworten:

10

Mit dem defaultsSchlüsselwort können Sie einen beliebigen Wert an die Vorlage übergeben . In Ihrem Fall wäre dies:

{% for vpnuser in salt['pillar.get']('openvpn') %}
/etc/openvpn/ccd/{{ vpnuser }}:
  file.managed:
    - template: jinja
    - source: salt://openvpn/ccdtemplate
    - defaults:
        vpnuser: {{ vpnuser }}
{% endfor %}

Dies ist in http://docs.saltstack.com/de/latest/ref/states/all/salt.states.file.html dokumentiert

Christophe Drevet-Droguet
quelle
2
Sie können die contextOption genauso verwenden wie defaults, was etwas verwirrend ist. Sie versuchen so zu klären: "Die allgemeine bewährte Methode besteht darin, Standardwerte defaultsmit bedingten Überschreibungen zu platzieren context."
thaddeusmt