从另一个模板循环访问当前支柱项目?
accessinig current pillar items in a loop from another template?
我在 init.sls 中有这样的片段:
{% for server, args in pillar.get('servers', {}).items() %}
software-server@{{ server }}
service.running:
- enable: true
- require:
- pkg: software_pkgs
- watch:
- file: software_config
/etc/software/{{server}}.json:
file.managed:
- source: salt://software/files/config.json.j2
- template: jinja
{% endfor %}
config.json.j2:
{
listen: {{server}}:{{listen_addr}}
}
在支柱中:
software.servers:
server1:
listen_addr:10.0.0.1
server2:
listen_addr:127.0.01
在每个{{server}}中。json listen_addr
是不同的。我不知道 saltstack 是否有类似当前循环范围的东西,或者是否有解决方法。
您可能需要在 file.managed 中使用上下文或默认选项:
在你的例子中它会像:
/etc/software/{{server}}.json:
file.managed:
- source: salt://software/files/config.json.j2
- template: jinja
- context:
server: {{ server }}
listen_addr: {{ server['listen_addr'] }}
我在 init.sls 中有这样的片段:
{% for server, args in pillar.get('servers', {}).items() %}
software-server@{{ server }}
service.running:
- enable: true
- require:
- pkg: software_pkgs
- watch:
- file: software_config
/etc/software/{{server}}.json:
file.managed:
- source: salt://software/files/config.json.j2
- template: jinja
{% endfor %}
config.json.j2:
{
listen: {{server}}:{{listen_addr}}
}
在支柱中:
software.servers:
server1:
listen_addr:10.0.0.1
server2:
listen_addr:127.0.01
在每个{{server}}中。json listen_addr
是不同的。我不知道 saltstack 是否有类似当前循环范围的东西,或者是否有解决方法。
您可能需要在 file.managed 中使用上下文或默认选项:
在你的例子中它会像:
/etc/software/{{server}}.json:
file.managed:
- source: salt://software/files/config.json.j2
- template: jinja
- context:
server: {{ server }}
listen_addr: {{ server['listen_addr'] }}