SaltStack - 根据正在执行的文件夹生成支柱值

SaltStack - generate pillar value base on what folder it is being executed

我正在尝试学习 SaltStack,但现在我遇到了一个问题。 我有一个 属性 文件 (propertyfile.properties),其中的值由盐柱填充。现在这个 属性 文件存在于多个目录中。我遇到的问题是我希望 属性 文件的值是 populated/rendered by salt pillar.get function based on which directory based on what currently it is into.为了给你更多的想法,让我们考虑这个例子:

propertyfile.property (in directory 1)
name={{ salt['pillar.get']['dir1.name'] }}


propertyfile.property (in directory 2)
name={{ salt['pillar.get']['dir2.name'] }}

#pillar
dir1.name=dir1
dir2.name=dir2

注意 属性 文件只有一个,它是由 salt 通过循环生成到多个目录的,如下所示:

{% for dir in 'dir1', 'dir2' %}
propertyfile_properties_{{ dir }}:
    file.managed:
        - name: /home/devuser/{{ dir }}/propertyfile.properties
        - source: {{ propertyfile_source }}
        - source_hash: {{ propertyfile_source }}.MD5
        - template: jinja
        - show_diff: True
        - makedirs: True
{% endfor %}

有什么想法吗?非常感激您的帮忙。谢谢

您可以通过将每个目录作为上下文传递给模板来执行此操作,因为它已呈现:

# In .sls
{% for dir in salt['pillar.get']("directories") %}
propertyfile_properties_{{ dir }}:
    file.managed:
        - name: /home/devuser/{{ dir }}/propertyfile.properties
        - source: salt://path/to/template.jinja
        - template: jinja
        - context:
            dir: {{ dir }}
{% endfor %}

# In template:
dirname={{ dir }}
fullpath=/home/devuser/{{ dir }}/propertyfile.properties

# In pillar:
directories:
  - dir1
  - dir2
  - ...and so on

请注意 context 词典内容的额外缩进。解释了为什么有时需要这样做 here