我想要做的是为每个 openvpn 用户生成多个配置文件。我在 pillar 中有 IP 地址和其他配置。
例如:
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 模板?
答案1
您可以使用关键字将所需的任何值传递给模板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