Junos PyEZ 테이블과 함께 Ansible을 사용하여 Junos 디바이스에서 운영 정보 검색
요약 Ansible 플레이북의 Junos PyEZ 테이블 및 뷰를 사용하여 Junos 디바이스에서 운영 정보를 검색합니다.
모듈 개요
Junos PyEZ 운영(op) 테이블은 복잡한 운영 명령 출력에서 정보를 추출하는 간단하고 효율적인 방법을 제공합니다. 주니퍼 네트웍스는 Ansible 플레이북 내에서 Junos PyEZ op 테이블을 활용할 수 있는 Ansible 모듈을 제공합니다. 표 1 에는 모듈이 요약되어 있습니다.
콘텐츠 세트 |
모듈 이름 |
---|---|
이 모듈은 table
구성 테이블 및 뷰 사용을 지원하지 않습니다.
Junos PyEZ 테이블 이해
Junos PyEZ 는 Junos 디바이스를 관리하고 자동화할 수 있는 Python용 마이크로프레임워크입니다. Junos PyEZ는 테이블 및 뷰라고 하는 간단한 YAML 정의를 사용하여 Junos 디바이스에서 운영 명령 출력 및 구성 데이터를 검색하고 필터링할 수 있도록 지원합니다.
Junos PyEZ 운영(op) 테이블은 운영 명령 또는 RPC의 출력에서 정보를 추출합니다. Junos PyEZ jnpr.junos.op
모듈에는 몇 가지 일반적인 RPC에 대한 사전 정의된 테이블 및 뷰 정의가 포함되어 있습니다. 사용자 지정 테이블 및 뷰를 만들 수도 있습니다.
Ansible을 사용하여 Junos 디바이스를 관리하는 경우 모듈은 table
Junos PyEZ 테이블을 사용하여 디바이스에서 데이터를 검색할 수 있습니다. 이 모듈은 Junos PyEZ 배포에 포함된 사전 정의된 운영 테이블 및 뷰를 참조하거나 Ansible 제어 노드에 있는 사용자 정의 테이블 및 뷰를 참조할 수 있습니다.
Junos PyEZ 테이블 및 뷰에 대한 일반적인 정보는 Junos PyEZ 개발자 가이드의 다음 섹션과 관련 문서를 참조하십시오.
Junos PyEZ 테이블과 함께 주니퍼 네트웍스 Ansible 모듈을 사용하는 방법
모듈에는 juniper.device.table
사용할 테이블을 지정하기 위해 다음 인수가 포함될 수 있습니다.
-
file
- Junos PyEZ 테이블 및 보기를 정의하는 YAML 파일의 파일 이름입니다. -
path
- (선택 사항) 테이블 및 보기 정의가 있는 YAML 파일이 포함된 디렉터리의 경로입니다. 기본 파일 경로는 jnpr/junos/op 디렉토리 아래의 Junos PyEZ 설치 경로에 있는 사전 정의된 Junos PyEZ op 테이블의 위치입니다. -
table
- (선택 사항) 데이터를 검색하는 데 사용할 테이블의 이름입니다. 이 옵션은 파일에 여러 테이블 정의가 포함되어 있거나 파일 이름에 "Table"이 포함되지 않은 단일 테이블이 포함된 경우에만 필요합니다.
예를 들어 다음 작업은 플레이북 디렉터리에 있는 fpc.yaml 파일에 정의된 라는 사용자 지정 테이블을 FPCTable
사용하여 데이터를 검색합니다.
tasks: - name: Get FPC info juniper.device.table: file: "fpc.yaml" path: "{{ playbook_dir }}" table: "FPCTable"
모듈의 응답에는 Table에서 반환된 항목 목록이 포함된 키가 포함됩니다 resource
. 각 목록 항목은 View에 의해 정의된 필드 이름과 각 해당 필드의 데이터에서 추출된 값을 포함하는 사전입니다.
Junos PyEZ 배포판의 arp.yml 파일에서 다음과 같은 사전 정의된 테이블 및 뷰 ArpTable
ArpView
와, 을 고려하십시오. ArpTable
CLI 명령과 동일한 옵션을 사용하여 <no-resolve/>
RPC를 show arp no-resolve
실행합니다.<get-arp-table-information>
해당 View는 응답의 각 <arp-table-entry>
항목에 대한 MAC 주소, IP 주소 및 인터페이스 이름을 추출합니다.
--- ArpTable: rpc: get-arp-table-information args: no-resolve: true item: arp-table-entry key: mac-address view: ArpView ArpView: fields: mac_address: mac-address ip_address: ip-address interface_name: interface-name
다음 Ansible 플레이북은 Junos 디바이스에서 table
ARP(Address Resolution Protocol) 정보를 검색하는 데 사용하는 ArpTable
모듈을 실행합니다. 은(는) Junos PyEZ 배포판에 포함되어 있고 사전 정의된 Junos PyEZ op 테이블의 path
기본 디렉터리에 있기 때문에 ArpTable
파일 위치를 지정하는 데 module 인수가 필요하지 않습니다. 또한 는 파일에 정의된 유일한 테이블이고 해당 이름 table
에 "Table"을 포함하므로 ArpTable
테이블을 지정하는 데 인수가 필요하지 않습니다.
--- - name: Get ARP information hosts: dc1 connection: local gather_facts: no tasks: - name: Get ARP information using Junos PyEZ Table juniper.device.table: file: "arp.yml" register: result - name: Print response ansible.builtin.debug: var: result
간결성을 위해 잘린 플레이북 출력에는 디바이스에서 반환된 각 <arp-table-entry>
항목에 대해 ArpView에 정의된 해당 필드가 포함됩니다.
PLAY [Get ARP information] **************************************************** TASK [Get ARP information using Junos PyEZ Table] ***************************** ok: [dc1a.example.net] TASK [Print response] ********************************************************* ok: [dc1a.example.net] => { "result": { "changed": false, "failed": false, "msg": "Successfully retrieved 2 items from ArpTable.", "resource": [ { "interface_name": "em0.0", "ip_address": "10.0.0.5", "mac_address": "02:01:00:00:00:05" }, { "interface_name": "fxp0.0", "ip_address": "198.51.100.10", "mac_address": "30:7c:5e:48:4b:40" } ] } }
다음 Ansible 플레이북은 사전 정의된 Junos PyEZ 운영 테이블 OspfInterfaceTable
을 활용하여 Junos 디바이스의 OSPF 인터페이스에 대한 정보를 검색합니다. ospf.yml 파일은 여러 테이블 및 뷰를 정의하므로 모듈 호출에는 사용할 테이블을 지정하는 인수가 table
포함됩니다.
--- - name: Get OSPF information hosts: dc1 connection: local gather_facts: no tasks: - name: Get OSPF interface information juniper.device.table: file: "ospf.yml" table: "OspfInterfaceTable" register: result - name: Print response ansible.builtin.debug: var: result
RPC 인수 지정
Junos PyEZ 운영 테이블에는 해당 테이블에서 실행되는 RPC에 대한 기본 명령 옵션 및 인수를 정의하는 선택적 args
키가 있습니다. 애플리케이션은 사용자가 기본값을 재정의하지 않는 한 기본 옵션을 사용하여 RPC를 실행합니다. Junos PyEZ 애플리케이션에서는 메서드를 호출할 때 기본 옵션을 재정의하거나 추가 옵션 및 인수를 RPC에 전달할 수 있습니다 get()
.
또한 이 juniper.device.table
모듈을 사용하면 테이블에 정의된 기본 옵션을 재정의하거나 인수를 사용하여 RPC에 추가 옵션 및 인수를 전달할 수 있습니다 kwargs
. 값은 kwargs
명령 옵션 및 값의 사전으로, RPC와 RPC가 실행되는 디바이스에서 지원해야 합니다.
예를 들어, ethport.yml 파일의 사전 정의된 Junos PyEZ 연산 테이블 EthPortTable
은 명령 옵션을 사용하여 RPC를 media
실행합니다.<get-interface-information>
기본적으로 RPC는 인터페이스 이름에 대해 주어진 정규식과 일치하는 모든 인터페이스에 대한 정보를 반환합니다.
EthPortTable: rpc: get-interface-information args: media: true interface_name: '[afgxe][et]-*' args_key: interface_name item: physical-interface view: EthPortView
다음 Ansible 플레이북은 Junos 디바이스의 인터페이스에 대한 정보를 추출하는 데 사용합니다EthPortTable
. 인수에는 kwargs
가 포함되어 interface_name: "ge-1/0/0"
있으며, 이는 의 interface_name
기본값을 EthPortTable
재정의하고 모듈에 ge-1/0/0 인터페이스에 대해서만 요청된 필드를 검색하도록 지시합니다.
--- - name: Get interface information hosts: dc1 connection: local gather_facts: no tasks: - name: Get interface information for Ethernet interfaces juniper.device.table: file: "ethport.yml" kwargs: interface_name: "ge-1/0/0" register: result - name: Print response ansible.builtin.debug: var: result
Junos PyEZ 테이블의 기본 및 사용자 제공 명령 옵션과 인수에 대한 자세한 내용은 Junos PyEZ 운영 테이블 정의 및 Junos PyEZ 운영 테이블 및 구조화된 출력을 구문 분석하는 뷰 사용을 참조하십시오.