首页 文章

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

提问于
浏览
0

我正在尝试学习SaltStack,现在我遇到了一个问题 . 我有一个属性文件(propertyfile.properties),其值由salt柱填充 . 现在,此属性文件存在于多个目录中 . 我遇到的问题是我希望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

请注意,属性文件只有一个,并通过循环生成盐到多个目录,如下所示:

{% 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 回答

  • 1

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

    # 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 字典内容的额外缩进 . 有时需要's an explanation of why that' here .

相关问题