文章目录
背景概况
SaltStack官网针对十几个Linux/Unix发行版本,提供了安装与升级资源、文档。依托于官网提供的资源,安装SaltStack就很简单了,各个Linux发行版本的Salt安装方法详见:https://repo.saltstack.com/
可以在以下地址中查找需要使用redhat版本的Salt repo安装包:https://repo.saltstack.com/yum/redhat/
目前看,SaltStack官方安装源在同时支持redhat的5/6/7三个大的Linux发行版本。
本文讲解的是在CentOS7上将Salt 2017.7版本升级至目标版本:2019.2 。
以下会是我们主要使用的yum安装资源文件:
- centos7 Salt yum 安装源:https://repo.saltstack.com/yum/redhat/salt-repo-2019.2.el7.noarch.rpm
- centos6 Salt yum 安装源 :https://repo.saltstack.com/yum/redhat/salt-repo-2019.2.el6.noarch.rpm
升级前的准备工作
对使用中的Salt软件进行版本升级,会存在数据丢失、功能失常的一些未知风险。
为了提高升级的成功率,建议搭建了一套仿真环境进行升级方案的技术和功能验证。尤其是自己使用比较多的那部分功能,需要仔细测试。
可以从以下几个方面着手:
(1)检查Salt 模块功能在新旧发行版本间的功能变化,这个可以翻阅下Salt官方文档,查看下在2019.2发行版本中主要功能模块涉及功能与配置项的增、删、变更的说明。
(2)Master/Minion版本组合的功能兼容性验证
- 2019.2版本Master+2017.7版本Minion
- 2019.2版本Master+2019.2版本Minion
考虑到Master升级到2019.2版本后,处理全部Minions的版本升级需要一段时间,有必要对以上版本间的兼容性进行验证测试。
(3)备份Salt Master上的密钥文件及配置数据
tar zcf etc.salt.tgz /etc/salt
- 备份重要数据,以防意外。这个位置上的配置数据,密钥数据是比较容易受到影响的一部分数据。
操作步骤
将salt-repo yum安装源升级为 salt-repo-2019.2 版本
直接在Salt Master节点上执行以下命令,即可安装2019.2版本的yum源,同时会清除原2017.7版本的repo软件包。
# yum install https://repo.saltstack.com/yum/redhat/salt-repo-2019.2.el7.noarch.rpm
确保上面的命令得到了完整的、正确的执行,然后进行下面的升级Salt的操作。
执行升级salt-master软件包版本的命令
# yum update salt-master
这个命令,在安装成功新版本后,会自动删除掉旧版本的软件包。
检查下安装成果
# rpm -qa salt*
salt-repo-2019.2-1.el7.noarch
salt-2019.2.0-1.el7.noarch
salt-minion-2019.2.0-1.el7.noarch
salt-master-2019.2.0-1.el7.noarch
- 如果上面命令没有输出,可以试下分别检查rpm -q salt-repo, rpm -q salt, rpm -q salt-master
- 检查下master上的密钥数据以及配置文件,确认未受升级影响。在我们的验证测试和升级内部环境Salt版本时,/etc/salt下的密钥数据仍是原2017.7版本所留下来的,均没有被更新,也没有少数据。
- 在使用yum升级salt master版本后,随新版本带来的master配置文件被保存为/etc/salt/master.rpmnew,这个配置文件需要我们手动做一下替换。随新版本而来的功能变更,也需要新版本配置文件的支持。
替换salt master使用的配置文件
systemctl stop salt-master
mv /etc/salt/master /etc/salt/master.bak
mv /etc/salt/master.rpmnew /etc/salt/master
- 对照新旧配置文件,手动将原配置文件中调整过的配置项内容,同步到新版本的配置文件中去。
在确认新版本配置文件的内容得到正确更新后,启动salt-master服务:
systemctl start salt-master
在Salt Master节点上对主要功能做些测试
测试远程执行管理命令:
# salt test-server cmd.run "ifconfig -a"
测试mysql模块的管理功能:
# salt test-server mysql.query test "show tables"
- 查看 test 库下有哪些表
测试下state状态配置管理功能:
# salt test-server state.apply abc-state
# salt test-server state.apply
- 在带state模块名称时,
state.apply
功能上等同于执行state.sls
- 在不带state模块名称时,
state.apply
功能上等同于执行state.highstate
升级下Salt周围边的相关软件包
在Salt Master上执行salt-call -V 查看下当前Salt Master依赖的周边工具包版本,对照下2019.2版本的yum源,建议升级以下几个软件包。
# yum update python-zmq m2crypto python
# systemctl restart salt-master
- zeromq是Salt重度依赖的一个工具,但Salt 2019.2和2017.7版本使用的都是 zeromq-4.1.4 版本。
将salt-minion升级至2019.2版本的方法
在salt minion节点上执行版本升级命令
yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-2019.2.el6.noarch.rpm
yum -y update salt-minion
salt-call service.restart salt-minion
- 上面是centos6的示例,centos7时改为执行
yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-2019.2.el7.noarch.rpm
注意检查下升级结果,执行 ps -ef|grep salt
查看下运行中的salt进程是不是刚启动的。如果salt-minion有更早时间以前的进程存在,直接kill掉即可,这是因为重启操作未能关掉。
更新下/etc/salt/minion配置文件
使用yum升级salt-minion版本后,并不会直接替换你原有的/etc/salt/minion配置文件。新版本的配置文件以minion.rpmnew的名称保存在配置目录下。这样处理是比较稳妥的,因为有时我们会在minion配置文件中按需调整多个配置项,直接覆盖原来旧版本的配置文件显然不妥。
请手工予以调整和替换,然后重启salt-minion服务。