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 디바이스 구성을 검색하거나 비교하는 데 사용할 수 있는 사용 가능한 모듈이 요약되어 있습니다.

표 1: 구성 검색 또는 비교를 위한 모듈

콘텐츠 세트

모듈 이름

juniper.device 수집

config

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

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

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

모듈을 사용하여 juniper.device.config 구성을 검색할 때 모듈의 인수 목록에 매개 변수를 포함 retrieve 해야 합니다. 매개변수는 retrieve 데이터를 검색할 구성 데이터베이스를 지정합니다. 다음 값으로 설정하여 retrieve 각 데이터베이스에서 구성 데이터를 반환할 수 있습니다.

  • retrieve: 'candidate'- 후보 구성에서 데이터를 검색합니다.

  • retrieve: 'committed'- 커밋된 구성에서 데이터를 검색합니다.

커밋된 구성 데이터베이스

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

후보 구성 데이터베이스

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

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

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

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

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

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

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

모듈을 사용하여 juniper.device.config 구성을 검색할 때 모듈은 Junos XML 프로토콜 <get-configuration> 작업을 호출하며, 이 작업은 구성 데이터를 다른 형식으로 반환할 수 있습니다. 기본적으로 모듈은 구성 데이터를 형식이 지정된 텍스트로 반환합니다. 텍스트 형식은 줄 바꿈, 탭 및 기타 공백, 중괄호 및 대괄호를 사용하여 문 간의 계층적 관계를 나타냅니다.

구성 데이터를 반환할 형식을 지정하려면 모듈의 config format 매개 변수를 원하는 형식으로 설정합니다. 허용되는 값은 다음과 같습니다.

  • 'json'—JSON(JavaScript Object Notation)

  • 'set'—Junos OS set 명령어

  • 'text'- 서식이 지정된 텍스트(기본값)

  • 'xml'—Junos XML 요소

플레이북 출력에서 및 config_lines 키에는 config 요청된 형식의 구성이 포함됩니다. Junos XML 또는 JSON 형식을 요청하는 경우, 키에는 config_parsed JSON 형식의 동등한 구성이 포함됩니다.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

동등한 모듈 인수가 없는 옵션을 지정하는 방법

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

Junos XML 프로토콜 <get-configuration> 작업이 지원하는 전체 속성 목록은 <get-configuration>을 참조하십시오.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • diff— 라는 prepared 단일 키와 그 값(차이점을 포함하는 여러 줄 단일 문자열)을 포함하는 딕셔너리.

  • diff_lines- 차이점을 포함하는 한 줄 문자열 목록입니다.

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

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