我们有大约 50 台 linux 5 主机,我们使用 ansible 来管理它们。
问题:- 使用 python26 的 Linux 5 主机的 Ansible 模块复制/模板错误,需要 python 绑定 libselinux-python
实际错误:- 致命:失败! => {"changed": false, "msg": "正在中止,目标使用 selinux 但未安装 python 绑定 (libselinux-python)!"}
环境:-
Ansible 主节点:- EL7 启用 Selinux libselinux-python :已安装 libselinux-python.x86_64 0:2.5-14.1.el7 节点:- EL 5 启用 Selinux 使用 ansible_python_interpreter=/usr/bin/python26 libselinux-python :安装了 libselinux-python-1.33.4-5.7.el5.x86_64
描述:-
我看到问题了
使用默认的Python...
selinux]# python Python 2.4.3(#1,2011 年 5 月 5 日,15:12:27) linux2 上的 [GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] 输入“帮助”、“版权”、“制作人员”或“许可证”以获取更多信息。 导入selinux selinux.is_selinux_enabled() 1
和 python26
[root@dev-bozo21 selinux]# python26 Python 2.6.8(未知,2012 年 11 月 7 日,14:47:45) linux2 上的 [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] 输入“帮助”、“版权”、“制作人员”或“许可证”以获取更多信息。 导入selinux 回溯(最近一次调用最后一次): 文件“”,第 1 行,位于 导入错误:没有名为 selinux 的模块
我尝试复制
“/usr/lib64/python2.4/site-packages/selinux 到 /usr/lib64/python2.6/site-packages/selinux (之前是空的)”
它抛出这个错误
蟒蛇26 Python 2.6.8(未知,2012 年 11 月 7 日,14:47:45) linux2 上的 [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] 输入“帮助”、“版权”、“制作人员”或“许可证”以获取更多信息。 导入selinux 回溯(最近一次调用最后一次): 文件“”,第 1 行,位于 文件“/usr/lib64/python2.6/site-packages/selinux/init.py”,第 5 行,位于 导入_selinux 导入错误:/usr/lib64/python2.6/site-packages/selinux/_selinux.so:未定义符号:Py_InitModule4
并且复制的时候
“/usr/lib64/python2.7/site-packages/selinux/init.py”(来自不同的centos 7节点)到/usr/lib64/python2.6/site-packages/selinux/
我收到以下错误
蟒蛇2.6 Python 2.6.8(未知,2012 年 11 月 7 日,14:47:45) linux2 上的 [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] 输入“帮助”、“版权”、“制作人员”或“许可证”以获取更多信息。 导入selinux 回溯(最近一次调用最后一次): 文件“”,第 1 行,位于 文件“/usr/lib64/python2.6/site-packages/selinux/init.py”,第 26 行,位于 _selinux = swig_import_helper() 文件“/usr/lib64/python2.6/site-packages/selinux/init.py”,第 22 行,位于 swig_import_helper 中 _mod = imp.load_module('_selinux', fp, 路径名, 描述) ImportError:/lib64/libc.so.6:找不到版本“GLIBC_2.14”(/usr/lib64/python2.6/site-packages/selinux/_selinux.so 需要)
这个问题有什么解决办法吗?
答案1
今天,我在基础设施中的几台主机上确实遇到了这个问题。
解决方案是按照错误提示执行操作。安装libselinux-python
软件包。或者您可以在目标主机上禁用 selinux。
来自Ansible 网站:
如果您在远程节点上启用了 SELinux,则在使用 Ansible 中的任何复制/文件/模板相关功能之前,您还需要在其上安装 libselinux-python。当然,您仍然可以使用 Ansible 中的 yum 模块在没有该软件包的远程系统上安装该软件包。
答案2
我只是运行这个,它解决了我的问题
yum install libselinux-python3
答案3
正如已经说过的,解决方案是安装 libselinux-python3。更准确地说,libselinux-python3 需要安装在每台主机上,而不是 ansible 服务器上。
为了确保该库已安装在每台主机上,我添加了一行额外的行来安装 libselinux-python3,然后再运行任何依赖于它的模块。
- name: install python selinux library required by future ansible modules
become: true
yum:
name: libselinux-python3
state: present
update_cache: true
这修复了我后来失败的命令。