SlatStack原理:
SaltStack 是一种基于 C/S 架构的服务器基础架构集中化管理平台,管理端称为 Master,客户端称为 Minion;SaltStack 具备配置管理、远程执行、监控等功能;SaltStack 本身是基于 Python 语言开发实现,结合了轻量级的消息队列软件 ZeroMQ 与 Python 第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack 和 PyYAML 等)构建。 通过部署 SaltStack 环境,运维人员可以在成千上万台服务器上做到批量执行命令,根据不同的业务特性进行配置集中化管理、分发文件、采集系统数据及软件包的安装与管理等。
SlatStack特性:
- 部署简单、管理方便;
- 支持大部分的操作系统,如 Unix/Linux/Windows 环境;
- 架构上使用C/S管理模式,易于扩展;
- 配置简单、功能覆盖广;
- 主控端(Master)与被控端(Minion)基于证书认证,确保安全可靠的通信;
- 支持 API 及自定义 Python 模块,轻松实现功能扩展。
SlatStack常用模块:
- pkg模块---包管理,包括增删更新
- file模块---管理文件操作,包括同步文件、设置权限和所属用户组、删除文件等操作
- cmd模块---在minion上执行命令和脚本
- user模块---管理系统账户操作
- service模块---管理系统服务操作
- cron模块---管理cron服务操作
SlatStack三大组件:
Grains:静态组件,minion启动时收集信息。 Pillar:动态组件,定义变量、信息,密码。 State:核心功能,通过制定好的sls文件对被控主机进行管理。
SlatStack工作模式:
1、slatstack通信模式
- Minion 是 SaltStack 需要管理的客户端安装组件,会主动去连接 Master 端,并从 Master 端得到资源状态信息,同步资源管理信息。
- Master 作为控制中心运行在主机服务器上,负责 Salt 命令运行和资源状态的管理。
- ZeroMQ 是一款开源的消息队列软件,用于在 Minion 端与 Master 端建立系统通信桥梁。
- Daemon 是运行于每一个成员内的守护进程,承担着发布消息及通信端口监听的功能。
2、slatstack执行原理
- Minion 是 SaltStack 需要管理的客户端安装组件,会主动去连接 Master 端,并从 Master 端得到资源状态信息,同步资源管理信息。
- Master 作为控制中心运行在主机服务器上,负责 Salt 命令运行和资源状态的管理。
- Master 上执行某条指令通过队列下发到各个 Minions 去执行,并返回结果。
SlatStack部署
实验拓扑:
实验环境:
| 角色 | 主机名| 操作系统 |IP地址 | -------- | -------- | -------- | | master | master.saltstack.com | CentOS7 |192.168.37.128 | minion | web01.saltstack.com | CentOS7|192.168.37.130 | minion | web02.saltstack.com| CentOS7 |192.168.37.131
部署过程:
一、三台服务器的准备工作 1、分别修改主机名
vim /etc/hostsname #master主机
master.saltstack.com
vim /etc/hostsname #minion主机
web01.saltstack.com
vim /etc/hostsname
web02.saltstack.com
2、修改hosts文件(三台相同)
192.168.37.128 master.saltstack.com 192.168.37.130 web01.saltstack.com 192.168.37.131 web02.saltstack.com
3、安装epel源
yum install -y epel-release
4、重启服务后关闭防火墙及安全功能
init 6 systemctl stop firewalld.service setenforce 0
二、master控制器上安装salt 1、安装salt包
yum install -y salt-master
2、修改主配置文件
vim /etc/salt/master
//15行
interface: 192.168.37.128 #监听地址
//215行
auto_accept: True #避免要运行salt-key来确认证书
//416行
file_roots:
base:
- /srv/salt #saltstack文件根目录位置,放置管理文件
//710行
nodegroups: #定义管理组
group1: 'web01.saltstack.com'
group2: 'web02.saltstack.com'
//552行
pillar_opts: True #开启pillar动态数据,同步文件功能
//529行
pillar_roots: #pillar主目录
base:
- /srv/pillar
3、查看配置文件中修改内容(注意:配置文件中内容原先全部注释掉,只有修改过的才会过滤出来)
cat /etc/salt/master | grep -v ^$ | grep -v ^#
4、创建配置文件中目录
mkdir /srv/salt mkdir /srv/pillar
5、开启服salt-master务
systemctl start salt-master.service netstat -ntap | egrep '4505|4506'
三、minion被控制端上安装salt 1、安装salt包
yum -y install salt-minion
2、修改配置文件
vim /etc/salt/minion
//16行
master: 192.168.37.128 #指定主控端IP
//78行
id: web01.saltstack.com #被控制端主机名,另一台需改此处
3、开启salt-minion服务
systemctl start salt-minion.service
四、master上演示控制状态 1、测试与被控制端的通信状态
salt '*' test.ping
2、远程执行命令
salt '*' cmd.run 'df -h'
3、查看master上接受的客户端
salt-key
4、查看被控制主机上grains所有值
salt 'web01.saltstack.com' grains.items salt 'web01.saltstack.com' pillar.items
批量部署安装Apache
1、引导脚本 vim /etc/srv/salt/top.sls
base: #*--表示所有客户端执行Apache模块
'*':
- apache #调用Apache文件
2、安装apache脚本 vim /srv/salt/apache.sls
apache-service: #apache-service是自定义id名
pkg.installed: #pkg.installed为安装包函数
- names:
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
3、重启服务
systemctl restart salt-master.service
4、执行安装命令
salt '*' state.highstate
5、最后,查看被控制端服务器apache安装是否成功