Junos OS 컬렉션 및 모듈을 위한 Ansible 이해하기
요약 주니퍼 네트웍스는 Junos 디바이스를 관리하는 데 사용할 수 있는 Ansible 모듈을 제공합니다.
Junos 디바이스 관리를 위한 Ansible 컬렉션 및 모듈 이해
Ansible은 인프라 구성 관리에 사용되는 IT 자동화 프레임워크입니다. 개별 코드 단위인 Ansible 모듈을 사용하여 관리형 노드에서 특정 기능을 수행합니다. 원격 호스트에서 개별 모듈을 실행하여 임시 작업을 수행하거나 플레이북을 통해 모듈을 실행할 수 있습니다.
Ansible 및 주니퍼 네트웍스는 Junos 디바이스를 관리하는 데 사용할 수 있는 Ansible 모듈을 제공합니다. 주니퍼 네트웍스 Ansible 모듈은 Ansible Galaxy 리포지토리에서 호스팅되는 Ansible 컬렉션을 통해 그룹화 및 배포됩니다. 표 1 에는 Junos 디바이스 관리에 사용할 수 있는 다양한 콘텐츠 세트가 요약되어 있습니다.
콘텐츠 세트 |
묘사 |
Ansible 릴리스 |
---|---|---|
주니퍼 네트웍스가 오픈 소스 프로젝트로 제공하고 관리하는 Junos 디바이스 관리를 위한 컬렉션입니다. |
Ansible 2.10 이상 |
|
Ansible이 제공, 유지 관리 및 지원하는 Junos 디바이스 관리를 위한 컬렉션입니다. |
Ansible 2.10 이상 |
|
Ansible 코어 모듈 |
Ansible 기본 설치에 포함된 Ansible 모듈입니다. Ansible 2.10에서 코어 모듈은 기본 설치에서 Ansible의 |
Ansible 2.1에서 Ansible 2.9까지 |
|
주니퍼 네트웍스가 제공, 유지 및 지원하는 Junos 디바이스를 관리하는 역할. 이 역할은 컬렉션으로 대체됩니다 |
Ansible 2.1 이상 |
Ansible 역할은 호스트를 구성하기 위한 작업 및 지원 변수, 파일, 템플릿 및 모듈 집합입니다. Ansible 2.10부터 Ansible은 Ansible 기본 설치의 일부로 포함되지 않은 Ansible 콘텐츠를 배포하기 위한 형식인 Ansible 콘텐츠 컬렉션을 지원합니다. Ansible 컬렉션에는 모듈, 플레이북, 플러그인 및 역할을 포함한 광범위한 콘텐츠가 포함될 수 있습니다. 또한 Ansible 컬렉션에는 자체 리포지토리가 있으며 Ansible 기본 설치와 독립적으로 개발 및 릴리스할 수 있습니다.
Ansible 2.9 이전 버전에서는 주니퍼 네트웍스 Juniper.junos
역할에서 제공되는 모듈을 사용하거나 Ansible 기본 설치의 일부로 제공되는 핵심 모듈을 사용하여 Junos 디바이스를 관리할 수 있습니다. Ansible 2.10 Juniper.junos
부터 역할 및 Ansible 코어 모듈이 해당 컬렉션으로 대체됩니다. 주니퍼 네트웍 juniper.device
스 컬렉션이 도입되면서 역할의 Juniper.junos
모듈은 컬렉션의 새 이름으로 복제되었으므로 매개 변수를 제외하고 provider
원래 모듈과 동일한 기능 및 매개 변수를 유지합니다. 새로운 기능은 앞으로 컬렉션에만 추가되므로 컬렉션을 사용하는 juniper.device
것이 좋습니다.
Junos 디바이스에서 모듈을 실행하는 방법
Ansible Galaxy 리포지토리에서 호스팅되는 컬렉션을 사용하려면 먼저 제어 노드에 Ansible을 설치한 다음 컬렉션을 설치해야 합니다. 컬렉션 설치 juniper.device
에 대한 자세한 내용은 Junos OS 서버 요구 사항에 대한 Ansible을 참조하십시오.
Ansible 모듈은 관리형 노드에서 작업을 수행할 수 있습니다. 일반적으로 Ansible 제어 노드는 모듈을 관리형 노드로 전송하여 실행한 다음 제거합니다. 이 시나리오에서는 관리형 노드에 모듈을 실행할 수 있는 기능이 있어야 합니다. 대부분의 Ansible 모듈은 Python으로 작성되기 때문에 Ansible은 일반적으로 관리형 노드에 Python이 필요합니다.
그러나 컬렉션의 juniper.device
주니퍼 네트웍스 모듈은 관리형 노드에 Python이 필요하지 않습니다. 일반적인 작업과 달리, Ansible 제어 노드에서 로컬로 모듈을 실행하고, 모듈은 NETCONF를 통해 Junos PyEZ 및 Junos XML API를 사용하여 관리형 노드와 인터페이스합니다. 이 실행 방법을 통해 Ansible을 사용하여 지원되는 모든 Junos 디바이스를 관리할 수 있습니다. 그림 1 은 Ansible 제어 노드와 매니지드 Junos 디바이스 간의 통신을 보여줍니다.

컬렉션 모듈을 사용하려면 juniper.device
플레이북 또는 명령이 다음을 수행해야 합니다.
-
Specify the collection or FQCN(컬렉션 또는 FQCN 지정) - 컬렉션을 지정하려면 재생에 키를 포함합니다
collections
. 또는 키를 생략collections
하고 대신 권장되는 방법인 FQCN(정규화된 컬렉션 이름)으로 컬렉션 콘텐츠를 참조할 수 있습니다. -
제어 노드에서 로컬로 모듈 실행 - Ansible 모듈을 로컬로 실행하려면 예를 들어 플레이북에 포함
connection: local
하거나 명령줄에 포함하여--connection local
매개 변수를local
로 정의합니다connection
.메모:를 사용하면
connection: local
Ansible은 연결이 필요한 플레이의 각 작업에 대해 장치에 대한 별도의 연결을 설정합니다. 컬렉션 모듈은juniper.device
여전히 모듈을 로컬에서 실행하지만 대신 플레이의 모든 작업을 위해 장치에 대한 단일 영구 연결을 설정하는 를connection: juniper.device.pyez
지원합니다. -
매니지드 디바이스에 연결하기 위한 적절한 연결 및 인증 정보 제공: 자세한 내용은 다음을 참조하십시오.
매니지드 Junos 디바이스에 액세스할 수 있는 모든 사용자 계정을 사용하여 Ansible 모듈을 실행할 수 있습니다. Ansible 모듈을 실행하면 Junos OS 사용자 계정 액세스 권한이 적용되며 Junos OS 사용자 계정에 대해 구성된 클래스가 권한을 결정합니다. 따라서 사용자가 구성 변경 사항을 디바이스에 로드하는 모듈을 실행하는 경우 사용자는 구성의 관련 부분을 변경할 수 있는 권한을 가져야 합니다.
다음 플레이북은 juniper.device
컬렉션의 facts
모듈을 실행하여 디바이스 팩트를 검색하고 파일에 저장합니다. 이 예제에서는 기본 위치에 있는 기존 SSH 키를 사용하여 디바이스로 인증하므로 플레이북에서 자격 증명을 명시적으로 제공하지 않습니다.
--- - name: Get Device Facts hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve facts from a Junos device juniper.device.facts: savedir: "{{ playbook_dir }}" - name: Print version ansible.builtin.debug: var: junos.version
명령줄에서 임시 작업을 수행할 수도 있습니다. 다음 명령은 컬렉션의 facts
모듈을 실행하고 juniper.device
인벤토리 그룹 dc1의 호스트에서 디바이스 팩트를 검색합니다.
user@ansible-cn:~$ ansible --connection local -i production dc1 -m juniper.device.facts
주니퍼 네트웍스 juniper.device 컬렉션
주니퍼 네트웍스는 Ansible Galaxy 웹사이트에서 호스팅되는 Ansible Content Collection을 제공합니다juniper.device
. 이 컬렉션에는 Junos 디바이스를 관리할 수 있는 Ansible 모듈이 포함되어 있습니다.
표 2에서는 컬렉션의 juniper.device
모듈을 간략하게 설명합니다. 컬렉션의 초기 릴리스에서 컬렉션 모듈은 컬렉션 모듈에 대해 지원되지 않는 매개 변수를 제외하고 provider
역할의 Juniper.junos
해당 모듈과 동일한 기능 및 매개 변수를 유지합니다.
모듈에 대한 최신 목록, 문서 및 사용 예제는 https://ansible-juniper-collection.readthedocs.io/ 참조하십시오.
juniper.device 모듈 이름 |
묘사 |
---|---|
|
Junos 디바이스에서 CLI 명령을 실행하고 출력을 로컬에 저장합니다. |
|
Junos 디바이스의 구성을 관리합니다. |
|
Junos OS 버전, 일련 번호, 하드웨어 모델 번호를 포함하여 원격 호스트에서 디바이스별 정보를 검색합니다. |
|
Ansible을 통해 Python(JSNAPy) 테스트에서 Junos Snapshot Administrator를 실행합니다. |
|
로컬 Ansible 제어 노드와 Junos 디바이스 간에 파일을 전송합니다. |
|
Junos 디바이스에서 명령을 실행합니다 |
|
Junos 디바이스에서 경로 MTU 검색을 수행합니다. |
|
Junos OS RPC를 실행합니다. |
|
Junos OS 소프트웨어 패키지를 설치하고 Junos 디바이스를 재부팅합니다. |
|
디바이스 재설정, 재부팅 또는 종료를 포함하여 Junos 디바이스에서 시스템 작업을 수행합니다. |
|
클러스터 지원 SRX 시리즈 방화벽을 위한 SRX 시리즈 섀시 클러스터를 생성합니다. |
|
Junos PyEZ 운영 테이블 및 뷰를 사용하여 Junos 디바이스에서 운영 정보를 검색합니다. |