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

嗨ServerFault社区,

我正在学习SaltStack,现在我正面临一个问题。 我有一个属性文件(propertyfile.properties),其值由盐柱填充。 现在这个属性文件存在于多个目录中。 我的问题是,我希望属性文件的值由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 %} 

有任何想法吗? 非常感激你的帮助。 谢谢

这听起来像你需要像/home/devuser/{{ dir }}/propertyfile_properties_{{ dir }}文件? 你总是可以添加上下文到一个状态来将variables传递给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 }}