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

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 中使用上下文或默认选项:

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