salt stack:在模板中使用状态 jinja 变量

salt stack:在模板中使用状态 jinja 变量

我想要做的是为每个 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

相关内容