一.salt-ssh简介
1.salt-ssh可以独立运行的,不需要minion端
2.salt-ssh 用的是sshpass进行密码交互的
3.以串行模式工作,性能下降
server1
yum install -y salt-ssh #安装salt-ssh
vim /etc/salt/roster
9 server2:
10 host: 172.25.2.2
11 user: root
12 passwd: westos
salt-ssh '*' test.ping -i #如果在配置文件中没有指定密码,则可以用-i询问密码,只有第一次询问
vim ~/.ssh/config #如在建立连接时,不想被询问yes/no,则配置如下
StrictHostKeyChecking no
二.salt-syndic
1.syndic其实就是个代理,隔离master与minion
2.Syndic必须要运行在master上,再连接到另一个topmaster上
3.Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster
4.topmaster并不知道有多少个minion
5.syndic与topmaster的file_roots和pillar_roots的目录要保持一致
server4 topmaster
yum install salt-master -y
vim /etc/salt/master
1047 order_masters: true #作为顶级master
systemctl enable --now salt-master.service
server1 syndic-master
yum install salt-syndic -y
vim /etc/salt/master
1051 syndic_master: 172.25.2.4 #指向topmaster
systemctl restart salt-master.service
systemctl enable --now salt-syndic.service
server4
salt-key -L #查看下级master的连接授权
salt-key -A #授权
salt '*' test.ping
三.salt-api配置
SaltStack 官方提供有REST API格式的 salt-api 项目,将使Salt与第三方系统集成变得尤为简单
官方提供了三种api模块:
rest_cherrypy
rest_tornado
rest_wsgi
官方rest_cherrypy
接下来就用rest_cherrypy做一下
(一).安装与配置
在salt-master端安装
yum install salt-api -y #安装salt-api
cd /etc/pki/tls/private/
openssl genrsa 1024 > localhost.key #生成证书
cd /etc/pki/tls/certs
make testcert #根据提示填写相关信息即可,生成自签名SSL证书
useradd -s /sbin/nologin saltapi
echo westos | passwd --stdin saltapi
cd /etc/salt/master.d/
vim api.conf #激活rest_cherrypy模块
rest_cherrypy:
port: 8000
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/private/localhost.key
vim auto.conf #创建用户认证文件,授权
external_auth:
pam: #热插拔模式
saltapi:
- .*
- '@wheel'
- '@runner'
- '@jobs'
netstat -antlp | grep :8000 #保证端口不被占用
systemctl restart salt-master #重启master
systemctl enable --now salt-api #启动api
[root@server1 master.d]# netstat -antlp | grep :8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 5908/salt-api
curl -sSk https://localhost:8000/login -H 'Accept: application/x-yaml' -d username=saltapi \
-d password=westos -d eauth=pam #获取认证token
curl -sSk https://localhost:8000 -H 'Accept: application/x-yaml' -H 'X-Auth-Token:340091d44485630c694769a2e7d25748e1d33161' \
-d client=local -d tgt='*' -d fun=test.ping #推送任务;token值是上面命令获取的toekn值
(二).使用
vim /root/saltapi.py #加上要运行的内容
#print sapi.salt_state('server2','apache','')
print sapi.list_all_key()
python saltapi.py