salt-api

环境搭建

salt-api使用 rest_chrrypy 来提供restful服务,同时支持httphttps两种模式

安装salt-api

yum install salt-api  ## 安装时会将 CherryPy依赖安装上

生成ssl证书

yum install pyOpenSSL 
salt-call --local tls.create_self_signed_cert

生成的证书位于/etc/pki/tls/

/etc/pki/tls/certs/localhost.crt
/etc/pki/tls/certs/localhost.key

添加配置

使用API接口在调用的时候,本质上还是需要salt-master去执行命令,所以需要将salt-api的服务配置放在salt-master里面,touch /etc/salt/master.d/salt-api.conf,添加如下配置

external_auth:
  pam:
    salt:  ## 本机ssh的用户名和密码
      - .*
rest_cherrypy:
  port: 8000
  host: 0.0.0.0
  disable_ssl: True  ## 是否关闭ssl,关闭后则使用http协议
  ssl_crt: /etc/pki/tls/certs/localhost.crt
  ssl_key: /etc/pki/tls/certs/localhost.key

说明

  • external_auth(eAuth)是一种认证机制,可以使用扩展的PAMLDAPsalt-eAuth使用
    • PAM(Pluggable authentication module),*nix系统用户和程序之间的安装验证机制
    • LDAP(Lightweight Directory Access Portocol),轻型目录访问协议,可以用于各样的密码管理

启动

修改完配置文件后需要重启salt-master

systemctl restart salt-master.service
systemctl start salt-api.service

接口列表

rest url reference

申请token

curl  http://localhost:8000/login  -H "Accept: application/json"  -d username=salt   -d password=xxxxx   -d eauth=pam 

{"return": [{"perms": [".*"], "start": 1577690950.168191, "token": "416016368cf695aad0b281e3b41f52b0ccd565b1", "expire": 1577734150.168192, "user": "salt", "eauth": "pam"}]}

拿着申请过来的token,去请求其他的接口,需要在Header当中添加为X-Auth-Token

curl -i http://localhost:8000/ -H "Accept: application/json"  -H "X-Auth-Token: 416016368cf695aad0b281e3b41f52b0ccd565b1" -d client='local' -d tgt='*' -d fun="cmd.run" -d arg="uname -a"