SaltStack-API接口 [十二]

2018年6月12日11:04:39 发表评论 2,234 views
广告也精彩

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."

SaltStack-API接口 [十二]
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

SaltStack-API接口 [十二]

二、 验证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'

SaltStack-API接口 [十二]

三、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'

SaltStack-API接口 [十二]

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失效

Salt英文文档

  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: