大家好,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 }}