业务流程sls文件中的支柱数据未解析

时间:2018-08-31 17:22:38

标签: salt-stack

我在/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)

如果我通过命令行传递支柱,但我想从文件系统访问支柱,则它可以工作。这不是可能吗? 任何建议表示赞赏!

1 个答案:

答案 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'] }}