Ansible 플레이북을 생성하고 실행하여 Junos 디바이스 관리
요약 주니퍼 네트웍스 모듈을 실행하여 Junos 디바이스에서 운영 및 구성 작업을 수행하는 Ansible 플레이북을 생성할 수 있습니다.
주니퍼 네트웍스는 Junos 디바이스에서 운영 및 구성 작업을 수행할 수 있는 Ansible 모듈을 제공합니다. 이 주제에서는 Junos 디바이스에서 주니퍼 네트웍스 모듈을 실행하기 위한 간단한 Ansible 플레이북을 생성하는 방법을 설명합니다.
Ansible 플레이북을 생성하여 더 복잡한 관리 작업을 처리할 수 있습니다. 플레이북은 정의된 호스트 집합에서 작동하는 하나 이상의 플레이 또는 작업 그룹으로 구성됩니다. 플레이북에서 참조되는 Ansible 호스트는 기본적으로 /etc/ansible/hosts 에 상주하는 Ansible 인벤토리 파일에 정의되어야 합니다.
각 플레이북 플레이는 다음을 지정해야 합니다.
-
작업이 작동하는 호스트
-
각 호스트에서 실행할 작업 목록
-
인증 매개 변수를 포함한 모든 필수 변수 또는 모듈 매개 변수(다른 곳에서 정의되지 않은 경우)
플레이북은 모듈을 호출하여 호스트에서 작업을 실행합니다. 주니퍼 네트웍스 Ansible 모듈은 Ansible Galaxy에서 호스팅되는 컬렉션을 통해 juniper.device
배포됩니다. 플레이북에서 주니퍼 네트웍스 모듈을 사용하려면 Ansible 제어 노드에 컬렉션을 설치해야 합니다. 컬렉션 및 모듈에 대한 자세한 내용은 Junos OS 컬렉션 및 모듈용 Ansible 이해를 참조하십시오.
주니퍼 네트웍스 모듈은 Junos PyEZ 및 NETCONF를 통해 Junos XML API를 사용하여 디바이스와 인터페이스하기 때문에 Junos 디바이스에서 Python을 필요로 하지 않습니다. 따라서 Junos 디바이스에서 작업을 수행하려면 Python이 설치된 Ansible 제어 노드에서 모듈을 로컬로 실행해야 합니다. 플레이북 플레이에 포함하여 connection: local
모듈을 로컬로 실행할 수 있습니다. 를 사용하면 connection: local
Ansible은 연결이 필요한 플레이의 각 작업에 대해 호스트에 대한 별도의 연결을 설정합니다. 컬렉션 모듈은 juniper.device
도 지원합니다 connection: juniper.device.pyez
. 이 연결 유형은 여전히 Ansible 제어 노드에서 로컬로 모듈을 실행하지만 플레이의 모든 작업 실행 동안 지속되는 호스트에 대한 연결을 설정합니다.
기본적으로 Ansible 재생은 원격 호스트에서 시스템 사실을 자동으로 수집합니다. 그러나 로컬에서 플레이를 실행할 때 Ansible은 원격 호스트 대신 Ansible 제어 노드에서 사실을 수집합니다. 제어 노드에 대한 사실 수집을 방지하려면 플레이북에 포함합니다 gather_facts: no
.
기본값인 SSH에서 NETCONF 세션을 사용하여 주니퍼 네트웍스 모듈을 실행할 때는 Junos 디바이스에서 NETCONF를 활성화해야 합니다. 다른 작업을 실행하기 전에 각 디바이스에서 NETCONF의 활성화 여부를 명시적으로 테스트하는 간단한 작업을 플레이북에 생성하는 것이 좋습니다. 호스트에 대해 이 작업이 실패하면 기본적으로 Ansible은 이 호스트에 대한 나머지 작업을 실행하지 않습니다. 이 테스트가 없으면 플레이북 실행 중에 이 문제 또는 다른 문제가 실패의 원인인지 여부를 나타내지 않는 일반 연결 오류가 발생할 수 있습니다.
플레이북은 YAML로 표현됩니다. YAML은 공백에 민감하며 들여쓰기가 중요합니다. 따라서 플레이북은 항상 탭이 아닌 공백을 사용해야 합니다. YAML에서 하이픈(-) 앞에 오는 항목은 목록 항목으로 간주되며 표기법은 key: value
해시를 나타냅니다. Ansible 플레이북 생성에 대한 자세한 내용은 https://docs.ansible.com/ansible/latest/playbook_guide/playbooks.html 의 공식 Ansible 설명서를 참조하세요.
다음 섹션에서는 Junos 디바이스에서 Ansible 모듈을 실행하는 간단한 플레이북을 생성하고 실행하는 단계를 간략하게 설명합니다.
플레이북 만들기
Junos 디바이스에서 작업을 수행하기 위한 간단한 플레이북을 생성하려면 다음을 수행합니다.
플레이북 실행
플레이북을 실행하려면 다음을 수행합니다.
-
ansible-playbook
제어 노드에서 명령을 실행하고 플레이북 경로 및 원하는 옵션을 제공합니다.user@ansible-cn:~$ ansible-playbook junos-get-facts.yaml PLAY [Get Device Facts] *************************************************** TASK [Check NETCONF connectivity] ***************************************** ok: [dc1a.example.net] TASK [Retrieve information from Junos devices] **************************** ok: [dc1a.example.net] TASK [Print version] ****************************************************** ok: [dc1a.example.net] => { "junos.version": "19.4R1.10" } PLAY RECAP **************************************************************** dc1a.example.net : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0