使用 python26 的 Linux 5 主机的 Ansible 模块复制/模板错误,需要 python 绑定 libselinux-python

使用 python26 的 Linux 5 主机的 Ansible 模块复制/模板错误,需要 python 绑定 libselinux-python

我们有大约 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

这修复了我后来失败的命令。

相关内容