记一次saltstack软件版本升级到2017.7新版本时所引发的“血案”!

1、SaltStack版本兼容性的问题说明

saltstack 2017.1以后发布的版本中,已经不再兼容支持python2.6。官方声称对core functionality部分仍然可以保持兼容性,但针对大量的第三方modules,例如MySQLdb,已经不再提供支持。因为RHEL6/CENTOS6系统默认使用的均是python2.6,所以一旦人为升级了saltstack版本至2017.1或更新的版本,可能就会面临这样的挑战——以前基于python2.6兼容的功能模块所开发的saltstack应用,将无法使用。详情参见下面链接。
https://github.com/saltstack/salt/issues/42979

如果你使用的是RHEL/CENTOS6系统,且已经对系统中的saltstack版本升级到了2017.1之后的版本,你会发现在升级的过程中安装了一个python2.7,以及少量几个python2.7使用的功能模块软件包,例如 pycrypto: 2.6.1 。

因此,当salt master和salt minion的版本都升级至2017.1后的相同版本时,即使你的salt minion是运行在RHEL6/CENTOS6上面的,仍然可以正常运行salt的核心功能模块,例如cmd,cp.push,cp.get_file等。原因就在于salt minion是使用的自带的python2.7环境和已经安装了的几个必要的功能模块。
引时查看salt minon的版本信息,会大致显示如下:

2、对于大量的第三方python模块,saltstack自带的python2.7环境中均未提供,凡是使用这类第三方python模块实现的功能这时都会失灵

以MySQLdb模块为例,在升级了salt master和salt minion的版本后,执行下面的mysql.query命令时报错: 原因就在于,虽然salt minion的系统环境中默认的是python2.6,且已安装了MySQLdb模块,但供salt minion 2017.7软件使用的/usr/bin/python2.7中却是没有安装MySQLdb模块的。这就让凡是使用到MySQLdb模块的saltstack程序,在升级版本后,都会报错。

3、针对RHEL6/CENTOS6系统升级salt minon至2017.7版本后,解决缺少依赖的第三方python2.7模块的方法

安装以下软件包: 对于源码编译安装的mysql,还需手动创建一个下面的软链接,不然python2.7在import MySQLdb时会报错: 此时再查看salt minion的版本信息时可以看到已经显示为安装了MySQLdb模块了:

4、执行一个salt的mysql.query模块操作命令验证一下

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208551 人正在系统学习中

来源:运维个西瓜

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年1月26日
下一篇 2018年1月26日

相关推荐