Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

및 Ansible 모듈을 사용하여 juniper.device.command juniper.device.rpc Junos 디바이스에서 명령 및 RPC를 실행합니다

juniper.device.rpc Ansible 모듈을 사용하여 juniper.device.command Junos 디바이스에서 운영 모드 명령 및 RPC를 실행할 수 있습니다.

주니퍼 네트웍스는 Junos OS를 실행하는 디바이스와 Junos OS Evolved를 실행하는 디바이스에서 운영 모드 명령 및 원격 프로시저 호출(RPC)을 실행하는 데 사용할 수 있는 Ansible 모듈을 제공합니다. 표 1은 모듈의 개요를 보여줍니다. 컬렉션에서 juniper.device 지정된 모듈 세트를 이미 사용하고 있는 경우 해당 세트의 모듈을 사용합니다.

표 1: 명령 및 RPC 모듈

컬렉션

모듈 세트

모듈 이름

juniper.device 컬렉션

juniper.device

juniper.device.command

juniper.device.rpc

junipernetworks.junos

juniper.device.junos_command

juniper.device.junos_rpc

다음 섹션에서는 모듈 juniper.device.rpc 을 사용 juniper.device.command 하고, 모듈 응답을 구문 분석하고, 출력 형식을 지정하고, 출력을 파일에 저장하는 방법에 대해 설명합니다.

참고:

운영 출력에서 대상 데이터를 보다 쉽게 추출하기 위해 사용자 지정 또는 사전 정의된 Junos PyEZ 운영 테이블과 함께 모듈을 juniper.device.table 사용할 수도 있습니다. 자세한 내용은 Junos PyEZ 테이블과 함께 Ansible을 사용하여 Junos 디바이스에서 운영 정보 검색을 참조하십시오.

모듈로 juniper.device.command 명령을 실행하는 방법

juniper.device.command 이 모듈을 사용하면 Junos 디바이스에서 운영 모드 명령을 실행할 수 있습니다. 이 모듈에는 디바이스에서 실행할 하나 이상의 Junos OS 운영 모드 명령 목록인 하나의 인수가 commands필요합니다.

다음 플레이북은 인벤토리 그룹의 각 디바이스에서 두 개의 운영 모드 명령을 실행합니다. 플레이북은 표준 출력(stdout)에 모듈 응답을 표시합니다.

모듈의 응답 및 출력 형식에 대한 자세한 내용은 모듈 응답 이해명령 또는 RPC 출력의 형식을 지정하는 방법을 참조하세요.

모듈로 juniper.device.rpc RPC를 실행하는 방법

Junos XML API는 Junos OS 구성 명령문 및 운영 모드 명령의 XML 표현입니다. 이는 Junos OS 구성 계층의 모든 문과 Junos OS CLI에서 실행하는 많은 운영 모드 명령에 해당하는 XML을 정의합니다. Junos XML 대응 항목이 있는 각 운영 모드 명령은 요청 태그 요소와 필요한 경우 응답 태그 요소에 매핑됩니다. 요청 태그는 NETCONF 또는 Junos XML 프로토콜 세션 내의 RPC에서 Junos 디바이스에서 정보를 요청하는 데 사용됩니다. 서버는 해당 응답 태그 요소 안에 포함된 Junos XML 요소를 사용하여 응답을 반환합니다.

juniper.device.rpc 모듈을 사용하면 Junos 디바이스에서 RPC를 실행할 수 있습니다. 이 모듈에는 디바이스에서 실행할 하나 이상의 Junos OS RPC 목록인 하나의 인수가 rpcs필요합니다.

다음 플레이북은 get-interface-information 인벤토리 그룹의 각 디바이스에서 RPC를 실행하고 모듈 응답을 stdout에 표시합니다. RPC는 운영 모드 명령과 show interfaces 동일합니다.

참고:

CLI 명령을 RPC 요청 태그에 매핑하는 방법에 대한 자세한 내용은 운영 태그에 대한 Junos XML API Explorer 를 참조하십시오.

모듈의 응답 및 출력 형식에 대한 자세한 내용은 모듈 응답 이해명령 또는 RPC 출력의 형식을 지정하는 방법을 참조하세요.

juniper.device.rpc 이 모듈은 RPC에 대한 키워드 인수 및 값을 지정할 수 있는 옵션을 지원합니다kwargs. 의 kwargs 값은 다음과 같습니다.

  • 키워드 및 값의 단일 사전

  • 여러 RPC에 대한 인수를 제공하는 사전 목록

목록의 kwargs 항목과 목록의 rpcs RPC 사이에는 일대일 대응이 있어야 합니다. 여러 RPC를 실행하고 RPC에 인수가 필요하지 않은 경우 해당 kwargs 목록 항목을 빈 사전{}과 동일하게 설정합니다. 개별 RPC 인수에 값이 필요하지 않은 경우 해당 값을 로 설정합니다.true

참고:

RPC 인수에서 하이픈 대신 밑줄을 사용해야 하며, 이로 인해 특정 상황에서 예외나 오류가 발생할 수 있습니다.

다음 플레이북은 인벤토리 그룹의 각 디바이스에서 지정된 RPC를 실행하고 모듈 응답을 stdout에 표시합니다. RPC는 get-interface-information lo0.0 인터페이스에 대한 간결한 수준의 출력을 요청합니다. RPC는 get-lldp-interface-neighbors ge-0/0/0 인터페이스에 대한 정보를 요청합니다. RPC는 get-software-information 빈 사전을 사용하여 추가 인수 없이 RPC를 실행합니다.

모듈 응답 이해

juniper.device.rpc 모듈은 juniper.device.command 모듈 응답의 여러 다른 키 내에 디바이스의 RPC 응답을 저장합니다. 각 키에 대한 데이터는 다음과 같이 구성됩니다.

  • stdout- RPC 응답은 단일 다중 줄 문자열입니다.

  • stdout_lines- RPC 응답은 한 줄 문자열의 목록입니다.

  • parsed_output- RPC 응답은 JSON(JavaScript Object Notation) 데이터 구조로 구문 분석됩니다. 이 키는 데이터 형식이 XML 또는 JSON인 경우에만 존재합니다.

모듈이 단일 명령이나 RPC를 실행하면 모듈의 응답은 반환된 키를 최상위 수준에 배치합니다. 모듈이 여러 명령 또는 RPC를 실행하는 경우 모듈의 응답에는 사전 목록인 키가 대신 포함됩니다 results . 목록의 각 요소는 단일 명령 또는 RPC에 해당합니다. 여기에는 해당 명령 또는 RPC에 대해 반환되는 모든 키가 포함됩니다.

예를 들어 다음 응답은 단일 RPC 실행에 해당합니다.

경우에 따라 명령 또는 RPC 출력이 광범위할 수 있으므로 모듈 응답에서 출력을 억제해야 할 수도 있습니다. 모듈의 응답에서 출력 키를 생략하려면 해당 모듈의 인수 목록에 포함 return_output: false 합니다.

명령 또는 RPC 출력의 형식을 지정하는 방법

및 모듈 rpccommand 모듈 응답stdoutstdout_linesparsed_output의 여러 다른 키 내에 디바이스의 RPC 응답을 저장합니다. 명령 또는 RPC 출력 형식이 XML 또는 JSON인 경우에만 존재하는 키에는 parsed_output JSON 데이터 구조로 구문 분석되는 데이터가 포함되어 있습니다.

stdout_lines 키에는 stdout 모듈에 대해 정의된 기본 형식의 데이터가 포함됩니다. 기본적으로 모듈은 command 명령 출력을 텍스트 형식으로 반환하고 모듈은 rpc RPC 출력을 XML 형식으로 반환합니다.

다른 출력 형식을 지정하려면 인수를 포함 formats 하고 필요한 형식과 동일한 값을 설정합니다. 지원되는 형식은 다음과 같습니다.

  • json

  • text

  • xml

매개 변수는 formats 문자열 또는 문자열 목록을 사용합니다. 단일 형식만 지정하면 실행되는 모든 명령 또는 RPC가 해당 형식을 사용합니다. 각 명령 또는 RPC에 대해 다른 형식을 지정하려면 인수를 필요한 형식 목록으로 설정합니다 formats . 형식의 수는 명령 또는 RPC의 수와 동일해야 합니다.

다음 플레이북은 인벤토리 그룹의 각 디바이스에서 두 개의 RPC를 실행합니다. 플레이북은 실행된 모든 RPC의 출력에 대한 텍스트 형식을 요청합니다.

모듈의 응답에서 및 stdout_lines 키에는 stdout 텍스트 형식의 RPC 응답이 포함됩니다.

다음 플레이북은 인벤토리 그룹의 각 디바이스에서 두 개의 RPC를 실행합니다. 이 모듈은 텍스트 형식의 첫 번째 RPC에 대한 출력과 JSON 형식의 두 번째 RPC에 대한 출력을 요청합니다.

명령 또는 RPC 출력을 파일에 저장하는 방법

또는 juniper.device.rpc 모듈을 사용할 juniper.device.command 때 반환된 데이터를 로컬 Ansible 제어 노드의 파일에 저장할 수 있습니다. 데이터를 저장하려면 또는 dest_dir 모듈 인수를 포함 dest 합니다. 이 dest_dir 옵션은 각 명령 또는 RPC에 대한 출력을 디바이스에 대한 별도의 파일에 저장합니다. 이 dest 옵션은 모든 명령 및 RPC의 출력을 디바이스에 대한 동일한 파일에 저장합니다. 대상 이름의 출력 파일이 이미 있는 경우 모듈은 파일을 덮어씁니다.

데이터를 파일에 저장하고 모듈의 응답에서 출력을 복제하지 않으려면 선택적으로 모듈의 인수 목록에 포함 return_output: false 할 수 있습니다. 로 false 설정하면 return_output 모듈이 모듈의 응답에서 출력 키를 생략합니다. 디바이스가 상당한 양의 데이터를 반환하는 경우 키를 생략해야 할 수 있습니다.

다음 섹션에서는 및 dest 옵션을 사용하는 dest_dir 방법에 대해 간략하게 설명합니다.

dest_dir

검색된 데이터가 저장되는 로컬 Ansible 제어 노드의 디렉터리를 지정하려면 인수를 포함 dest_dir 하고 대상 디렉터리에 대한 경로를 정의합니다. 이 모듈은 디바이스에서 실행되는 각 명령 또는 RPC에 대한 출력을 _name라는hostname 별도의 파일에 저장합니다.format 여기에서:

  • hostname—명령 또는 RPC가 실행되는 디바이스의 호스트 이름입니다.

  • name—매니지드 디바이스에서 실행된 명령 또는 RPC의 이름입니다. 이 모듈은 명령 이름의 공백을 밑줄( _ )으로 바꿉니다.

  • format- json, 텍스트 또는 xml이 될 수 있는 출력 형식입니다.

다음 플레이북은 인벤토리 그룹의 각 디바이스에서 두 개의 RPC를 실행합니다. 플레이북은 각 디바이스의 각 RPC에 대한 출력을 Ansible 제어 노드의 플레이북 디렉터리에 있는 별도의 파일에 저장합니다.

호스트 dc1a.example.net 에 대한 결과 출력 파일은 다음과 같습니다.

  • dc1a.example.net_get-software-information.xml

  • dc1a.example.net_get-system-업타임-information.xml

마찬가지로 다음 플레이북은 인벤토리 그룹의 각 디바이스에서 동등한 명령을 실행합니다. 플레이북은 각 디바이스의 각 명령에 대한 출력을 Ansible 제어 노드의 플레이북 디렉터리에 있는 별도의 파일에 저장합니다.

호스트 dc1a.example.net 에 대한 결과 출력 파일은 다음과 같습니다.

  • dc1a.example.net_show_version.text

  • dc1a.example.net_show_system_업타임.text

목적지

이 옵션을 사용하여 dest 대상 노드에 대한 모든 명령 또는 RPC 출력이 로컬 Ansible 제어 노드에 저장되는 출력 파일을 지정할 수 있습니다. 파일의 파일 이름 또는 전체 경로를 정의합니다. 인수를 포함 dest 하지만 디렉터리를 생략하면 파일이 플레이북 디렉터리에 저장됩니다. 여러 디바이스에서 명령 또는 RPC를 실행하는 경우 인수에는 dest 각 디바이스의 파일 이름을 구별하는 것과 같은 {{ inventory_hostname }} 변수가 포함되어야 합니다. 파일명을 구분하지 않으면 각 디바이스의 출력 파일이 다른 디바이스의 출력 파일을 덮어씁니다.

다음 플레이북은 인벤토리 그룹의 각 디바이스에서 RPC를 실행합니다. 플레이북은 모든 RPC의 출력을 각 디바이스에 대한 별도의 파일에 저장합니다. 파일은 Ansible 제어 노드의 플레이북 디렉터리에 배치됩니다. 각 파일은 디바이스 호스트 이름으로 고유하게 식별됩니다.

예를 들어, 호스트 dc1a.example.net 에 대한 결과 출력 파일은 dc1a.example.net-system-information.xml 이며 디바이스에서 실행되는 모든 RPC에 대한 출력을 포함합니다.