为什么salt-api不能使用这种配置?

时间:2016-06-30 21:31:00

标签: api ubuntu-14.04 salt-stack

我正在尝试设置一个非常基本的salt-api配置来测试它。我在 Ubuntu 14.04上使用salt-master和 salt-minion 2016.3.0 Boron

我正在使用this tutorial,我的配置如下。

/srv/salt/top.sls

base:
  '*':
      - reactor

/etc/salt/master.d/reactor.conf

reactor:
  - 'salt/netapi/hook/restart':
    - /srv/reactor/test.sls

/srv/reactor/test.sls

{% set postdata = data.get('post', {}) %}

{% if postdata.secretkey == "replacethiswithsomethingbetter"  %}
test:
  local.cmd.run:
    - tgt: '{{ postdata.tgt }}'
    -arg:
      - touch /home/username/test.txt
{% endif %}

我重新启动了主人,如果我运行salt '*' state.sls reactor,那么状态中的所有内容都可以正常运行。所有这一切都是touch /home/username/test.txt,当我运行状态时会创建该文件。

我正在运行以使用API​​的命令是

curl -H "Accept: application/json" -d tgt='*' -d secretkey="replacethiswithsomethingbetter" -k https://192.168.1.1:8080/hook/services/restart

并且该命令返回{"success": true}

然后我检查了小兵,并且文件尚未创建。

salt-run state.event pretty=True的输出是

salt/netapi/hook/services/restart   {
    "_stamp": "2016-06-29T19:30:04.193832", 
    "body": "", 
    "headers": {
        "Accept": "application/json", 
        "Content-Length": "46", 
        "Content-Type": "application/x-www-form-urlencoded", 
        "Host": "192.168.1.1:8080", 
        "Remote-Addr": "192.168.1.3", 
        "User-Agent": "curl/7.35.0"
    }, 
    "post": {
        "secretkey": "replacethiswithsomethingbetter", 
        "tgt": "*"
    }
}

我确实完成了所有自签名的证书步骤。我不是100%确定为什么我需要这些,但它已经完成了,它们被列在rest_cherrypy配置中。

感谢任何帮助。

编辑1

我编辑了反应堆的东西,因为有一个使用cmd.run或local.cmd.run的例子,位于盐文档here

它仍然是真的,而不是工作。

1 个答案:

答案 0 :(得分:1)

网址错误:

https://192.168.1.1:8080/hook/services/restart

应改为:

https://192.168.1.1:8080/hook/restart

因为你定义的是:

reactor:
  - 'salt/netapi/hook/restart':
    - /srv/reactor/test.sls

您可以通过将salt-master运行为salt-master -l debug来查看调试日志。