【发布时间】:2016-07-20 06:44:24
【问题描述】:
TL;DR
我想使用reactor,调用类似简单的salt '*' state.sls examplestate
我是 saltstack 反应器的新手,但我在使用其中一项功能时遇到了问题。
在位于here 的reactor 文档中,在“Advanced State System Capabilities”下,有以下示例:
/etc/salt/master.d/reactor.conf
# A custom event containing: {"foo": "Foo!", "bar: "bar*", "baz": "Baz!"}
reactor:
- myco/custom/event:
- /srv/reactor/some_event.sls
/srv/reactor/some_event.sls
invoke_orchestrate_file:
runner.state.orchestrate:
- mods: orch.do_complex_thing
- pillar:
event_tag: {{ tag }}
event_data: {{ data | json() }}
/srv/salt/orch/do_complex_thing.sls
{% set tag = salt.pillar.get('event_tag') %}
{% set data = salt.pillar.get('event_data') %}
# Pass data from the event to a custom runner function.
# The function expects a 'foo' argument.
do_first_thing:
salt.runner:
- name: custom_runner.custom_function
- foo: {{ data.foo }}
# Wait for the runner to finish then send an execution to minions.
# Forward some data from the event down to the minion's state run.
do_second_thing:
salt.state:
- tgt: {{ data.bar }}
- sls:
- do_thing_on_minion
- pillar:
baz: {{ data.baz }}
- require:
- salt: do_first_thing
在这个例子中,假设我正确地跟随它,reactor event 触发了位于 reactor 目录中的 some_event.sls。 some_event.sls 然后使用 runner.state.orchestrate 运行 do_complex_thing.sls。
我正在尝试做的事情非常相似,但我无法让它发挥作用。我想让反应堆event 启动some_event.sls。在 some_event.sls 中,我只是希望它调用我编写的状态。例如,使用 file.managed 将文件从 master 移动到 minion 的简单状态。我在下面尝试过:
/etc/salt/master.d/reactor.conf
reactor:
- 'salt/netapi/hook/test':
- /srv/reactor/testdirectory/configure.sls
/srv/reactor/testdirectory/configure.sls
{% set postdata = data.get('post', {}) %}
{% if grains['os_family']=="Debian" %}
testifthisworks:
salt.state:
- mods: transferfile.init
- tgt: {{ postdata.tgt }}
{% endif %}
/srv/salt/transferfile/init.sls
/root/testfile.txt:
file.managed:
- source: salt://testfiles/testfile.txt
- makedirs: True
- mode: 700
- template: jinja
在 configure.sls 文件中,我正在尝试使用 salt.state 来启动 state.sls,这不适用于错误 "ReactWrap" object has no attribute salt
当我尝试做同样的事情,但使用原始示例中的 runner.state.orchestrate(我不需要编排)时,它可以工作,但它将文件移动到我的主服务器上的 /root/。
我不确定除了 salt.state 之外我还能使用什么来运行 state.sls。任何帮助表示赞赏。
【问题讨论】:
标签: ubuntu-14.04 webhooks salt-stack