目录
一、salt-ssh
1、salt-ssh简介
- salt-ssh可以独立运行的,不需要minion端。
- salt-ssh 用的是sshpass进行密码交互的。
- 以串行模式工作,性能下降。
2、salt-ssh配置
- 安装salt-ssh:
yum install -y salt-ssh
配置roster文件,默认的本地路径是 /etc/salt/roster
:
server2:
host: 172.25.254.52
user: root
passwd: redhat
server3:
host: 172.25.254.53
user: root
passwd: redhat
- 测试:
salt-ssh '*' test.ping -i ##询问密码加 -i
vim ~/.ssh/config
##修改
StrictHostKeyChecking no
二、salt-syndic
1、salt-syndic简介
- 如果大家知道zabbix proxy的话那就很容易理解了,syndic其实就是个代理,隔离master与minion。
- Syndic必须要运行在master上,再连接到另一个topmaster上。
- Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster。
- topmaster并不知道有多少个minion。
- syndic与topmaster的file_roots和pillar_roots的目录要保持一致。
2、salt-syndic配置
- topmaster端:
把server4作为topmaster:
vim /etc/salt/master
##修改
order_masters: True ##作为顶级master
systemctl start salt-master
salt-key -L ##查看下级master的连接授权
salt-key -A ##同意所有下级连接,-A表示同意所有,-a可以指定同意哪一个下级
- 下级master端:
yum install -y salt-syndic
vim /etc/salt/master
##写入
syndic_master: 172.25.254.54 #指向topmaster
systemctl restart salt-master
systemctl start salt-syndic
- 在server4上授权server1:
- 测试:
在server4上salt '*' test.ping
,显示server2和server3上的信息。即minion上的数据传到master,master再通过salt-syndic传到topmaster。
三、salt-api
1、salt-api简介
-
SaltStack 官方提供有REST API格式的 salt-api 项目,将使Salt与第三方系统集成变得尤为简单。
-
官方提供了三种api模块:
- rest_cherrypy
- rest_tornado
- rest_wsgi
-
官方链接:https://docs.saltstack.com/en/latest/ref/netapi/all/index.html#all-netapi-modules
2、salt-api配置
- 安装salt-api:
yum install -y salt-api python-cherrypy
- 生成证书:
cd /etc/pki/tls/private
openssl genrsa 1024 > localhost.key
cd /etc/pki/tls/certs
make testcert ##根据提示填写相关信息即可
- 创建用户认证文件:
useradd saltdev
passwd saltdev
vim /etc/salt/master.d/auth.conf
##写入
external_auth:
pam:
saltapi:
- .*
- '@wheel'
- '@runner'
- 激活
rest_cherrypy
模块:
vim /etc/salt/master.d/cert.conf
rest_cherrypy:
port: 8000
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/private/localhost.key
- 重启服务:
systemctl restart salt-master
systemctl start salt-api
3、salt-api使用
- 获取认证token:
# curl -sSk https://localhost:8000/login \
-H 'Accept: application/x-yaml' \
-d username=saltdev \
-d password=saltdev \
-d eauth=pam
- 推送任务:
# curl -sSk https://localhost:8000 \
-H 'Accept: application/x-yaml' \
-H 'X-Auth-Token: 77e2b1de04b0dbc0a4bf11900712b83e4fa2c241'\ ##此处token为上面获得的token
-d client=local \
-d tgt='*' \
-d fun=test.ping