我想在一个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循环后我该怎么办?
答案 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