Saltstack 的安装

Saltstack 的不同角色服务安装非常简单,建议读者采用 yum 源方式来实现部署,下面介绍具体步骤。

业务环境说明

为了方便读者理解,笔者通过虚拟化环境部署了两组业务功能服务器来进行演示,操作系统版本为 CentOS release 6.4,自带 Python 2.6.6。相关服务器信息如表 10-1 所示(CPU 核数及 Nginx 根目录的差异化是为方便演示生成动态配置的需要)。

image 2023 12 08 22 38 34 626
Figure 1. 表10-1 环境说明表

安装EPEL

由于目前 RHEL 官网 yum 源还没有 Saltstack 的安装包支持,因此先安装 EPEL 作为部署 Saltstack 的默认 yum 源。

安装Saltstack

(1) 主服务器安装(主控端)

#yum install salt-master -y
#chkconfig salt-master on
#service salt-master start

(2) 从服务器安装(被控端)

#yum install salt-minion -y
#chkconfig salt-minion on
#service salt-minion start

Saltstack防火墙配置

在主控端添加 TCP 4505、TCP 4506 的规则,而在被控端无须配置防火墙,原理是被控端直接与主控端的 zeromq 建立长链接,接收广播到的任务信息并执行,具体操作是添加两条 iptables 规则:

iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4505-j ACCEPT
iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4506-j ACCEPT

更新Saltstack配置及安装校验

Saltstack 分两种角色,一种为 master(主控端),另一种为 minion(被控端),安装完毕后需要对两种角色的配置文件进行修改,下面具体说明。

(1) master主控端配置

1) 更新主控端关键项配置:

salt/master
#绑定Master通信IP;
interface: 192.168.1.20
#自动认证,避免手动运行salt-key来确认证书信任;
auto_accept: True
#指定Saltstack文件根目录位置
file_roots:
      base:
        - /srv/salt

2) 重启 saltstack salt-master 服务使新配置生效,具体执行以下命令:

#service salt-master restart

(2) minion被控端配置

1) 更新被控端关键项配置:

salt/minion
#指定master主机IP地址
master: 192.168.1.20
#修改被控端主机识别id,建议使用操作系统主机名来配置
id: SN2013-08-021

2) 重启 saltstack salt-minion 服务使新配置生效,具体执行以下命令:

service salt-minion restart

(3) 校验安装结果

通过 test 模块的 ping 方法,可以确认指定被控端设备与主控端是否建立信任关系及连通性是否正常,探测所有被控端采用 '*' 来代替 'SN2013-08-021' 即可,具体如图10-1所示。

image 2023 12 09 09 19 59 411
Figure 2. 图10-1 测试安装主机的连通性

当 /etc/salt/master 没有配置 auto_accept: True 时,需要通过 salt-key 命令来进行证书认证操作,具体操作如下:

  • salt-key -L,显示已经或未认证的被控端 id,Accepted Keys 为已认证清单,Unaccepted Keys 为未认证清单;

  • salt-key -D,删除所有认证主机 id 证书;

  • salt-key -d id,删除单个 id 证书;

  • salt-key -A,接受所有 id 证书请求;

  • salt-key -a id,接受单个 id 证书请求。