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]#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

これにより、後で失敗したコマンドが修正されました。

関連情報