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?

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.