尝试在sls中使用Jinja - 没有运气

问题描述 投票:0回答:1

我希望你能帮助我弄清楚出了什么问题......

我的sls档案:

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

我的Jinja Fie:

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!

jinja2 salt-stack
1个回答
0
投票

我认为您需要在文件托管命令中指定上下文

作为一个例子,这是我在玩模板时所拥有的:

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我有这个:

[%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

jinja文件中的{{user}}可以正确替换。

Salt doc

© www.soinside.com 2019 - 2024. All rights reserved.