이 페이지의 내용
Junos 디바이스 관리 시 Ansible 인증 오류 문제 해결
다음 섹션에서는 Ansible을 사용하여 Junos OS를 실행하는 디바이스와 Junos OS Evolved를 실행하는 디바이스를 관리할 때 발생할 수 있는 인증 오류에 대해 간략하게 설명합니다. 이 섹션에서는 각 오류에 대한 잠재적인 원인과 해결 방법도 제시합니다.
인증 오류 문제 해결
문제
설명
컬렉션의 모듈 또는 junipernetworks.junos 모듈을 juniper.device 실행하는 동안 Ansible 제어 노드는 실패한 인증에 대한 오류 또는 AuthenticationException 오류를 생성합니다ConnectAuthError.juniper.device 예를 들면 다음과 같습니다.
"msg": "Unable to make a PyEZ connection: ConnectAuthError(dc1a.example.net)"
또는
"msg": "AuthenticationException('Authentication failed.')"
원인
Junos 디바이스는 다음과 같은 이유로 사용자를 인증하지 못할 수 있습니다.
-
사용자가 Junos 디바이스에 계정이 없습니다.
-
사용자는 Junos 디바이스에 구성된 텍스트 기반 비밀번호가 있는 계정을 가지고 있지만 모듈을 실행할 때 잘못된 비밀번호를 입력했거나 비밀번호가 제공되지 않았습니다.
-
사용자는 SSH 키가 구성된 Junos 디바이스에 계정이 있지만 디바이스나 제어 노드에서 SSH 키에 액세스할 수 없습니다.
해결책
모듈을 실행하는 사용자가 모든 대상 Junos 디바이스에서 Junos OS 로그인 계정을 가지고 있는지 확인합니다. 계정에는 SSH 공개/비공개 키 쌍 또는 텍스트 기반 암호가 구성되어 있어야 합니다. 계정에서 SSH 키를 사용하는 경우 사용자가 키에 액세스할 수 있는지 확인합니다.
속성 conn_type 오류 문제 해결
문제
설명
모듈을 juniper.device 실행하는 동안 Ansible 제어 노드는 다음 오류를 생성합니다.
AttributeError: 'JuniperJunosModule' object has no attribute 'conn_type'
원인
더 이상 사용되지 않는 Juniper.junos 이전 모듈은 사전을 provider 사용하여 연결 및 인증 매개 변수를 정의하는 것을 지원했지만 모듈은 juniper.device 사전 사용을 provider 지원하지 않습니다. 사전을 provider 참조하는 경우 모듈에서 앞서 언급한 오류가 생성됩니다.
해결책
모듈(모듈 제외juniper.device.junos_*)의 juniper.device 경우 플레이북의 플레이에서 연결 및 인증 매개변수를 제공하는 경우 Ansible 연결에 적합한 위치에서 매개변수를 정의해야 합니다.
-
영구 연결()
connection: juniper.device.pyez의 경우, 섹션 아래에서 매개 변수를 정의합니다.vars: -
로컬 연결(
connection: local)의 경우, 섹션 아래 또는 최상위 모듈 인수로 매개 변수를 정의합니다vars:.
다음 플레이북은 영구 연결을 사용하고 플레이북 vars 섹션에서 인증 매개 변수를 정의합니다.
---
- name: Get device facts
hosts: dc1
connection: juniper.device.pyez
gather_facts: no
vars_prompt:
- name: "DEVICE_PASSWORD"
prompt: "Device password"
private: yes
vars:
passwd: "{{ DEVICE_PASSWORD }}"
tasks:
- name: Get device facts
juniper.device.facts:
savedir: "{{ playbook_dir }}"
다음 플레이북에서는 로컬 연결을 사용하고 인증 매개 변수를 모듈 인수로 정의합니다.
---
- name: Get device facts
hosts: dc1
connection: local
gather_facts: no
vars_prompt:
- name: "DEVICE_PASSWORD"
prompt: "Device password"
private: yes
tasks:
- name: Get device facts
juniper.device.facts:
passwd: "{{ DEVICE_PASSWORD }}"
savedir: "{{ playbook_dir }}"