Saltstack 快速上手

环境:CentOS 7.5 Python 2.7.5

1.Saltstack 介绍

Saltstack 是基于 Python 开发的一款方便运维人员管理大批量服务器的运维软件,它是一种基于 C/S 架构的服务器基础架构集中化管理平台。管理端称为 Master ,客户端为 Minion。Saltstack 和 Puppet 很像,可以说 Saltstatck 整合了 Puppet 和 Chef 的功能,更加强大,更适合大规模批量管理服务器,并且它比 Puppet 更容易配置。

主要功能:远程命令执行、配置管理(服务,文件,cron,用户,组)、云管理。

2.准备工作

因为是服务端和客户端,所以至少需要两台机器,两台机器都要关闭防火墙!(一定要关!)

附上 CentOS 7.5 关闭防火墙命令:

systemctl stop firewalld	# 关闭防火墙
systemctl disable firewalld # 禁止开机自启动
systemctl status firewalld    #查看状态

两台机器的 ip 地址如下:

master:192.168.244.154

node01:192.168.244.128

运行以下命令以安装SaltStack存储库和密钥:

sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

准备工作完成!

3.安装

先放一张 Saltstack 框架图:

saltstack安装路径_saltstack安装路径

Saltstack 客户端(Minion)在启动时,会生成一套密钥,包含私钥和公钥,它会把公钥发送给服务端(master),master 接受并验证,以此建立可靠的通信连接。同时通过消息队列 ZeroMQ 在客户端与服务端之间建立消息发布连接。

Minion 是 saltstack 需要管理的客户端安装组件,它会主动去连接 Master 端,并从 Master 端得到资源状态信息,同步资源管理信息。
Master 作为控制中心运行在主机服务器上,负责 Salt 命令运行和资源状态的管理。
Master 上执行某条指令通过队列下发到各个 Minions 去执行,并返回结果。

安装 Master :

[root@master /]# sudo yum install salt-master
[root@master /]# sudo yum install salt-minion

安装 Minion:

[root@localhost /]# sudo yum install salt-minion

执行如上命令等待片刻即可安装成功!

4.配置

配置 Master
[root@master /]# cd etc/salt/
[root@master salt]# ls
cloud  cloud.conf.d  cloud.deploy.d  cloud.maps.d  cloud.profiles.d  cloud.providers.d  master  master.d  minion  minion.d  minion_id  pki  proxy  proxy.d  roster
[root@master salt]# vim master			#Master 主配置文件
interface: 192.168.244.154     #将 master 文件配置成这样就行,ip 地址填写你自己的 master 地址

打开 master 文件时,他默认有很多 master 配置的介绍,找个空位直接加上 interface: 192.168.244.154 就可以了,随后保存后退出。

然后启动服务并设置开机自启:

[root@master salt]# systemctl start salt-master
[root@master salt]# systemctl enable salt-master
配置 Minion
[root@localhost /]# cd etc/salt/
[root@localhost salt]# ls
cloud         cloud.deploy.d  cloud.profiles.d   master    minion    minion_id      pki    proxy.d
cloud.conf.d  cloud.maps.d    cloud.providers.d  master.d  minion.d  minion.rpmnew  proxy  roster
[root@localhost salt]# vim minion
master: 192.168.244.154		#将 minion 内容设置位 master 的地址即可

与 master 相同,保存后退出,启动服务并设置开机自启:

[root@localhost salt]# systemctl start salt-minion
[root@localhost salt]# systemctl enable salt-minion

5.使用

上述步骤都顺利后,在 master 机器上输入命令:

[root@master salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
node01
Rejected Keys:

出现如下信息,说明 node01 已经和 master 通信成功,现在需要 master 的认证,才算完成了关联。

[root@master salt]# salt-key -a node01		#接受某个 minion-key,这里是 node01
The following keys are going to be accepted:
Unaccepted Keys:
node01
Proceed? [n/Y] y
Key for minion node01 accepted.
[root@master salt]# salt-key -L				#查看所有的 minion-key 和状态
Accepted Keys:
node01
Denied Keys:
Unaccepted Keys:
Rejected Keys:

上述信息表明 master 和 node01 已经完成了关联,接下来可以用 master 完全的控制 node01,可以输入如下命令验证:

[root@master salt]# salt 'node01' cmd.run 'df -h'		#终端会输出 node01 的磁盘使用信息
[root@master salt]# salt 'node01' cmd.run 'uname -a'	#查看 node01 的版本信息
node01:
    Linux node01 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

到这里就算是安装完成了,并且已经可以用 master 操作 minion 机器,实现远程命令执行。

这里示范的配置是最简单的配置,后续可以添加一些其他配置完善,如日志文件存放信息、salt 操作目录设置等等。