saltstack简介:

SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。

通过部署SaltStack,我们可以在成千万台服务器上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

saltstack组件:

1、Salt Master:中心管理系统。此系统用于将命令和配置发送到在受管系统上运行的Salt minion。
自动化运维之saltstack_第1张图片
2、Salt Minions:被管理的系统。 该系统运行Salt minion,它从Salt master接收命令和配置。
自动化运维之saltstack_第2张图片
3、Execution Modules:从命令行针对一个或多个受管系统执行临时命令。 对以下管理场景有帮助:
● 实时监控,状态和盘点
● 一次性命令和脚本
● 部署关键更新
自动化运维之saltstack_第3张图片
4、Formulas (States):一种系统配置的声明性或命令式表示。
自动化运维之saltstack_第4张图片
5、Grains:系统变量。 Grains是有关底层受管系统的静态信息,包括操作系统,内存和许多其他系统属性。 您还可以为任何系统定义自定义grains。
自动化运维之saltstack_第5张图片
6、Pillar:用户定义的变量。 这些安全变量被定义并存储在Salt Master中,然后使用目标“分配”给一个或多个minions。 pilla数据存储诸如端口,文件路径、配置参数和密码之类的值。
自动化运维之saltstack_第6张图片
7、Top File:将formulas和pilla数据与Salt minions匹配。
自动化运维之saltstack_第7张图片
8、Runners:在Salt master上执行的模块,用于执行支持任务。 Salt runners报告作业状态、连接状态、从外部API读取数据,查询连接的Salt minions等。例如,Orchestrate运行器协调跨多个系统的配置部署。
自动化运维之saltstack_第8张图片
9、Returners:将Salt minions返回的数据发送到另一个系统,例如数据库。 Salt Returners可以在Salt minion或Salt master上运行。
自动化运维之saltstack_第9张图片
10、Reactor:在SaltStack环境中发生特定事件时触发相应的响应。
自动化运维之saltstack_第10张图片
11、Salt SSH:在没有Salt minion的系统上通过SSH运行Salt命令。
自动化运维之saltstack_第11张图片

saltstack部署:

环境如下:

服务器 IP地址 角色 saltstack软件
Centos7 192.168.71.129 master salt-master
Centos7 192.168.71.130 minion salt-minoin
Centos7 192.168.71.131 minion salt-minoin

一、管理端配置

1、修改服务器主机名

master管理端:
[root@bogon ~]# hostnamectl set-hostname master.saltstack.com
minion被管理端1:
[root@bogon ~]# hostnamectl set-hostname web01.saltstack.com
minion被管理端2:
[root@bogon ~]# hostnamectl set-hostname web02.saltstack.com
重启服务器生效主机名或使用bash命令


2、修改hosts文件解析

vim /etc/hosts #每天都需要添加hosts解析文件
192.168.71.129 master.saltstack.com
192.168.71.130 web01.saltstack.com
192.168.71.131 web02.saltstack.com


3、管理端安装salt-master

yum install epel-release -y #要先安装epel源
yum install salt-master -y


4、修改salt-master配置文件

[root@master ~]# vim /etc/salt/master #配置文件位置
15行 interface: 192.168.71.129 #监听地址改成主机IP
215行 auto_accept: True #证书认证
416行 file_roots: #开启站点目录
417行 base:
418行 - /srv/salt
552行 pillar_opts: True #开启pillar功能,同步文件功能
529行 pillar_roots: #开启pillar站点
530行 base:
531行 - /srv/pillar
710行 nodegroups:
711行 group1: 'web01.saltstack.com' #被管理端主机名
712行 group2: 'web02.saltstack.com'


5、检查修改的配置文件正确性

自动化运维之saltstack_第12张图片


6、创建配置文件中对应的目录

[root@master ~]# mkdir /srv/salt
[root@master ~]# mkdir /srv/pillar


7、开启服务

[root@master ~]# systemctl start salt-master.service #开启服务
[root@master ~]# netstat -ntap | egrep '4505|4506' #检查端口,egrep匹配正则表达式
tcp 0 0 0.0.0.0:4505 0.0.0.0: LISTEN 36663/python
tcp 0 0 0.0.0.0:4506 0.0.0.0:
LISTEN 36676/python

二、被管理端配置

1、安装salt-minion

[root@web01 ~]# yum install epel-release -y #安装epel源
[root@web01 ~]# yum install salt-minion -y #安装salt-minion


2、修改配置文件

[root@web01 ~]# vim /etc/salt/minion
16行 master: 192.168.175.129 #指向管理端地址
78行 id: web01.saltstack.com #自身主机名

3、开启服务

[root@web01 ~]# systemctl start salt-minion.service

三、群集部署初体验

1、在管理端检测被管理主机状态

自动化运维之saltstack


2、编写安装apache任务文件

[root@master ~]# vim /srv/salt/top.sls   #文件以sls结尾

自动化运维之saltstack_第13张图片

[root@master ~]# vim /srv/salt/apache.sls

自动化运维之saltstack_第14张图片

4、管理端重启服务

[root@master salt]# systemctl restart salt-master.service

5、执行部署的任务

[root@master salt]# salt '*' state.highstate #针对所有主机执行


6、执行结果

自动化运维之saltstack_第15张图片


7、被管理端检查部署情况

自动化运维之saltstack_第16张图片