渲染SLS:此处不允许使用映射值

时间:2019-05-03 10:36:39

标签: jinja2 salt-stack

我尝试根据PILLAR变量放置/删除配置文件中的某个位置。 这放在我的盐主盘上的highstate / init.sls中。

我在这里看不到任何语法错误或间距问题。 我在这里做什么错了?

这是我的SLS文件

(% if pillar['highstateenabled'] == 'true' %)

enable_highstate:
  file.managed:
    - name: /etc/salt/minion.d/highstate.conf
    - source: salt://common/salt-minion/files/minion.d/highstate.conf
    - template: jinja

(% else %)

disable_highstate:
  file.absent:
    - name: /etc/salt/minion.d/highstate.conf

(% endif %)

以及在通话期间的输出:

---
local:
    Data failed to compile:
----------
    Rendering SLS 'LAB:common.salt-minion' failed: mapping values are not allowed here; line 4

---

(% if pillar['highstateenabled'] == 'true' %)

enable_highstate:    <======================
  file.managed:
    - name: /etc/salt/minion.d/highstate.conf
    - source: salt://common/salt-minion/files/minion.d/highstate.conf
    - template: jinja

[...]
---

1 个答案:

答案 0 :(得分:1)

最后我自己找到了解决方案:

上面的代码使用了错误的括号。 应该使用大括号“ {}”代替大括号“ {}”,并且正确解析了代码。

此处的SLS呈现错误未指向语法错误...

{% if pillar['highstate'] == 'enabled' %}

output:
  cmd.run:
  - name: 'echo "highstate_enabled" '

enable_highstate:
  file.managed:
    - name: /etc/salt/minion.d/highstate.conf
    - source: salt://common/salt-minion/files/minion.d/highstate.conf
    - template: jinja

{% else %}

disable_highstate:
  file.absent:
    - name: /etc/salt/minion.d/highstate.conf

{% endif %}

“似乎有时由于树木过多而看不到森林”