SaltStack官方提供有REST API格式的api項目,使得salt與第三方系統集成變得更加簡單。html
如下操做前提是您已經安裝好salt-master和salt-api服務shell
一、配置salt-master,開啓rest_cherrypy服務
這裏偷懶,沒有使用ssl,因此直接禁用ssl了,線上環境建議使用sslapi
rest_cherrypy: port: 8181 host: 0.0.0.0 disable_ssl: True
二、配置pam驗證,app
external_auth: pam: saltuser: - .* - '@runner' - '@wheel' - '@jobs'
以上兩個修改都是在/etc/salt/master文件中curl
三、建立認證用戶,並設置密碼ide
useradd -M -s /sbin/nologin saltuser
四、重啓salt-master和啓動salt-api測試
systemctl restart salt-master systemctl restart salt-api
五、查看salt監聽端口url
[root@qd01-stop-saltmaster001 ~]# ss -ltnp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 30 *:8181 *:* users:(("salt-api",pid=13833,fd=11)) LISTEN 0 1000 *:4505 *:* users:(("salt-master",pid=12235,fd=18)) LISTEN 0 1000 *:4506 *:* users:(("salt-master",pid=12332,fd=32))
六、驗證login登陸,獲取token字符串.net
[root@saltmaster001 ~]# curl -sS http://localhost:8181/login -H 'Accept: application/x-yaml' -d username=saltuser -d password=saltuser -d eauth=pam return: - eauth: pam expire: 1610484091.7311294 perms: - .* - '@runner' - '@wheel' - '@jobs' start: 1610440891.731129 token: 49d2bedbddf71dd6c4af3c2f5e09797b2cf0d9aa user: saltuser
七、經過api執行test.ping測試rest
[root@saltmaster001 ~]# curl -sSk http://localhost:8181 -H 'Accept: application/x-yaml' -H 'X-Auth-Token: 49d2bedbddf71dd6c4af3c2f5e09797b2cf0d9aa' -d client=local -d tgt='*monitor004*' -d fun=test.ping return: - monitor004: true
能夠看到,返回值和直接在cmd執行test.ping同樣
八、經過api執行cmd.run
[root@saltmaster001 ~]# curl -sSk http://localhost:8181 -H 'Accept: application/x-yaml' -H 'X-Auth-Token: 49d2bedbddf71dd6c4af3c2f5e09797b2cf0d9aa' -d client=local -d tgt='qd01-stop-monitor004*' -d fun=cmd.run -d arg='uptime' return: - monitor004: ' 16:44:51 up 586 days, 12:47, 0 users, load average: 0.00, 0.00, 0.00'
更多信息請參見https://docs.saltstack.com/en/latest/ref/netapi/all/salt.netapi.rest_cherrypy.html#a-rest-api-for-salt