Saltstack-API
官方文档 https://docs.saltstack.com/en/latest/ref/netapi/all/salt.netapi.rest_cherrypy.html
使用条件:1)https调用,需要生成证书 2)配置文件 3)使用PAM验证 4)启动salt-api
安装
yum install -y salt-api
实现方式
1)创建用户useradd -M -s /sbin/nologin saltapi
2)设置密码passwd saltapi
3)生成自签名证书
cd /etc/pki/tls/certs
mv localhost.crt /tmp
make testcert
cd /etc/pki/tls/private
如果上面生成证书时输入了密码,需要取消密码
openssl rsa -in localhost.key -out salt_nopass.key
4)安装Cherrypy模块,版本3.2.6
pip install Cherrypy==3.2.6
备注:centos6、7可以使用3.2.6版本,centos5安装时不要选版本号
5)修改master配置文件
vi /etc/salt/master default_include: master.d/*.conf
6)创建api配置文件
cd /etc/salt/master.d/ vi api.conf rest_cherrypy: host: 192.168.137.11 port: 8000 ssl_crt: /etc/pki/tls/certs/localhost.crt ssl_key: /etc/pki/tls/private/salt_nopass.key
备注:如果加disable_ssl: True,可以通过http请求。
性能优化:
thread_pool: 100 socket_queue_size: 30
7)认证文件
vi eauth.conf external_auth: pam: saltapi: - .* - '@wheel' - '@runner'
备注: .* # 所有模块可执行, '@wheel' # salt key
centos5.9上yum安装的salt,eauth.conf配置需要注意,如下配置
external_auth: pam: saltapi: - .* - '@local' - '@local_async' - '@wheel' - '@wheel_async' - '@runner' - '@runner_async'
8)重启master
systemctl restart salt-master.service
9)启动api
systemctl restart salt-api
10)需要修改master的配置对saltapi用户进行授权
[root@test1 ~]# vim /etc/salt/master external_auth: pam: saltapi: - .* - '@wheel' [root@test1 ~]# /etc/init.d/salt-master restart Stopping salt-master daemon: [ OK ] Starting salt-master daemon: [ OK ]
使用介绍
1)登录测试,使用curl请求
curl -k https://192.168.137.11:8000/login -H 'Accept: application/x-yaml' -d username=saltapi -d password=saltapi -d eauth=pam
登录成功后系统返回token,用于后续交互使用。
2)获取minion资产数据测试,节点为linux-node1.example.com主机
curl -k https://192.168.137.11:8000/minions/linux-node1.example.com -H 'Accept: application/x-yaml' -H 'X-Auth-Token: token内容'
3)查看所有minion存活主机
curl -k https://192.168.137.11:8000/ -H 'Accept: application/x-yaml' -H 'X-Auth-Token: token内容' -d client='runner' -d fun='manage.status'
备注:client='runner'指的是在master执行,client='local'指的是在minion执行
4)ping测试
curl -k https://192.168.137.11:8000/ -H 'Accept: application/x-yaml' -H 'X-Auth-Token: token内容' -d client='local' -d tgt='*' -d fun='test.ping'
tgt表示目标,可以指定某一台minion
5)查看jobs
curl -k https://192.168.137.11:8000/jobs -H 'Accept: application/x-yaml' -H 'X-Auth-Token: token内容'
6)查看具体一个jobs的执行结果
curl -k https://192.168.137.11:8000/jobs/jobid -H 'Accept: application/x-yaml' -H 'X-Auth-Token: token内容'