Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

요약  Juniper Networks Ansible 모듈을 사용하여 Junos OS를 실행하는 디바이스에서 구성을 검색하거나 비교합니다.

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

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

컨텐츠 세트

모듈 이름

juniper.device 컬렉션

config

Juniper.junos 역할

juniper_junos_config

참고:

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

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

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

구성 데이터의 소스 데이터베이스를 지정하는 방법

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

커밋된 구성 데이터베이스

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

후보 구성 데이터베이스

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

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

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

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

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

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

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

구성을 검색하기 위해 또는 juniper_junos_config 모듈을 사용하는 config 경우, 모듈은 Junos OS 구성 데이터를 형식화된 텍스트, Junos XML 요소, Junos OS set 명령 또는 JSON(JavaScript Object Notation)으로 반환할 수 있는 Junos XML 프로토콜 <get-configuration> 작업을 호출합니다. 기본적으로 모듈은 새라인, 탭 및 기타 공백, 중괄호, 사각형 브래킷을 사용하여 명령문 간의 계층적 관계를 나타내는 형식의 텍스트로 구성 데이터를 반환합니다.

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

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

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

Junos OS를 실행하는 디바이스에서 표준화 또는 맞춤형 YANG 모듈을 로드하여 Junos OS에서 기본적으로 지원되지는 않지만 변환으로 지원될 수 있는 데이터 모델을 추가할 수 있습니다. 이러한 모델에 대해 정의된 구문을 사용하여 후보 컨피규레이션에서 비논의적 데이터 모델을 구성합니다. 구성을 커밋하면 데이터 모델의 변환 스크립트가 해당 데이터를 변환하고 해당 Junos OS 구성을 체크아웃 구성의 임시 변경으로 커밋합니다.

후보 및 활성 컨피규레이션에는 이들 모델이 정의한 구문에서 비논의적 YANG 데이터 모델의 구성 데이터가 포함되어 있습니다. 표준juniper_junos_config(IETF, OpenConfig) 및 맞춤형 YANG 데이터 모델을 위한 구성 데이터를 검색하는 것은 물론, 해당 모듈 인수를 포함하여 기본 Junos OS 구성을 검색할 수 config 있습니다. 기본적으로 타사 YANG 데이터 모델의 구성 데이터는 모듈의 응답에 포함되지 않습니다.

Junos OS 구성을 검색할 뿐만 아니라 비내구성 YANG 데이터 모델에 의해 정의된 구성 데이터를 검색하려면 매개 변수로 model 모듈을 실행하고 적절한 경우 매개 변수를 namespace 포함합니다. 인수는 model 다음 값 중 하나를 취합니다.

  • custom—맞춤형 YANG 데이터 모델에 의해 정의된 구성 데이터를 검색합니다. 사용자 지정 YANG 데이터 모델의 데이터 검색 시 인수를 포함 namespace 해야 합니다.

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

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

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

인수에 ietf 대한 model 값을 openconfig 지정하면 모듈이 자동으로 해당 네임스페이스를 사용합니다. 사용model: "custom"함으로써 맞춤형 YANG 데이터 모델의 데이터를 검색하는 경우, 해당 네임스페이 namespace 스에 인수를 포함해야 합니다.

값을 customietf포함한 인수를 model 포함하거나 openconfig 특정 XML 서브트리를 반환하기 위한 인수를 포함하는 filter 경우, Junos OS는 비내구성 데이터 모델에서만 일치하는 계층만 반환합니다. Junos OS 구성에 같은 이름의 계층(예: "인터페이스")이 포함되어 있는 경우 응답에 포함되지 않습니다. 를 사용할 model: "True"때 옵션이 filter 지원되지 않습니다.

비논의적 구성 데이터를 검색하기 위해 또는 juniper_junos_config 모듈을 사용하는 config 경우 매개 변수를 포함하는 경우에만 반환된 데이터의 형식을 filter 지정할 수 있습니다. 매개 변수를 생략할 경우 을 filter 지정format: "xml"해야 합니다.

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

다음 작업은 지정된 네임스페이 l2vpn 스를 가진 맞춤형 YANG 데이터 모델을 위해 커밋된 구성에서 구성 계층을 검색합니다.

다음 작업은 장비에 추가된 다른 YANG 데이터 모델의 구성 데이터뿐만 아니라 전체 Junos OS 커밋 구성을 검색합니다.

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

구성을 config 검색하기 위해 또는 juniper_junos_config 모듈을 사용하면 모듈이 Junos XML 프로토콜 <get-configuration> 작업을 호출합니다. 모듈은 많은 속성(예: 속성)에 <get-configuration> 대한 명시적 인수를 format 지원합니다. 모듈은 또한 동등한 모듈 인수를 가지고 있지 않은 추가 <get-configuration> 속성을 포함 할 수 있도록 인수를 지원 options 합니다. 인수는 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 참조하십시오.

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

다음 플레이북은 상속 후 커밋된 구성에서 [edit system services] 계층 수준에서 구성 데이터를 검색합니다. 이 경우 컨피규레이션에 계층적 수준에서 구성된 [edit groups global system services] 명령문이 포함되어 있는 경우, 이러한 명령문은 상속 후 구성에서 상속되어 [edit system services] 검색된 구성 데이터에서 반환됩니다.

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

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

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

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

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

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

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

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

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

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

모듈은 diff 또는 패치 형식으로 diff 활성 구성과 diff_lines 이전 구성 간의 구성 차이점을 포함하는 키와 키를 반환합니다.

  • diff— 단일 키와 prepared 그 값을 포함하는 딕셔닝( 차이점을 포함하는 단일 다중 줄 문자열).

    참고:

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

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

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

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

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