SaltStack简介
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块构建。通过部署SaltStack,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。
SaltStack 具有以下特性,帮助企业 IT 更好的实现系统批量管理:
- 部署简单、管理方便;
- 支持大部分的操作系统,如 Unix/Linux/Windows 环境;架构上使用C/S管理模式,易于扩展;
- 配置简单、功能覆盖广;
- 主控端(Master)与被控端(Minion)基于证书认证,确保安全可靠的通信;
- 支持 API 及自定义 Python 模块,轻松实现功能扩展;
SaltStack架构
SaltStack 采用 C/S 的架构,SaltStack 客户端(Minion)在启动时,会自动生成一套密钥,包含私钥和公钥。之后将公钥发送给SaltStack服务器端(Master),服务器端验证并接受公钥,以此来建立可靠且加密的通信连接。同时通过消息队列 ZeroMQ 在客户端与服务端之间建立消息发布连接。
SaltStack部署
SaltStack的部署是比较简单的,本文准备3台机器(1台Master,2台Minion)用来部署SaltStack集群:
Host | IP | OS |
Master1 | 172.19.225.81 | Centos7 |
Minion1 | 172.19.225.82 | Centos7 |
Minion2 | 172.19.225.83 | Centos7 |
安装SaltStack可以在http://repo.saltstack.com/yum/redhat/查询需要的版本,先下载Yum源配置进行安装,本文将安装2018.3版本:
# wget http://repo.saltstack.com/yum/redhat/salt-repo-2018.3-1.el7.noarch.rpm # rpm -ivh salt-repo-2018.3-1.el7.noarch.rpm |
安装SaltStack Master
在Master节点上安装salt-master:
# yum install -y salt-master |
安装成功后可以查询:
# salt-master --version salt-master 2018.3.2 (Oxygen) |
salt-master默认的配置文件是/etc/salt/master,目前可以不做修改直接启动服务:
# service salt-master start |
安装SaltStack Minion
在Minion节点上安装salt-minion:
# yum install -y salt-minion |
安装成功后可以查询:
# salt-minion--version salt-minion 2018.3.2 (Oxygen) |
salt-master默认的配置文件是/etc/salt/minion,需要指定Master的地址:
id: Minion1 or Mionion2 #设置Minion的Hostname master: - Master1 #设置Master的Hostname |
Salt命令
在安装完SaltStackMaster和Minion后,SaltStack提供了许多命令, 这些命令之间的功能有一些重要的交叉,它们的主要功能如下。
salt-master
:这是主人的守护进程。 您可以直接使用此命令或更通常通过init脚本或服务文件启动主服务。salt-minion
:同样,这是Minion的守护进程,用于与主沟通和执行命令。 大多数用户也将从init脚本或服务文件启动。salt-key
:该工具用于管理马仔公共密钥。 此工具用于查看当前密钥并对由未来密钥发送的公钥做出决定。它还可以生成键以放在带外带外。salt
:此命令是用来瞄准Minion才能运行即席执行模块。 这是用于远程执行的主要工具。salt-ssh
:该命令允许您使用SSH作为替代ZeroMQ的传输机制。salt-run
:该命令用于运行在主服务器上获得亚军模块。salt-call
:此命令用来直接在您登录到一个仆从运行执行模块。 这通常用于通过绕过主设备来调试有问题的命令。salt-cloud
:该命令用于控制和来自许多不同的供应商提供的云资源。 新的Minion可以很容易地启动和启动。
还有一些其他的命令,以及像salt-api
, salt-cp
,和salt-syndic
,这是不使用这么频繁。
配置证书
SaltStack的Master和Minion都运行成功后,因为SaltStack是使用SSL签证的方式进行安全认证,所以接下来就需要进行证书的管理配置。
所以需要确认Master和Minion通信正常,包括TCP端口4405(Zero消息发布默认端口)和4406(SaltStack消息接受默认端口),如果有防火墙限制,可以在修改salt-master的配置项:
# The tcp port used by the publisher: publish_port: 4505
# The port used by the communication interface. The ret (return) port is the # interface used for the file server, authentication, job returns, etc. ret_port: 4506 |
salt-minion在第一次启动时,会在/etc/salt/pki/minion/下自动生成minion.pem(private key), minion.pub(public key),然后将minion.pub发送给salt-master。
salt-master在接收到minion的public key后,在Master节点可以通过salt-key命令查询:
# salt-key -L Accepted Keys: Denied Keys: Unaccepted Keys: Minion1 Minion2 Rejected Keys: |
可以看到salt-master已经收到key,不过还是处于未接受的状态,接下来执行同意:
# salt-key -A -y The following keys are going to be accepted: Unaccepted Keys: Minion1 Minion2 Key for minion Minion1 accepted. Key for minion Minion2 accepted. |
这样一来就完成了证书配置,在salt-master的/etc/salt/pki/master/minions下的将会存放以minion id命名的public key, 然后master就能对minion发送指令了:
# salt '*' test.ping Minion1: True Minion2: True |
参考
- https://www.jianshu.com/p/624b9cf51c64
- https://blog.youkuaiyun.com/ubuntu64fan/article/details/80927212
- https://blog.youkuaiyun.com/fanren224/article/details/73431542
- https://www.howtoing.com/an-introduction-to-saltstack-terminology-and-concepts/