CentOS 7 SaltStack安装部署
SaltStack简介及特性
SaltStack 是一种基于 C/S 架构的服务器基础架构集中化管理平台,管理端称为 Master,客户端称为 Minion。SaltStack 具备配置管理、远程执行、监控等功能,一般可以理解为是简化版的 Puppet 和加强版的 Func。
SaltStack 本身是基于 Python 语言开发实现,结合了轻量级的消息队列软件 ZeroMQ 与 Python 第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack 和 PyYAML 等)构建。
通过部署 SaltStack 环境,运维人员可以在成千上万台服务器上做到批量执行命令,根据不同的业务特性进行配置集中化管理、分发文件、采集系统数据及软件包的安装与管理等。
SaltStack工作原理
SaltStack 采用 C/S 结构来对云环境内的服务器操作管理及配置管理。为了更好的理解它的工作方式及管理模型,本章将通过图形方式对其原理进行阐述。
SaltStack 客户端(Minion)在启动时,会自动生成一套密钥,包含私钥和公钥。之后将公钥发送给服务器端,服务器端验证并接受公钥,以此来建立可靠且加密的通信连接。同时通过消息队列 ZeroMQ 在客户端与服务端之间建立消息发布连接。
命令执行
原理图说明:
Minion 是 SaltStack 需要管理的客户端安装组件,会主动去连接 Master 端,并从 Master 端得到资源状态信息,同步资源管理信息。
Master 作为控制中心运行在主机服务器上,负责 Salt 命令运行和资源状态的管理。
Master 上执行某条指令通过队列下发到各个 Minions 去执行,并返回结果。
SaltStack部署
部署规划
host | IP | role |
---|---|---|
node-01 | 192.168.57.130 | master |
node-02 | 192.168.57.132 | minion |
node-03 | 192.168.57.133 | minion |
环境准备
实验的三台机器分别对hosts文件进行修改。这里我只写了node-01。
[root@node-01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.57.130 node-01
192.168.57.132 node-02
192.168.57.133 node-03
[root@node-01 ~]#
添加SaltStack源
分别对三台机器添加源。
sudo rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo
安装SaltStack
node-01执行
yum -y install salt-master salt-minion
node-02、node-03执行
yum -y install salt-minion
配置SaltStack
node-01修改vi /etc/salt/master
第16行
interface: 192.168.57.130
node-02、node-03修改第16行,指定master地址为node-01
master: 192.168.57.130
重启SaltStack
node-01 执行命令
systemctl restart salt-master
systemctl enable salt-master
node-02、node-03执行命令
systemctl restart salt-minion
systemctl enable salt-minion
列出master上的密钥及认证
[root@node-01 ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
master
node-02
node-03
Rejected Keys:
[root@node-01 ~]# salt-key -a node-02
The following keys are going to be accepted:
Unaccepted Keys:
node-02
Proceed? [n/Y] y
Key for minion node-02 accepted.
[root@node-01 ~]# salt-key -a node-03
The following keys are going to be accepted:
Unaccepted Keys:
node-03
Proceed? [n/Y] y
Key for minion node-03 accepted.
验证
检查存活主机
[root@node-01 ~]# salt '*' test.ping
node-03:
True
node-02:
True
[root@node-01 ~]#