私たちは約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]#Python Python 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(以前は空です)」
このエラーが発生します
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 ファイル "/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/
次のエラーが発生します。
Python 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
これにより、後で失敗したコマンドが修正されました。