saltstack简单搭建:

一、salt介绍

saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统。

二 、salt强大吗

系统管理员日常会进行大量的重复性操作,例如安装软件,修改配置文件,创建用户,批量执行命令等等。如果主机数量庞大,单靠人工维护实在让人难以忍受。


早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是1、系统配置管理,2、远程执行命令,因此诞生了很多开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些软件擅长维护系统状态或方便的对大量主机进行批量的命令执行

salt灵活性强大,可以进行大规模部署,也能进行小规模的系统部署。salt的设计架构适用于任意数量的服务器,从少量本地网络系统到跨越数个数据中心,拓扑架构都是c/s模型,配置简单

不管是几台、几百台、几千台服务器,都可以使用salt在一个中心节点上进行管控,灵活定位任意服务器子集来运行命令。

Salt是python编写的,支持用户通过python自定义功能模块,也提供了大量的python API接口,用户可以根据需要进行简单快速的扩展


salt部署基本架构

在安装salt之前,先理解salt架构中各个角色,主要区分是salt-master和salt-minion,顾名思义master是中心控制系统,minion是被管理的客户端。

离线SaltStack 升级 saltstack部署架构_配置文件

1、 服务器环境部署:

离线SaltStack 升级 saltstack部署架构_python_02


salt软件包需要epel源的支持,需要提前安装好

国内源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

扩展源:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
salt

salt软件包的epel源:

yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

yum clean all #清空缓存
yum makecache #生成yum缓存

2、为了方便关闭防火墙与selinux

[root@master ~]# systemctl  stop firewalld 
[root@master ~]# setenforce 0

3、安装Saltstack

Master节点:
在10.0.120.70主机上安装salt-master

[root@master ~]# yum install -y  salt-master

默认监听2个端口:
4505:publish_port 提供远程命令发送功能
4506:ret_port 提供认证,文件服务,结果收集等功能

为确保客户端和服务器可以通过两个端口正常通信,所以这里提前关闭了防火墙。

4、设置配置文件(Master节点)

默认/etc/salt/master这个配置文件全部都是注释的,我们可以需要自己设置我们想要的功能。在修改配置文件前,先备份一下这个文件是个好习惯。

vim /etc/salt/master

在配置文件中添加一下几行(注意配置文件中冒号后有空格不要删除):
interface: 0.0.0.0            //#绑定到本地的ip地址
publish_port: 4505        //master的管理端口
user: root                      //salt运行的用户,影响到salt的执行权限
worker_threads: 5        //#salt运行线程数,线程越多处理速度越快,不要超过cpu个数
ret_port: 4506             //#执行结果返回端口
pidfile: /var/run/salt-master.pid   //pid文件位置
auto_accept: False       // 自动接收秘钥
log_file: /var/log/salt/master    //日志文件地址

// 过滤出我们的配置,检查是否正确

[root@master ~]# grep -v ^# /etc/salt/master | grep -v ^$ 
interface: 0.0.0.0
publish_port: 4505
user: root
worker_threads: 5
ret_port: 4506
pidfile: /var/run/salt-master.pid
auto_accept: False    
log_file: /var/log/salt/master

master暂时就配置到这里

slaver节点:

5、客户机安装

[root@minion~]# yum install -y salt-minion

6、修改配置slaver端配置文件:

salt-minion的配置文件是/etc/salt/minion

[root@minion ~]#  vim /etc/salt/minion
在配置文件中添加一下几行(注意配置文件中冒号后有空格不要删除):
master: 10.0.120.70          // master的ip    
master_port: 4506            //#执行结果返回端口
user: root                    //salt运行的用户,影响到salt的执行权限
id: 10.0.120.111                  //minion的ip
acceptance_wait_time: 10         // 等待时间
log_file: /var/log/salt/minion   //日志文件地址

过滤出我们的配置,检查是否正确

[root@sxd-os7 ~]# grep -v "^#" /etc/salt/minion |grep -v "^$" 
master: 10.0.120.70 
master_port: 4506
user: root
id:10.0.120.111
acceptance_wait_time: 10
log_file: /var/log/salt/minion

7、分别启动salt-master(10.0.120.70)

[root@master~]# systemctl start salt-master

和salt-minion(10.0.120.111)

[root@minion~]# systemctl start salt-minion

在master上接收minion秘钥

8、查看秘钥Master节点:

在minion启动后连接master会请求master为其签发证书,等待证书签发完成后,master可以信任minion,并且minion和master之间的通信是加密的。

在master上执行

[root@sxd-xfce ~]# salt-key -L //会看到以下信息

离线SaltStack 升级 saltstack部署架构_配置文件_03


此时还没有真正建立关系,确定关系。

在Master节点:

[root@master~]# salt-key -a 10.0.120.111  // 接收10.0.120.111(slaver节点)的秘钥,建立关系
Proceed? [n/Y] y

离线SaltStack 升级 saltstack部署架构_配置文件_04

秘钥接收完成后,就可以执行第一条salt啦

远程安装nginx测试

在Master节点:

[root@master ~]# salt '10.0.120.111' pkg.install "nginx"

图例:

离线SaltStack 升级 saltstack部署架构_python_05


安装成功了!!!


常见命令:Salt-key

只有Master接受了Minion Key后,才能进行管理。具体的认证命令为salt-key常用的有如下命令。

另外一个salt-slave 在配置一个 ,注意里面到master和salaveIP地址
中间到* 代表所有的机器
salt-cp ‘*’ 本地文件 /opt/ // 将本地文件发给所有minion的opt目录下

[root@master tmp]# salt-cp '*' 1.txt /opt/
[root@sxd-xfce ~]# salt-key -L
Accepted Keys:  #已经接受的key
Denied Keys:    #拒绝的key
Unaccepted Keys:#未加入的key
Rejected Keys:#吊销的key

#常用参数
-L #查看KEY状态
-A #允许所有
-D #删除所有
-a #认证指定的key
-d #删除指定的key
-r #注销掉指定key(该状态为未被认证)


#在master端/etc/salt/master配置

auto_accept: True #如果对Minion信任,可以配置master自动接受请求


#列出当前所有的key

[root@sxd-xfce ~]# salt-key 
Accepted Keys:
10.0.120.111
Denied Keys:
Unaccepted Keys:
Rejected Keys:

#添加指定minion的key

[root@sxd-xfce ~]#  salt-key  -a 10.0.120.111(Slaver节点ip) -y

#添加所有minion的key

[root@sxd-xfce ~]# salt-key  -A  -y

#删除指定的key

[root@sxd-xfce ~]#  salt-key -d 10.0.120.111(Slaver节点ip) -y

#删除所有的key

[root@sxd-xfce ~]#  salt-key -D -y