salt-api是Salt上的模块接口,提供各种各样的进入点去运行Salt系统。它可以启动和管理多个接口,允许REST API与XMLRPC、Websocket API共存
1、在salt-master节点安装salt-api
yum install - y salt-api 或者 pip install salt-api
2、生成自签名证书(用于ssl)cd /etc/pki/tls/certs
# 生成自签名证书, 过程中需要输入key密码及RDNs
make testcert
如果出现以下提示,删除/etc/pki/tls/private下的localhost.key即可
![](https://i-blog.csdnimg.cn/blog_migrate/76e546c7cacd65e6945cf7c6c30fcfe6.png)
cd /etc/pki/tls/private/
# 解密key文件,生成无密码的key文件, 过程中需要输入key密码,该密码为之前生成证书时设置的密码
openssl rsa -in localhost.key -out localhost_nopass.key
3、创建用于salt-api的用户
useradd -M -s /sbin/nologin saltapi
echo "saltapi" | passwd saltapi --stdin
出现passwd: all authentication tokens updated successfully.提示,则密码设置成功
4、在/etc/salt/master or master.d中添加配置信息
[root@localhost scripts]# cat /etc/salt/master.d/api.conf
rest_cherrypy:
port: 8000
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/private/localhost.key
[root@localhost scripts]# cat /etc/salt/master.d/eauth.conf
external_auth:
pam:
saltapi:
- .*
- '@wheel' #wheel相关命令权限
- '@runner' #runner相关命令权限
- '@jobs'
5、重启salt-master 和 salt-api
systemctl restart salt-master
systemctl restart salt-api
6、验证安装
$ salt -a pam '*' test.ping
输入配置的用户名 密码, 成功后, eauth.conf配置正确。
登录:
curl -k http://172.16.129.99:8000/login -H "Accept: application/x-yaml" -d username='saltapi' -d password='saltapi' -d eauth='pam'
显示全部minion key:
curl -k http://172.16.129.99:8000/ -H "Accept: application/x-yaml" -H "X-Auth-Token: d02075a992548a8b866e26cdd90a1b82dbe8355d" -d client='wheel' -d fun='key.list_all'
执行cmd.run命令:
curl -k http://172.16.129.99:8000/ -H "Accept: application/x-yaml" -H "X-Auth-Token: 570e294f87bbc69749ff55c740d99c889ea800f4" -d client='local' -d tgt='*' -d fun='test.ping'
配置期间踩的坑:
![](https://i-blog.csdnimg.cn/blog_migrate/24a6f9dbf123b875e8a1db90abfd9416.png)
出现问题的原因:
(1)添加用户的密码没有设置正确,要出现passwd: all authentication tokens updated successfully提示,才是正确的
(2)配置之后要修改配置文件cat /etc/salt/master.d/eauth.conf,在pam下添加用户名称,和用户的权限
(3)配置之后要重启salt-master和salt-api
![](https://i-blog.csdnimg.cn/blog_migrate/7e2a2204ab11f00cea17b8a78ddc384e.png)
出现问题的原因:
(1)https替换为http
(2)ip为配置salt-api的机器ip