Junos 디바이스 관리를 위한 Ansible 플레이북 생성 및 실행
요약 주니퍼 네트웍스 모듈을 실행하는 Ansible 플레이북을 생성하여 Junos 디바이스에서 운영 및 구성 작업을 수행할 수 있습니다.
주니퍼 네트웍스는 Ansible을 사용한 Junos 디바이스 관리를 지원하며, Ansible과 주니퍼 네트웍스는 디바이스에서 운영 및 구성 작업을 수행할 수 있는 Ansible 모듈을 제공합니다. 이 주제에서는 Junos 디바이스에서 주니퍼 네트웍스 모듈을 실행하기 위해 간단한 Ansible 플레이북을 생성하는 방법을 간략하게 설명합니다.
Ansible 플레이북을 생성하여 더 복잡한 관리 태스크를 처리할 수 있습니다. 플레이북은 정의된 호스트 집합에서 작동하는 하나 이상의 플레이 또는 작업 그룹으로 구성됩니다. 플레이북에서 참조되는 Ansible 호스트는 기본적으로 / etc/ansible/hosts에 상주하는 Ansible 인벤토리 파일에 정의되어야 합니다. 각 플레이는 다음을 지정해야 합니다.
-
작업이 작동하는 호스트
-
각 호스트에서 실행할 작업 목록
-
인증 매개 변수를 포함한 모든 필수 변수 또는 모듈 매개 변수(다른 곳에서 정의되지 않은 경우)
주니퍼 네트웍스 Ansible 모듈은 Ansible Galaxy에서 호스팅되는 컬렉션과 Juniper.junos
역할을 통해 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/user_guide/playbooks.html 의 공식 Ansible 설명서를 참조하십시오.
다음 섹션에서는 Junos 디바이스에서 Ansible 모듈을 실행하는 간단한 플레이북을 만들고 실행하는 단계를 간략하게 설명합니다.
플레이북 만들기
Junos 디바이스에서 작업을 수행하기 위한 간단한 플레이북을 생성하려면 다음을 수행합니다.
플레이북 실행
플레이북을 실행하려면:
-
ansible-playbook
제어 노드에서 명령을 실행하고 플레이북 경로와 원하는 옵션을 제공합니다.user@ansible-cn:~$ ansible-playbook junos-get-facts.yaml PLAY [Get Device Facts] *************************************************** TASK [Checking NETCONF connectivity] ************************************** ok: [dc1a.example.net] TASK [Retrieving 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