为什么 salt-api 不能使用此配置?
Why isn't salt-api working with this configuration?
我正在尝试设置一个非常基本的 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 %}
我已经重启了master,如果我运行 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
和那个命令 returns {"success": true}
然后我在minion上查看,文件还没有创建。
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 或本地的例子。cmd.run 位于 salt 文档 here
它仍然返回 true,但没有工作。
URL 错误:
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 as salt-master -l debug
查看调试日志。
我正在尝试设置一个非常基本的 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 %}
我已经重启了master,如果我运行 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
和那个命令 returns {"success": true}
然后我在minion上查看,文件还没有创建。
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 或本地的例子。cmd.run 位于 salt 文档 here
它仍然返回 true,但没有工作。
URL 错误:
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 as salt-master -l debug
查看调试日志。