目标
如何在minion上安装file.recurse文件,这些文件特定于小兵?
当前战略
这将有效:
files_per_minion:
file.recurse:
- source: salt://monitoring/files/per_minion/{{ grains.id }}
- name: /
- template: jinja
...但是对于主人没有这个目录的小兵来说却失败了 . 我不想为我的主人上的每个小兵创建一个目录 .
我搜索可选包含的方法 . 这是伪代码中的条件:
{% if magic_way_to_check_if_source_exists salt://monitoring/files/per_minion/{{ grains.id }} %}
files_per_minion:
file.recurse:
- source: salt://monitoring/files/per_minion/{{ grains.id }}
- name: /
- template: jinja
{% endif %}
问题
怎么写条件 magic_way_to_check_if_source_exists
?
欢迎其他解决方案
条件 magic_way_to_check_if_source_exists
只是实现目标的一种策略 . 欢迎其他解决方案 .
用例
想象一下,我希望安装 cron_tab_file_for_xhost
,但只能在名为xhost的主机上安装 . 我可以通过为此主机创建目录树和文件来解决此问题,如下所示:
monitoring/files/per_minion/xhost/etc/cron.d/cron_tab_file_for_xhost
1 回答
根据您的用例和状态树,有不同的方法 .
最简单的方法是创建一个单独的状态并使用
top.sls
附加它 .如果您处理通过支柱配置的公式 . 我会把这些信息写在我支柱的某个地方 . 然后各州根据支柱数据做出决定 .
pillar.example :
somestate.sls :
UPDATE :
我刚看了docs of the file.managed state
这似乎是另一种选择 - 如果你不打算推出你的小兵不需要的空文件 .