Назад | Перейти на главную страницу

солевой стек: используйте переменные состояния jinja в шаблоне

Я хотел бы создать несколько файлов конфигурации для каждого пользователя openvpn. У меня есть IP-адрес и дополнительная конфигурация в pillar.

Например:

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

В SLS я бы хотел сделать что-то вроде:

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

и в ccdtemplate я хотел бы сгенерировать конфигурацию в зависимости от пользователя и данных конфигурации для этого пользователя, хранящихся в pillar.

Но для этого мне нужно было бы узнать содержимое переменной vpnuser из состояния.

Можно ли передать переменные из состояния в шаблон jinja?

Вы можете передать в шаблон любое необходимое значение, используя defaults ключевое слово. В вашем случае это будет:

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

Это задокументировано в http://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html