从另一个模板中循环访问当前支柱项目?

时间:2018-09-19 06:00:06

标签: salt-stack

我在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是否具有类似于当前循环的作用域,或者是否有解决方法。

1 个答案:

答案 0 :(得分:0)

您可能需要在file.managed中使用上下文或默认选项:

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'] }}