AnsibleモジュールのJunos PyEZ(junos-eznc)インストールエラーのトラブルシューティング
問題点
説明
juniper.deviceモジュールの実行中に、Ansible制御ノードがjunos-ezncがインストールされていないというエラーを生成します。次に例を示します。
"msg": "junos-eznc is required but does not appear to be installed. It can be installed using `pip install junos-eznc`"
原因
juniper.deviceコレクションの多くのモジュールは、Junos PyEZ Pythonライブラリを使用して、Junosデバイス上で操作を実行します。ライブラリがインストールされていない場合、またはAnsibleがライブラリを見つけられない場合、Ansibleはこのエラーを生成します。例えば、仮想環境や非標準システムのPythonインストールにAnsibleをインストールし、Ansibleがデフォルトのシステムの場所とは異なる場所でライブラリを検索している場合など、Ansibleがライブラリを検索できないことがあります。
ソリューション
AnsibleコントロールノードにJunos PyEZをインストールし、必要な環境変数を更新します。詳細については、「 https://github.com/Juniper/py-junos-eznc#installation 」を参照してください。
仮想環境または非標準のシステムロケーションで Python インストールを使用して Ansible を実行する場合は、次のことを行う必要があります。
-
Junos PyEZを目的のPythonインストールの下にインストールします(必要に応じて仮想環境または非標準システムの場所)。
-
Pythonインタプリタへのパスを指定します。たとえば、Ansible設定ファイルで
interpreter_python変数を設定したり、Ansibleインベントリファイルで適切なデバイスのansible_python_interpreter変数を定義したりします。# file ansible.cfg [defaults] interpreter_python = /home/user/MyProjects/Ansible/venv/bin/python ...
詳細については、Ansibleの公式ドキュメントの「 インタプリターの検出 」を参照してください。
Junos PyEZがコントロールノードに正常にインストールされていることを確認するには、Ansibleの操作に使用するのと同じPythonインストールを使用して、Pythonインタラクティブシェルを起動します。次に、 jnpr.junos パッケージをインポートします。
(venv) user@ansible-cn:~/MyProjects/Ansible$ python3 Python 3.12.3 (main, Nov 6 2025, 13:44:16) [GCC 13.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import jnpr.junos >>> jnpr.junos.__version__ '2.7.5'
jnpr.junosパッケージのインポートに成功すると、PyEZ Junos Ansible制御ノードにインストールされます。Ansibleモジュールの実行時に同じエラーメッセージが表示される場合は、Ansible環境内のPythonインタープリターの正しい場所を指定していることを確認してください。
Ansibleが使用するPythonのインストールを確認するには、 -vvv オプションでAnsibleプレイブックを実行し、ログメッセージを確認します。