salt stack:在模板中使用状态jinjavariables

我想要做的是为每个openvpn用户生成多个configuration文件。 我有IP地址和其他configuration的支柱。

例如:

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我想生成configuration取决于用户和该用户的configuration数据存储在支柱。

但是为此,我需要知道状态variables“vpnuser”的内容。

是否有可能将variables从一个状态传递给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中有logging