Saltstack 官方提供有REST API格式的 Salt-Api项目,想使用Salt与第三方系统集成变的尤为简单,salt系列文章的第12篇,我们就来了解下salt-api,如何部署、使用,如何利用api获取更多想要的信息。
一、Salt-Api部署
查看salt-master版本,内核信息及系统版本
[root@node01 ~]# rpm -qa|grep salt-master
salt-master-2018.3.0-1.el7.noarch
[root@node01 ~]# more /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
1.1 在Salt-master上面完成
[root@node01 ~]# yum install salt-api -y
1.2 检查cherry包是否安装
[root@node01 ~]# rpm -qa|grep cherry
python-cherrypy-5.6.0-2.el7.noarch
1.3 安装pyOpenSSL包
[root@node01 ~]# yum list|grep -i pyOpenSSL
pyOpenSSL.x86_64 0.13.1-3.el7 base
pyOpenSSL-doc.noarch 0.13.1-3.el7 base
[root@node01 ~]# yum install pyOpenSSL -y
1.4 自签名证书,生产环境我们可以购买证书
[root@node01 ~]# salt-call --local tls.create_self_signed_cert
local:
Created Private Key: "/etc/pki/tls/certs/localhost.key." Created Certificate: "/etc/pki/tls/certs/localhost.crt."
1.5 在salt-master上,打开include功能方便管理
[root@node01 ~]# grep "default_include" /etc/salt/master
default_include: master.d/*.conf #开启此功能
1.6 添加api配置到salt-master配置文件
[root@node01 ~]# rpm -qa|grep master
salt-master-2018.3.3-1.el7.noarch ##3.3版本
[root@node01 ~]# cd /etc/salt/master.d/ #如果没有master.d目录,就自行创建
[root@node01 master.d]# vim api.conf
[root@node01 master.d]# cat api.conf
rest_cherrypy:
host: 192.168.56.11
port: 8000
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/certs/localhost.key
1.7 创建用户 -M不创建家目录 ,并设置密码
[root@node01 master.d]# useradd -M -s /sbin/nologin saltapi
[root@node01 master.d]# echo "qiuyuetao" |passwd saltapi --stdin
更改用户 saltapi 的密码 。#我这里为了演示,大家使用passwd即可。
passwd:所有的身份验证令牌已经成功更新。
1.8 在salt-master配置文件里添加验证,在include的目录下创建新文件
[root@node01 master.d]# pwd
[root@node01 master.d]# vi auth.conf
[root@node01 master.d]# cat auth.conf
external_auth:
pam:
saltapi:
- .*
- '@wheel'
- '@runner'
- '@jobs'
1.9 重启salt-master和启动salt-api
[root@node01 master.d]# systemctl restart salt-master
[root@node01 master.d]# systemctl start salt-api
1.10 查看salt-api端口监听
[root@node01 master.d]# netstat -an|grep 8000
二、 验证login登陆,获取token字符串
curl -sSk https://192.168.56.11:8000/login \
-H 'Accept: application/x-yaml' \
-d username='saltapi' \
-d password='qiuyuetao' \
-d eauth='pam'
三、Salt-Api 执行各个模块
3.1 执行cmd.run
curl -sSk https://192.168.56.11:8000 \
-H 'Accept: application/x-yaml' \
-H 'X-Auth-Token: a1ea9486c8778328a95d3cd788ab7d21e0119efa'\
-d client=local \
-d tgt='*' \
-d fun='cmd.run' -d arg='date'
3.2 执行状态模块
curl -sSk https://192.168.56.11:8000 \
-H 'Accept: application/x-yaml' \
-H 'X-Auth-Token: a1ea9486c8778328a95d3cd788ab7d21e0119efa'\
-d client=local \
-d tgt='*' \
-d fun='state.sls' -d arg='web.lamp'
3.3 以json格式输出
curl -sSk https://192.168.56.11:8000 \
-H 'Accept: application/json' \
-H 'X-Auth-Token: a1ea9486c8778328a95d3cd788ab7d21e0119efa'\
-d client=local \
-d tgt='*' \
-d fun='cmd.run' -d arg='free -m'
3.4 获取grains信息
curl -sSk https://192.168.56.11:8000/minions/node01 \
-H 'Accept: application/x-yaml' \
-H 'X-Auth-Token: a1ea9486c8778328a95d3cd788ab7d21e0119efa'
四、salt-api总结
1.salt-api必须使用https,生产环境建议使用可信证书
2.当salt-api服务重启后原token失效
- QQ精品交流群
-
- 微信公众号
-