SaltStack的官方文档:https://www.saltstack.com/
Saltstack的中文文档:http://docs.saltstack.cn/
SaltStack安装包的下载地址:http://repo.saltstack.com/
一、基础介绍
1、简介
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func。SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。
通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。
2、特性
(1)、部署简单、方便;
(2)、支持大部分UNIX/Linux及Windows环境;
(3)、主从集中化管理;
(4)、配置简单、功能强大、扩展性强;
(5)、主控端(master)和被控端(minion)基于证书认证,安全可靠;
(6)、支持API及自定义模块,可通过Python轻松扩展。
3、说明
Saltstack 比 Puppet 出来晚几年,是基于Python 开发的,也是基于 C/S 架构,服务端 master 和客户端 minions ;Saltstack 和 Puppet 很像,可以说 Saltstatck 整合了 Puppet和Chef的功能,更加强大,更适合大规模批量管理服务器,并且它比Puppet 更容易配置。
三大功能: 远程命令执行,配置管理(服务,文件,cron,用户,组),云管理。
支持系统:大多数都支持,windows 上不支持安装 master。
4、Master与Minion认证
(1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。
(2)、master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。
5、Master与Minion的连接
SaltStack的master启动后默认监听4505和4506两个端口。
4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。
二、实验环境(rhel7.3版本)
1、selinux和firewalld状态为disabled
2、各主机信息如下:
主机 | ip |
---|---|
server1(master) | 172.25.83.1 |
server2(minion) | 172.25.83.2 |
server3(minion) | 172.25.83.3 |
物理机(用来共享软件包) | 172.25.83.83/172.25.254.83 |
3、在三个节点(server1,server2和server3)上:配置yum源(这里只演示server1的配置方法,server2和server3的配置方法同server1)
<1>源端下载2018安装包到物理机/var/www/html下,对该目录增加r和x的权限(如果不增加r和x的权限,会报403的错误),并执行命令生成repodata目录(如果不生成该目录,会报错:172.25.83.83/2018/repodata/repod.xml文件找不到):
[root@foundation83 ~]# cd /var/www/html/
[root@foundation83 html]# ls
2018 4.0 docker index.html rhel6.5 rhel7.0 rhel7.3
[root@foundation83 html]# ll -d 2018/
drwx------ 3 root root 4096 Mar 29 03:17 2018/
[root@foundation83 html]# chmod go+rx 2018/ #给2018这个目录增加r和x的权限
[root@foundation83 html]# ll -d 2018/
drwxr-xr-x 3 root root 4096 Mar 29 03:17 2018/
[root@foundation83 html]# createrepo --update /var/www/html/2018/ #生成2018目录下需要的repodata目录
- 如果不生成repodata目录,会报下面的错
- 查看镜像是否共享成功
<2>修改yum源配置文件
[root@server1 ~]# vim /etc/yum.repos.d/dvd.repo
[dvd]
name=rhel7.3
baseurl=http://172.25.83.83/rhel7.3
gpgcheck=0
enabled=1
[salt] #增加slat这块内容
name=saltstack
baseurl=http://172.25.83.83/2018
gpgcheck=0
<3>查看yum源与安装包
三、SaltStack安装与配置
1、下载并配置salt
#配置server1
[root@server1 ~]# yum install salt-master.noarch -y
[root@server1 ~]# systemctl start salt-master
#配置server2
[root@server2 ~]# yum install salt-minion.noarch -y
[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion #注意格式,顶格写,冒号与ip之间空一格
17 master: 172.25.83.1
[root@server2 salt]# systemctl start salt-minion
#配置server3
[root@server3 ~]# yum install salt-minion.noarch -y
[root@server3 ~]# cd /etc/salt/
[root@server3 salt]# vim minion #注意格式,顶格写,冒号与ip之间空一格
17 master: 172.25.83.1
[root@server3 salt]# systemctl start salt-minion
示图:server1端(master)启动salt-master服务之后,4505、4506端口开启
示图:server2端和server3端(minion)启动salt-minion服务之后,会和172.25.83.1:4506建立一个连接
注意:
minion端开启服务后,会生成minion_id文件,修改 IP 或 hostname 时,必须删除该文件,重启服务后才可生效。
查看并添加salt-key
[root@server1 ~]# salt-key -L
[root@server1 ~]# salt-key -A
2、查看相关信息
1.下载并查看master和minion端的tree
[root@server1 ~]# yum install tree -y
#server2端和server3端安装tree命令的操作同上
#在server1端
[root@server1 salt]# cd pki/master/
[root@server1 master]# ls
master.pem master.pub minions minions_autosign minions_denied minions_pre minions_rejected
[root@server1 master]# md5sum master.pub
37ff18df4ded4f5a8b7fe4be304aa992 master.pub
#在server2端
[root@server2 salt]# cd pki/minion/
[root@server2 minion]# ls
minion_master.pub minion.pem minion.pub
[root@server2 minion]# md5sum minion_master.pub #与master端的master.pub文件的md5值相同
37ff18df4ded4f5a8b7fe4be304aa992 minion_master.pub
[root@server2 minion]# md5sum minion.pub
e8962ff1f2006308471d0a88df24ebb9 minion.pub
#在server3端
[root@server3 salt]# cd pki/minion/
[root@server3 minion]# ls
minion_master.pub minion.pem minion.pub
[root@server3 minion]# md5sum minion_master.pub #与master端的master.pub文件的md5值相同
37ff18df4ded4f5a8b7fe4be304aa992 minion_master.pub
[root@server3 minion]# md5sum minion.pub
15f8e169aa62922bf11c1a9c07ea0dae minion.pub
2.查看server1(mater端)4505、4506端口运行情况:
[root@server1 salt]# yum install lsof -y
3.检测salt服务:
[root@server1 ~]# salt '*' test.ping #调用test模块的ping方法进行测试
[root@server1 ~]# salt '*' cmd.run hostname #调用cmd模块的run方法,执行hostname命令
[root@server1 ~]# salt '*' cmd.run df #调用cmd模块的run方法,执行df命令
4.在server1端(master端)查看python端口进程
[root@server1 ~]# yum list python-*
[root@server1 ~]# yum install python-setproctitle.x86_64 -y
[root@server1 ~]# systemctl restart salt-master #必须重启salt-master服务才能生效
[root@server1 ~]# ps ax