Python26을 사용하는 Linux 5 호스트에서 Ansible 모듈 복사/템플릿 오류가 발생했습니다. Python 바인딩 libselinux-python이 필요합니다.

Python26을 사용하는 Linux 5 호스트에서 Ansible 모듈 복사/템플릿 오류가 발생했습니다. Python 바인딩 libselinux-python이 필요합니다.

우리는 약 50개의 Linux 5 호스트를 보유하고 있으며 이를 관리하기 위해 ansible을 사용합니다.

문제: - Python26을 사용하는 Linux 5 호스트에서 Ansible 모듈 복사/템플릿 오류가 발생했습니다. libselinux-python을 바인딩하는 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]#파이썬
파이썬 2.4.3 (#1, 2011-05-05, 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행, at
가져오기 오류: 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행, at
파일 "/usr/lib64/python2.6/site-packages/selinux/init.py", 5번째 줄,
import_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행, at
파일 "/usr/lib64/python2.6/site-packages/selinux/init.py", 26행,
_selinux = swig_import_helper()
swig_import_helper의 파일 "/usr/lib64/python2.6/site-packages/selinux/init.py", 22행
_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를 비활성화할 수 있습니다.

~에서앤서블 웹사이트:

원격 노드에서 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

이로 인해 나중에 실패한 명령이 수정되었습니다.

관련 정보