Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)

一、Saltstack功能模块的介绍

1. salt-ssh简介

salt-ssh可以独立运行的,不需要minion端,使用sshpass进行密码交互,但它以串行模式工作,导致性能大幅度下降。

2. salt-syndic简介

syndic其实就是个代理,隔离master与minion,Syndic必须要运行在master上,再连接到另一个topmaster上。 Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster。topmaster并不知道有多少个minion。syndic与topmaster的file_roots和pillar_roots的目录要保持一致,不然会出错。

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第1张图片

3. salt-api简介

SaltStack 官方提供有REST API格式的 salt-api 项目,将使Salt与第三方系统集成变得尤为简单。

官方提供了三种api模块:rest_cherrypy、rest_tornado、rest_wsgi

二、salt-syndic的部署

实验准备:

server1——master(172.25.5.1)——salt-master、salt-syndic

server2和server3——minion(172.25.5.2和172.25.5.3)——salt-minion

server4——topmaster(172.25.5.4)——salt-master

安装软件

#server1中
yum install -y salt-syndic
#server4中
yum install -y salt-master

1. 将配置文件/etc/salt/master中有关mysql的参数注释

vim /etc/salt/master
#master_job_cache: mysql
#mysql.host: 'localhost'
#mysql.user: 'salt'
#mysql.pass: 'salt'
#mysql.db: 'salt'
#mysql.port: 3306
systemctl restart salt-master

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第2张图片

2. 在server4中设置被管理master的ip

vim /etc/salt/master
systemctl restart salt-master
netstat -antlp

3. 在server1的配置文件中写入topmaster的ip

vim /etc/salt/master
syndic_master: 172.25.5.4
systemctl restart salt-master
systemctl start salt-syndic

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第3张图片

4. server4中测试

server2和server3作为minion端,受server1管理,而server4(topmaster)管理master,也可以间接的项minion端推送

salt-key -L
salt-key -A    #添加key
salt '*' test.ping

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第4张图片

三、salt-ssh的部署

1. 使用【systemctl stop salt-minion】命令,关闭server2(minion)

2. 在server1中设置salt-ssh的roster文件

yum install -y salt-ssh
cd /etc/salt
vim roster
server2:
  host: 172.25.5.2
  user: root
  passwd: westos

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第5张图片

3.  测试连接

salt-ssh '*' test.ping
salt-ssh server2 -r "df"    #查看挂载信息
salt-ssh server2 -r "hostname"    #查看主机名

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第6张图片

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第7张图片

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第8张图片

四、salt-api的调用

将之前关闭的server2(minion)端开启【systemctl start salt-minion】

1. 安装salt-api软件

yum isntall -y salt-api

2. 创建公钥和私钥

cd /etc/pki/tls/
cd private
openssl genrsa 2048 > localhost.key
cd ../certs
make testcert

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第9张图片

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第10张图片

 3. 编写api文件,开启端口

cd /etc/salt/master.d/
vim api.conf 
rest_cherrypy:
  port: 8000
  ssl_crt: /etc/pki/tls/certs/localhost.crt
  ssl_key: /etc/pki/tls/private/localhost.key

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第11张图片

4. 用户认证并授权,创建用户

cd master.d
external_auth:
  pam:
    saltapi:
      - .*
      - '@wheel'
      - '@runner'
      - '@jobs'

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第12张图片

5. 重启master及api

systemctl restart salt-master
systemctl start salt-api
netstat -antlp | grep 8000

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第13张图片

6. 用户进行登陆,获得token

curl -sSk https://localhost:8000/login \
 -H 'Accept: application/x-yaml' \
 -d username=saltapi \
 -d password=westos -d eauth=pam

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第14张图片

7. 测试是否可以使用api控制server2和server3

curl -sSk https://localhost:8000 \
 -H 'Accept: application/x-yaml' \
 -H 'X-Auth-Token:4f041660e6f08cac934233853c671209a4301df3' \
 -d client=local \
 -d tgt='*' \
 -d fun=test.ping

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第15张图片

8. py文件用来推送

vim saltapi.py
def main():
    sapi = SaltAPI(url='https://localhost:8000',username='saltapi',password='westos')
    print sapi.list_all_key()
    sapi.deploy('server3','nginx.service')

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第16张图片

向server3推送

Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api)_第17张图片

使用【python saltapi.py】命令向server3推送,推送完毕后,我们可以在server3中看到nginx服务已经开启

你可能感兴趣的:(Linux之Saltstack功能模块的使用(salt-ssh、salt-syndic和salt-api))