web-dev-qa-db-ja.com

ソルトスタック:テンプレートで状態ジンジャ変数を使用

私がしたいのは、openvpnユーザーごとに複数の構成ファイルを生成することです。柱に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テンプレートに変数を渡すことは可能ですか?

9
Herrberg

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 に文書化されています