Я хотел бы создать несколько файлов конфигурации для каждого пользователя 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