我在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是否具有类似于当前循环的作用域,或者是否有解决方法。
答案 0 :(得分:0)
您可能需要在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'] }}