前文
公司的机器大部分由centos6升到7了,于此同时用于管理机器的saltstack也纷纷从python2启动到变成python3启动,不过一些老机器由于服务未迁移的原因,所以还停留在python2,而问题就出现在一台centos6上由python2启动的salt-minion。
当通过salt-master调用salt-api执行modules里的脚本时出现异常,查看salt日志报错如下:
You should upgrade pyOpenSSL to at least 0.14.1 to enable the use of X509 extension
问题排查
从报错信息来看是pyOpenSSL的版本过低(未到达0.14)导致,于是通过yum install pyOpenSSL来更新版本,发现centos6最多仅支持0.13版本,相关链接:https://github.com/saltstack/salt/issues/28872
然后查阅大量资料,并没有相关的解决方案…毕竟是python2.6,即使相对于Python2.7也是更老的版本,而2.7相关支持还更多点,于是我决定升级Python2.7来处理。
在将centos6默认python2.6升级到python2.7后(相关升级的安装可以自行百度),又报大量的错误,比如:salt.scripts脚本不存在,然而实际上是好好的存在于site-packages;比如python setup.py egg_info" failed,涉及到版本和编译的异常;排查一度陷入困境。
解决方案
在我一度要放弃的时候,突然发现网上一篇关于salt的快速安装方法,所以我直接通过里面的脚本一键安装就解决了异常,相关链接:Saltstack安装
通过执行该命令脚本一键安装:
wget -O - http://bootstrap.saltstack.org | sudo sh
通过查看脚本,发现脚本是根据当前的操作系统来下载对应的依赖,而这些依赖包完美地避过了系统不支持的已过期的版本包:
总结
在处理涉及到装载编译、python版本的时候,很容易出错,这块需要多了解关于“linux高级编程“相关概念,才能处理地更好~