Ansible 모듈에 대한 Junos PyEZ(junos-eznc) 설치 오류 문제 해결
문제
설명
모듈 또는 Juniper.junos
모듈을 실행하는 juniper.device
동안 Ansible 제어 노드는 설치되지 않은 오류를 junos-eznc
생성합니다. 예를 들어:
"msg": "junos-eznc (aka PyEZ) >= 2.6.0 is required for this module. However, junos-eznc does not appear to be currently installed. See https://github.com/Juniper/py-junos-eznc#installation for details on installing junos-eznc."
또는
"msg": "junos-eznc is required but does not appear to be installed. It can be installed using `pip install junos-eznc`"
원인
컬렉션 및 Juniper.junos
역할의 juniper.device
주니퍼 네트웍스 Ansible 모듈은 Junos PyEZ Python 라이브러리를 사용하여 Junos 디바이스에서 작업을 수행합니다. 라이브러리가 설치되지 않았거나 Ansible이 라이브러리를 찾을 수 없는 경우 Ansible에서 이 오류를 생성합니다. 예를 들어, 가상 환경 또는 비표준 시스템 위치의 Python 설치 아래에 Ansible을 설치하고 Ansible이 기본 시스템 위치와 같은 다른 위치에서 라이브러리를 검색하는 경우 Ansible이 라이브러리를 찾지 못할 수 있습니다.
솔루션
Ansible 제어 노드에 Junos PyEZ를 설치하고 필요한 환경 변수를 업데이트합니다. 자세한 내용은 https://github.com/Juniper/py-junos-eznc#installation 를 참조하십시오.
가상 환경 또는 비표준 시스템 위치에서 Python 설치를 사용하여 Ansible을 실행하는 경우 다음을 수행해야 합니다.
-
원하는 Python 설치(해당하는 경우 가상 환경 또는 비표준 시스템 위치)에 Junos PyEZ를 설치합니다.
-
예를 들어 Ansible 구성 파일에서 변수를 설정
interpreter_python
하거나 Ansible 인벤토리 파일에서 적절한 디바이스에 대한 변수를 정의ansible_python_interpreter
하여 Python 인터프리터의 경로를 지정합니다.# 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.6.9 (default, Oct 8 2020, 12:12:24) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> import jnpr.junos >>> jnpr.junos.__version__ '2.6.0'
패키지를 성공적으로 가져왔 jnpr.junos
는데 오류 메시지가 없으면 Junos PyEZ가 Ansible 제어 노드에 설치됩니다. Ansible 모듈을 실행할 때 동일한 오류 메시지가 계속 표시되면 Ansible 환경에서 Python 인터프리터의 올바른 위치를 지정했는지 확인하십시오.
옵션으로 Ansible 플레이북을 실행하고 로그 메시지를 검토하여 Ansible에서 -vvv
사용하는 Python 설치를 확인할 수 있습니다.