salt stack: use variáveis jinja de estado no modelo

7

O que eu gostaria de fazer é gerar vários arquivos de configuração para cada usuário do openvpn. Eu tenho o endereço IP e configuração adicional no pilar.

Por exemplo:

openvpn:
  - user1:
    ip: 1.2.3.4
    config:
      - line1
      - line2

No SLS, gostaria de fazer algo como:

{% for vpnuser in salt['pillar.get']('openvpn') %}
/etc/openvpn/ccd/{{ vpnuser }}:
  file.managed:
    - template: jinja
    - source: salt://openvpn/ccdtemplate
{% endfor %}

e no ccdtemplate eu gostaria de gerar a configuração dependendo do usuário e os dados de configuração para este usuário armazenados no pilar.

Mas, para isso, eu precisaria saber o conteúdo da variável 'vpnuser' do estado.

É possível passar variáveis de um estado para o modelo jinja?

    
por Herrberg 15.09.2014 / 19:20

1 resposta

8

Você pode passar qualquer valor necessário para o modelo usando a palavra-chave defaults . No seu caso, isso seria:

{% for vpnuser in salt['pillar.get']('openvpn') %}
/etc/openvpn/ccd/{{ vpnuser }}:
  file.managed:
    - template: jinja
    - source: salt://openvpn/ccdtemplate
    - defaults:
        vpnuser: {{ vpnuser }}
{% endfor %}

Isso está documentado no link

    
por 15.09.2014 / 21:22