Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ansible을 사용하여 Junos OS 구성 검색 또는 비교

요약 주니퍼 네트웍스 Ansible 모듈을 사용하여 Junos 디바이스의 구성을 검색하거나 비교할 수 있습니다.

주니퍼 네트웍스는 Junos 디바이스에서 구성을 관리할 수 있는 Ansible 모듈을 제공합니다. 표 1 에는 Junos OS 구성을 검색하거나 비교할 수 있는 사용 가능한 모듈이 요약되어 있습니다.

표 1: 구성을 검색하거나 비교하기 위한 모듈

콘텐츠 집합

모듈 이름

juniper.device 컬렉션

config

Juniper.junos 역할

juniper_junos_config

참고:

릴리스 2.0.0부터 모듈은 , , junos_install_configjunos_get_config및 모듈의 기능을 junos_commit결합하고 대체합니다junos_rollback.Juniper.junos juniper_junos_config

모듈을 사용하여 기본 Junos OS 구성뿐만 아니라 디바이스에 추가된 타사 YANG 데이터 모델에 해당하는 구성 데이터 모두에 대한 전체 구성 또는 선택한 구성 부분을 요청할 수 있습니다. Junos 디바이스에서 구성을 검색하려면, 매개 변수와 함께 retrieve 또는 juniper_junos_config 모듈을 실행합니다config. 모듈의 응답에는 옵션이 로 설정false되지 않는 한 return_outputconfig_lines 키에 config 텍스트 형식의 구성이 포함됩니다. 또한 활성 구성을 이전에 커밋된 구성과 비교할 수도 있습니다.

다음 섹션에서는 모듈을 사용하여 Junos OS 구성을 검색하거나 비교하는 방법에 대해 설명합니다.

구성 데이터에 대한 원본 데이터베이스를 지정하는 방법

또는 juniper_junos_config 모듈을 사용하여 config 구성을 검색하는 경우 모듈의 인수 목록에 매개 변수를 포함하고 retrieve 데이터를 검색할 구성 데이터베이스를 지정해야 합니다. 커밋된 구성 데이터베이스 또는 후보 구성 데이터베이스에서 각각 또는 로 설정하여 retrieve 데이터를 검색할 수 있습니다'committed'.'candidate'

커밋된 구성 데이터베이스

다음 플레이북은 인벤토리 그룹의 각 디바이스에 대해 커밋된 전체 구성을 텍스트 형식으로 검색합니다.

후보 구성 데이터베이스

다음 플레이북은 인벤토리 그룹의 각 디바이스에 대한 전체 후보 구성을 텍스트 형식으로 검색합니다. 이 모듈은 데이터베이스가 잠겨 있거나 수정된 경우 오류를 반환합니다.

반환할 구성 데이터의 범위를 지정하는 방법

전체 Junos OS 구성을 검색하는 것 외에도 및 juniper_junos_config 모듈을 사용하여 config 모듈의 filter 매개 변수를 포함하여 구성의 특정 부분을 검색할 수 있습니다. filter 매개 변수의 값은 반환할 구성 문을 선택하는 하위 트리 필터를 포함하는 문자열입니다. 하위 트리 필터는 선택 기준과 일치하는 구성 데이터를 반환합니다. 여러 계층이 요청되는 경우, 의 filter 값은 루트(요소로 표시됨<configuration>)에서 시작하여 표시할 각 요소까지 구성 계층의 모든 수준을 나타내야 합니다.

다음 플레이북은 각 디바이스에 대한 커밋된 구성 데이터베이스의 및 [edit protocols] 계층 수준에서 구성을 [edit interfaces] 검색하고 인쇄합니다.

다음 플레이북은 ge-1/0/1 인터페이스에 대한 구성을 검색하고 인쇄합니다.

다음 플레이북은 계층 수준에서 커밋된 구성을 검색하고 인쇄합니다 [edit system services] .

반환할 구성 데이터의 형식을 지정하는 방법

또는 모듈을 사용하여 config 구성을 검색할 때, 모듈은 Junos XML 프로토콜 <get-configuration> 작업을 호출하며, 이는 Junos OS 구성 데이터를 형식화된 텍스트, Junos XML 요소, Junos OS set 명령 또는 juniper_junos_config JSON(JavaScript Object Notation)으로 반환할 수 있습니다. 기본적으로 모듈은 구성 데이터를 서식이 지정된 텍스트로 반환하며, 줄 바꿈, 탭 및 기타 공백, 중괄호 및 대괄호를 사용하여 문 간의 계층적 관계를 나타냅니다.

구성 데이터를 반환할 형식을 지정하려면 매개 변수를 원하는 형식과 동일하게 설정합니다format. 텍스트 형식을 명시적으로 요청하거나 Junos XML 요소, Junos OS set 명령 또는 JSON 형식을 요청하려면 값을 'text'각각 , , 'xml''set'또는 'json'로 설정합니다format. 및 config_lines 키에는 config 요청된 형식의 구성이 포함되어 있습니다. Junos XML 또는 JSON 형식을 요청하는 경우, 키에는 config_parsed JSON 형식의 동등한 구성이 포함됩니다.

다음 플레이북은 인벤토리 그룹의 각 디바이스에 대해 커밋된 전체 구성을 XML 형식으로 검색합니다.

타사 YANG 데이터 모델의 구성 데이터를 검색하는 방법

Junos 디바이스에 표준화된 YANG 모듈 또는 사용자 지정 YANG 모듈을 로드하여 Junos OS에서 기본적으로 지원되지 않지만 변환을 통해 지원할 수 있는 데이터 모델을 추가할 수 있습니다. 후보 구성에서 해당 모델에 대해 정의된 구문을 사용하여 네이티브가 아닌 데이터 모델을 구성합니다. 구성을 커밋하면 데이터 모델의 변환 스크립트가 해당 데이터를 변환하고 해당 Junos OS 구성을 체크아웃 구성의 일시적인 변경으로 커밋합니다.

후보 및 활성 구성에는 해당 모델에서 정의한 구문의 비네이티브 YANG 데이터 모델에 대한 구성 데이터가 포함됩니다. 또는 juniper_junos_config 모듈을 사용하여 config 표준(IETF, OpenConfig) 및 사용자 지정 YANG 데이터 모델에 대한 구성 데이터를 검색할 수 있을 뿐만 아니라 적절한 모듈 인수를 포함하여 기본 Junos OS 구성을 검색할 수 있습니다. 기본적으로 타사 YANG 데이터 모델에 대한 구성 데이터는 모듈의 응답에 포함되지 않습니다.

Junos OS 구성을 검색하는 것 외에도 네이티브가 아닌 YANG 데이터 모델로 정의된 구성 데이터를 검색하려면 매개 변수를 사용하여 model 모듈을 실행하고 적절한 경우 매개 변수를 포함합니다 namespace . 인수는 model 다음 값 중 하나를 사용합니다.

  • custom- 사용자 지정 YANG 데이터 모델에 의해 정의된 구성 데이터를 검색합니다. 사용자 지정 YANG 데이터 모델에 대한 데이터를 검색할 때 인수를 namespace 포함해야 합니다.

  • ietf- IETF YANG 데이터 모델에 의해 정의된 구성 데이터를 검색합니다.

  • openconfig- OpenConfig YANG 데이터 모델에 의해 정의된 구성 데이터를 검색합니다.

  • True- 전체 Junos OS 구성 및 모든 YANG 데이터 모델의 데이터를 포함한 모든 구성 데이터를 검색합니다.

인수에 또는 ietf openconfig 값을 model 지정하면 모듈은 자동으로 적절한 네임스페이스를 사용합니다. 를 사용하여 model: "custom"사용자 지정 YANG 데이터 모델에 대한 데이터를 검색하는 경우 해당 네임스페이스와 namespace 함께 인수도 포함해야 합니다.

, 또는 openconfig 값이 있는 인수를 포함하고 model 특정 XML 서브트리를 filter 반환하는 인수도 포함하는 경우, customietfJunos OS는 네이티브가 아닌 데이터 모델에서 일치하는 계층만 반환합니다. Junos OS 구성에 동일한 이름의 계층(예: "interfaces")이 포함된 경우에는 회신에 포함되지 않습니다. 이 filter 옵션은 을 사용할 model: "True"때 지원되지 않습니다.

또는 juniper_junos_config 모듈을 사용하여 네이티브가 config 아닌 구성 데이터를 검색할 때 매개 변수도 포함하는 경우에만 반환된 데이터의 형식을 지정할 수 있습니다filter. 매개 변수를 생략 filter 하는 경우 를 지정해야 format: "xml"합니다.

다음 플레이북은 커밋된 구성에서 OpenConfig interfaces 구성 계층을 검색합니다. 인수를 filter 생략하면 RPC는 전체 Junos OS 및 OpenConfig 구성을 반환합니다.

다음 작업은 지정된 네임스페이스를 l2vpn 가진 사용자 지정 YANG 데이터 모델에 대한 커밋된 구성에서 구성 계층을 검색합니다.

다음 작업은 전체 Junos OS 커밋 구성과 디바이스에 추가된 다른 YANG 데이터 모델의 구성 데이터를 검색합니다.

해당하는 Module 인수가 없는 옵션을 지정하는 방법

또는 juniper_junos_config 모듈을 사용하여 config 구성을 검색하면 모듈은 Junos XML 프로토콜 <get-configuration> 작업을 호출합니다. 모듈은 많은 <get-configuration> 특성(예: 특성)에 대한 명시적 인수를 format 지원합니다. 모듈은 또한 인수를 options 지원하므로 동등한 모듈 인수가 없는 추가 <get-configuration> 특성을 포함할 수 있습니다. 인수는 options 작업에서 지원하는 모든 특성의 키/값 쌍 사전을 <get-configuration> 사용합니다.

Junos XML 프로토콜 <get-configuration> 작업에서 지원하는 전체 속성 목록은 https://www.juniper.net/documentation/en_US/junos/topics/reference/tag-summary/junos-xml-protocol-get-configuration.html 참조하십시오.

예를 들어, 모듈은 사전 상속 구성에서 데이터를 검색하며, 여기서 <groups>, <apply-groups>, <apply-groups-except><interface-range> 태그는 구성 출력에서 별도의 요소입니다. 사용자 정의 그룹 및 범위에서 상속된 명령문을 상속 명령문의 하위 항목으로 표시하는 사후 상속 구성에서 데이터를 검색하려면, 와 함께 inherit: "inherit"인수를 options 포함할 수 있습니다.

다음 플레이북은 상속 후 커밋된 구성에서 계층 수준의 구성 데이터를 [edit system services] 검색합니다. 이 경우, 구성에 계층 수준에서 구성된 [edit groups global system services] 문도 포함되어 있는 경우, 해당 문은 상속 후 구성에서 상속 [edit system services] 되어 검색된 구성 데이터에 반환됩니다.

구성 데이터를 파일에 저장하는 방법

또는 모듈을 사용하여 config 구성을 검색할 때 모듈의 dest_dir 또는 juniper_junos_config dest 매개 변수를 포함하여 반환된 구성 데이터를 로컬 Ansible 제어 노드의 파일에 저장할 수 있습니다. dest_dir 옵션은 디렉터리만 지정하며 dest 옵션은 경로와 파일 이름을 모두 지정할 수 있습니다. 대상 이름을 가진 출력 파일이 이미 있는 경우 모듈은 파일을 덮어씁니다.

검색된 구성이 저장되는 로컬 Ansible 제어 노드에서 디렉터리를 지정하려면 인수를 dest_dir 포함하고 대상 디렉터리의 경로를 정의합니다. 각 디바이스에 대한 구성은 .config라는 hostname별도의 파일에 저장됩니다.

다음 플레이북은 인벤토리 그룹의 모든 디바이스에서 커밋된 구성을 검색하고 각 디바이스 구성을 Ansible 제어 노드의 플레이북 디렉터리 아래에 있는 configs 디렉터리의 별도 파일에 저장합니다.

출력 파일의 경로와 파일 이름을 지정하려면 인수를 dest 포함하고 파일의 절대 경로 또는 상대 경로를 정의합니다. 인수를 포함하지만 디렉토리를 dest 생략하면 파일이 플레이북 디렉토리에 저장됩니다. 여러 디바이스에 대한 구성을 검색하는 경우 인수에 dest 각 디바이스의 파일 이름을 구별하는 것과 같은 {{ inventory_hostname }} 변수를 포함해야 합니다. 파일 이름을 구분하지 않으면 각 장치의 구성 파일이 다른 장치의 구성 파일을 덮어씁니다.

다음 플레이북은 인벤토리 그룹의 모든 디바이스에 있는 커밋된 구성 데이터베이스에서 계층을 검색하고 [edit system services] 각 디바이스 구성을 Ansible 제어 노드의 플레이북 디렉터리에 있는 별도의 파일에 저장합니다. 각 파일은 디바이스 호스트 이름으로 고유하게 식별됩니다.

구성 데이터를 파일에 저장하고 모듈의 응답에서 구성 데이터를 복제하지 않으려는 경우 모듈의 인수 목록에 선택적으로 포함할 return_output: false 수 있습니다. 로 설정하면 return_output 모듈의 응답에서 , config_linesconfig_parsed 키가 생략 configfalse 됩니다. 디바이스가 상당한 양의 구성 데이터를 반환하는 경우 이 작업이 필요할 수 있습니다.

활성 구성과 이전 구성을 비교하는 방법

configjuniper_junos_config 모듈을 사용하면 활성 구성을 이전에 커밋된 구성 또는 롤백 구성과 비교할 수 있습니다. 활성 구성을 이전 구성과 비교하려면 다음 모듈 인수를 포함합니다.

기본적으로 인수를 rollback: id 포함하면 모듈이 구성을 롤백하고, 커밋 검사를 수행하고, 변경 내용을 커밋합니다. 구성만 비교하고 모듈이 롤백 구성을 로드 및 커밋하지 않도록 하려면 인수를 포함해야 commit: false 합니다. 인수를 check: false 포함하면 불필요한 커밋 확인 작업을 방지할 수 있습니다.

모듈은 diff 또는 patch 형식의 활성 구성과 이전 구성 간의 구성 차이를 포함하는 및 diff_lines 키를 반환합니다diff.

  • diff— 이름이 prepared 지정된 단일 키와 그 값을 포함하는 사전으로, 차이점을 포함하는 여러 줄로 된 단일 문자열입니다.

    참고:

    릴리스 2.2.0 diff 부터Juniper.junos 키는 문자열 대신 사전을 반환합니다.

  • diff_lines—차이점을 포함하는 한 줄 문자열 목록..

차이점을 로컬 Ansible 제어 노드의 파일에 저장하려면 인수를 diffs_file 포함하고 출력 파일의 절대 또는 상대 경로를 정의합니다. 인수를 포함하지만 디렉토리를 diffs_file 생략하면 파일이 플레이북 디렉토리에 저장됩니다. 여러 디바이스에서 구성을 비교하는 경우 인수에는 diffs_file 각 디바이스의 파일 이름을 구별하는 것과 같은 {{ inventory_hostname }} 변수가 포함되어야 합니다. 파일 이름을 구분하지 않으면 각 장치의 출력 파일이 다른 장치의 출력 파일을 덮어씁니다.

다음 플레이북은 이전에 커밋된 구성의 롤백 ID를 묻는 메시지를 표시하고, 커밋된 구성을 지정된 롤백 구성과 비교하고, 비교를 고유한 이름의 파일에 저장하고, 응답을 표준 출력에 인쇄합니다.

릴리스 기록 테이블
릴리스
설명
2.2.0
릴리스 2.2.0 diff 부터 Juniper.junos 키는 문자열 대신 사전을 반환합니다.
2.0.0
릴리스 2.0.0부터 모듈은 , , junos_install_config junos_get_config및 모듈의 기능을 junos_commit결합하고 대체합니다 junos_rollback. Juniper.junos juniper_junos_config