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

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

大家好,ServerFault 社区,

我正在尝试学习 SaltStack,现在我遇到了一个问题。我有一个属性文件 (propertyfile.properties),其值由 salt pillar 填充。现在此属性文件存在于多个目录中。我遇到的问题是,我希望属性文件的值由 salt pillar.get 函数根据当前所在的目录填充/呈现。为了给您更多想法,让我们考虑这个例子:

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 %}

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

答案1

听起来你需要/home/devuser/{{ dir }}/在文件中这样做propertyfile_properties_{{ dir }}?你总是可以向状态添加上下文,以便将变量传递到 jinja

所以它可能看起来像

{% 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
        - context
          file_dir: /home/devuser/{{ dir }}/
{% endfor %}

因此在模板中你应该能够使用{{ file_dir }}

相关内容