Junos 디바이스 관리 시 Ansible 연결 오류 문제 해결
다음 섹션에서는 Ansible을 사용하여 Junos 디바이스를 관리할 때 발생할 수 있는 연결 오류에 대해 간략히 설명합니다. 이 섹션에서는 각 오류에 대한 잠재적 원인과 해결 방법도 제시합니다.
실패 또는 잘못된 연결 오류 문제 해결
문제
묘사
Junos 디바이스에서 모듈을 실행하는 juniper.device 동안 Ansible 제어 노드는 실패한 SSH 연결 또는 알 수 없는 명령에 대한 오류를 생성합니다. 예를 들어:
UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ", "unreachable": true}
또는
unknown command: /bin/sh\r\n
원인
이러한 오류는 모듈이 Ansible 제어 노드에서 로컬로 실행되지 않을 때 발생할 수 있습니다.
일반적으로 Ansible은 관리형 노드에 Python이 필요하며 Ansible 제어 노드는 모듈을 노드로 전송하여 실행한 다음 제거합니다. 주니퍼 네트웍스 모듈은 Junos PyEZ 및 NETCONF를 통해 Junos XML API를 사용하여 디바이스와 인터페이스하기 때문에 Junos 디바이스에서 Python을 필요로 하지 않습니다. 따라서 Junos 디바이스에서 작업을 수행하려면 Python이 설치된 Ansible 제어 노드에서 모듈을 로컬로 실행해야 합니다. Ansible이 Junos 디바이스에서 직접 모듈을 실행하려고 하면 오류가 발생합니다.
용액
모듈을 로컬에서 실행 juniper.device 하도록 Ansible 제어 노드를 지시하려면 Ansible 플레이북에 포함 connection: local 하거나 개별 모듈을 실행할 때 명령줄 인수를 --connection local 포함합니다. 예를 들어:
--- - name: Get Device Facts hosts: junos connection: local gather_facts: no
알 수 없는 호스트 오류 문제 해결
문제
묘사
모듈을 실행하는 juniper.device 동안 Ansible 제어 노드에서 ConnectUnknownHostError 오류가 발생합니다.
"msg": "Unable to make a PyEZ connection: ConnectUnknownHostError(dc1a.example.net)"
원인
호스트가 Ansible 인벤토리 파일에 정의되어 있지 않거나 Ansible 제어 노드가 호스트 이름을 확인할 수 없습니다.
직접 또는 플레이북에서 Ansible 모듈을 실행할 때 모듈 인수 또는 플레이북에서 참조되는 모든 호스트는 Ansible 인벤토리 파일에 정의되어야 합니다. 인벤토리 파일의 기본 위치는 /etc/ansible/hosts 입니다. 인벤토리 파일이 호스트 이름을 참조하는 경우 Ansible 제어 노드는 호스트 이름을 확인할 수 있어야 합니다.
용액
누락된 호스트를 포함하도록 Ansible 인벤토리 파일을 업데이트하고 DNS 확인이 올바르게 작동하는지 확인합니다.
Ansible 인벤토리 파일에 대한 자세한 내용은 Junos 디바이스 관리 시 Ansible 인벤토리 파일 이해 및 https://www.ansible.com/ 의 공식 Ansible 설명서를 참조하십시오.
거부된 연결 오류 문제 해결
문제
묘사
모듈을 실행하는 juniper.device 동안 Ansible 제어 노드에서 ConnectRefusedError 오류가 발생합니다. 예를 들어:
"msg": "Unable to make a PyEZ connection: ConnectRefusedError(dc1a.example.net)"
원인
거부된 연결 오류의 가장 큰 원인은 Junos 디바이스에서 NETCONF over SSH가 활성화되어 있지 않기 때문입니다.
NETCONF가 활성화되었는지 여부를 신속하게 테스트하려면 Ansible 모듈을 실행하는 사용자 계정이 디바이스에서 NETCONF 세션을 성공적으로 시작할 수 있는지 확인하십시오.
user@ansible-cn:~$ ssh user@dc1a.example.net -p 830 -s netconf
사용자가 기본 NETCONF 포트(830) 또는 디바이스에서 NETCONF를 위해 특별히 구성된 포트 중 하나에서 디바이스와 NETCONF 세션을 성공적으로 설정할 수 있는 경우 NETCONF가 활성화됩니다. 그렇지 않으면 디바이스에서 NETCONF over SSH를 활성화해야 합니다.
용액
Junos 디바이스에서 NETCONF-over-SSH 서비스를 활성화합니다.
[edit] user@host# set system services netconf ssh user@host# commit