=================================================================================
一、基础介绍
=================================================================================
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、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发送指令了。
4、Master与Minion的连接
(1)、SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。
(2)、minion与master之间的通信模式如下:
5、本次测试环境
IP地址 | 角色 | 系统环境 |
10.10.10.7 | Master | CentOS 6.8 |
10.10.10.3 | minion | CentOS 7.0 |
10.10.10.2 | Minion1 | CentOS 7.0 |
=================================================================================
二、SaltStack基础安装与配置
=================================================================================
1、salt-master安装
vim /etc/yum.repo.d/saltstack.repo
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
其次,安装rpm -Uvh epel-release-X-Y.rpm
各种系统的epel下载地址,http://mirrors.neusoft.edu.cn/epel/
· yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud -y
2、salt-minion安装
同理,安装资源路径
· yum install salt-minion -y
3、salt-master和salt-minion配置
配置前准备,所有节点hosts文件,并修改对应主机名
10.10.10.7 saltstack.master.com
10.10.10.3 saltstack.minion.com
10.10.10.2 saltstack.minion1.com
salt-master:
vim /etc/salt/master
interface: 10.10.10.7
auto_accept: True
启动master,service salt-master start
salt-minion:
vim /etc/salt/minion
master: saltstack.master.com
id: minion-10-130-87-151(授权的唯一标识)
#在配置文件末尾加入下面内容,每隔5分钟自动同步master配置,效果等同于在客户端执行salt-call state.highstate或在server端执行 salt '*'state.highstate
schedule:
highstate:
function: state.highstate
minutes: 5
启动minion,systemctl start salt-minion
4、SaltStack简单使用
## 查看当前的salt key信息
# salt-key -L
## 测试被控主机的连通性
# salt '*' test.ping
## 远程命令执行测试
# salt '*' cmd.run 'uptime'
## 根据被控主机的grains信息进行匹配过滤
# salt -G 'os:Centos' test.ping
## 显示被控主机的操作系统类型
# salt '*' grains.item os
## 远程代码执行测试
# salt '*' cmd.exec_code python 'import sys; print sys.version'
##服务器端 写sls 模板(我也不知道 该不该这样叫) 他的默认路径在 /srv/salt/ 下 没有就新建目录
然后新建一个top.sls 就跟puppet的入口文件 site.pp 类似
这里我讲解下 这个内容
base: 大家都这样取 因为只是一个代号吧 我也没改过
” : 这个引号内的是对象 说起匹配对象 你懂的 什么组 正则 类别都行 上面讲过的
- fc7.sc 这样的东西是指资源文件是fc7目录下的sc.sls 这样的格式 这个一定得记住 好像还有一种方法 会用到init.sls 擦这个真忘记了
下面的fc7.pack fc7.fc7 意思 都一样 #注意名称只是代号而已 你懂的
然后我们看fc7目录下的资源文件吧
讲解 我写图上了
这个就简单的实现 安装包(必须是yum能安装的) 服务 文件的最简单的管理了
我这里只是简单的演示 因为这个都是我测试过的 所以我没把客户端的结果给贴出来(客户端是30s抓一次) 当然也可以主动推
salt ‘*’ state.highstate
核心技术就是我上面说的 saltstack 管理这块 有很多模板 很多参数的
这里要说的是 如果以后你上线了 必须得规划好 准备用saltstack管些什么东西 然后再分类 什么初始化 什么服务 什么包 什么文件等等这些
初始化一般是进行一个简单的初始化
文件管理这块可以把不是经常变的 放到一起管理
包的话 可以细分成一些基础包 服务包这类
服务的话 一般跟该服务的配置文件 放到一起 需要watch 然后reload的
先写这么多吧 下次吧 资源管理那块 详细再弄下