SaltStack:在一个sls文件中两次使用“ include:”

时间:2019-12-10 13:50:00

标签: salt-stack

我想在一个SLS文件中两次使用include:

include:
  - foo.bar

{% for system in salt['foo.get_systems'](pillar) %}
   ...
{% endfor %}

include:
  - this.is.the.end

但是此消息失败:

- Rendering SLS 'base:example.test' failed: while constructing a mapping
    in "<unicode string>", line 4, column 1
  found conflicting ID 'include'
    in "<unicode string>", line 106, column 1

我猜conflicting ID 'include'意味着我不能两次使用include:

在for循环后我该怎么办?

2 个答案:

答案 0 :(得分:1)

不能保证状态文件以类似脚本的顺序执行。它们描述了一个数据结构,该数据结构指示需要运行哪些状态函数,但是您不应将它们视为脚本,因为它们不是脚本。

您需要在单个include语句中“包含”所有要包含的SLS文件,然后,如果需要确保某些状态在其他状态之前或之后运行,则应使用状态{{ 3}}个参数,例如require

答案 1 :(得分:0)

您可以通过处理两个sls文件来解决此问题。

将当前的sls文件(包含for循环的“ example / test.sls”)移动到“ example / step_one.sls”。然后使用以下内容创建一个新文件:

include:
  - example.step_one
  - this.is.the.end