Пытаюсь использовать дзиндзя в слсах - не везет - PullRequest
0 голосов
/ 01 марта 2019

Я надеюсь, что Вы можете помочь мне выяснить, в чем дело ...

Мой файл sls:

cat /srv/salt/test.sls
{% set serverproxy = ['194.110.220.91'] %}
/tmp/motd.xml:
  file.managed:
    - source: salt://motd.jinja
    - template: jinja

Мой файл Jinja:

cat / srv/salt/motd.jinja

Welcome to {{ grains['fqdn'] }}


    Server Stats at a Glance:
    ------------------------


    OS: {{ grains['osfullname'] }}
    Kernel: {{ grains['kernelrelease'] }}
    Memory: {{ grains['mem_total'] }} MB
    Proxy IP: {{ serverproxy }}

И ошибка ...

salt 'bbg-proxy' state.apply test
bbg-proxy:
----------
          ID: /tmp/motd.xml
    Function: file.managed
      Result: False
     Comment: Unable to manage file: Jinja variable 'serverproxy' is undefined
     Started: 10:47:04.060399
    Duration: 64.421 ms
     Changes:

Salt Version:
           Salt: 2018.3.3

Если я не использую {% set serverproxy = ['194.110.220.91'] %}, все работает нормально.Чего мне не хватает?

TIA!

1 Ответ

0 голосов
/ 13 марта 2019

Я думаю, вам нужно указать контекст в вашей файловой управляемой команде

В качестве примера вот что я имею при работе с шаблонами:

disable akonadi for {{ user }}:
  file.managed:
    - name: "/home/{{ user }}/.config/akonadi/akonadiserverrc"
    - source: salt://users/files/akonadiserverrc.jinja
    - template: jinja
    - user: {{ user }}
    - group: {{ user }}
    - replace: True
    - dir_mode: 755
    - mode: 644
    - makedirs: True
    - clean: True
    - context:
      user: {{ user }}

и в akonadiserverrc.jinja Iполучить это:

[%General]
Driver=QMYSQL

[QMYSQL]
Name=akonadi
Host=
Options="UNIX_SOCKET=/home/{{ user }}/.local/share/akonadi/socket-add3dev01/mysql.socket"
ServerPath=/usr/libexec/mysqld
StartServer=false

[Debug]
Tracer=null

Правильно заменить {{user}} в файле jinja.

Salt doc

...