「x.x.xxへの共有接続が閉じられました」Ansibleエラーを修正する方法


」、Ansibleコマンドの実行中。

次のスクリーンショットは、Ansibleモジュールのエラーを示しています。新しくデプロイされた2台のCentOS8サーバーでコマンドを実行するAnsibleコマンドの実行中に、このエラーが発生しました。

「。

リモートホストを確認したところ、システムにPython2がインストールされていないことがわかりました。

デフォルトでPython3がインストールされており、そのバイナリは/ usr/bin/python3です。

Ansibleのドキュメントによると、Ansible(2.5以降)はPythonバージョン3以降でのみ動作します。また、Ansibleは、同梱されている多くのプラットフォームでPython3を自動的に検出して使用することになっています。

ただし、失敗した場合は、以下で説明するように、グループまたはホストレベルでansible_python_interpreterインベントリ変数をPython 3インタープリターの場所に設定することで、Python3インタープリターを明示的に構成できます。

コマンドラインでPythonインタープリターをAnsibleに渡す

上記のエラーを一時的に修正するには、 -e フラグを使用して、図のようにPython3インタープリターをAnsibleに渡すことができます。

$ ansible prod_servers  -e 'ansible_python_interpreter=/usr/bin/python3' -a "systemctl status firewalld" -u root

インベントリでAnsibleのPythonインタープリターを設定する

エラーを永続的に修正するには、インベントリ/ etc/ansible/hostsでansible_python_interpreterインベントリ変数を設定します。図のように、v/imまたはnanoテキストエディタを使用して編集用に開くことができます。

$ sudo vim /etc/ansible/hosts
OR
# vim /etc/ansible/hosts

グループ内の各ホストに次の行を追加します。

ansible_python_interpreter=/usr/bin/python3

したがって、ホストの定義は次のようになります。

[prod_servers]
192.168.10.1			ansible_python_interpreter=/usr/bin/python3
192.168.10.20			ansible_python_interpreter=/usr/bin/python3.6

または、示されているように、ホストのグループに同じPythonインタープリターを設定します。

[prod_servers]
192.168.10.1		
192.168.10.20		

[prod_servers:vars]
ansible_python_interpreter=/usr/bin/python3

Ansible構成でのデフォルトのPythonインタープリターの設定

デフォルトのPythonインタープリターを設定するには、Ansibleのメイン構成ファイル/etc/ansible/ansible.cfgでansible_python_interpreterインベントリ変数を設定できます。

$ sudo vim /etc/ansible/ansible.cfg

[defaults] セクションの下に次の行を追加します。

ansible_python_interpreter=/usr/bin/python3

ファイルを保存して閉じます。

ここで、Ansibleコマンドをもう一度実行してみてください。

$ ansible prod_servers -a "systemctl status firewalld" -u root

このトピックの詳細については、Ansibleの公式ドキュメントのPython3サポートを参照してください。