我在/srv/pillar/mypillar.sls中使用带有以下支柱数据的Salt 2018.3.2
#!yaml
mypillar:
some_key: some_value
并尝试在以下状态文件/srv/salt/orch/mypillar.sls中使用
write-pillar-file:
file.managed:
- name: /tmp/mypillar.txt
- contents_pillar: mypillar
如果被称为状态,则可以正常工作
$ salt'localhost'state.apply orch.mypillar
如果被称为协调运行者,则还不起作用:
$ salt-run state.orchestrate orch.mypillar
[INFO ] Loading fresh modules for state activity
[INFO ] Fetching file from saltenv 'base', ** done ** 'orch/mypillar.sls'
[INFO ] Running state [/tmp/mypillar.txt] at time 18:32:03.120348
[INFO ] Executing state file.managed for [/tmp/mypillar.txt]
[ERROR ] Pillar mypillar does not exist
[INFO ] Completed state [/tmp/mypillar.txt] at time 18:32:03.122809 (duration_in_ms=2.461)
如果我通过命令行传递支柱,但我想从文件系统访问支柱,则它可以工作。这不是可能吗? 任何建议表示赞赏!
答案 0 :(得分:0)
我在github上发布了相同的问题,并得到建议,将支柱信息与小仆联系在一起,这意味着Salt-run不能访问支柱信息,因为它在没有Minion上下文的情况下运行。 一种解决方法是像这样显式查询支柱信息(在我的示例中,我将“ localhost”用作我的盐主数据库的奴才ID):
{% set pillardata = salt.saltutil.runner('pillar.show_pillar', kwarg={'minion': 'localhost'}) %}
write-pillar-file:
file.managed:
- name: /tmp/mypillar.txt
- contents:
- {{ pillardata['mypillar']['some_key'] }}