우리는 약 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
이로 인해 나중에 실패한 명령이 수정되었습니다.