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。
我正在尝试学习 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。