Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZ Config 유틸리티를 사용하여 Junos 디바이스 구성

Junos PyEZ를 사용하면 Junos 디바이스에서 구조화된 구성 및 구조화되지 않은 구성을 변경할 수 있습니다. 이 주제는 유틸리티를 사용하여 jnpr.junos.utils.config.Config ASCII 텍스트, Junos XML 요소, Junos OS set 명령 또는 JSON(JavaScript Object Notation)으로 포맷된 정적 또는 템플릿화된 구성 데이터로 구성된 비정형 구성 변경을 수행하는 방법에 대해 설명합니다. 또한 이 Config 유틸리티를 사용하여 이전에 커밋된 구성으로 롤백하거나 복구 구성으로 되돌릴 수 있습니다.

구성 프로세스 개요

Junos 디바이스에 성공적으로 연결한 후 유틸리티를 사용하여 Config 디바이스를 구성하려면 먼저 객체를 생성하고 Config 인스턴스와 Device 연결합니다. 예를 들어:

기본적으로 Junos PyEZ는 후보 글로벌 구성( 공유 구성 데이터베이스라고도 함)을 업데이트합니다. 구성을 변경하기 위한 기본 프로세스는 구성 데이터베이스를 잠그고, 구성 변경 내용을 로드하고, 구성을 커밋하여 활성화한 다음 구성 데이터베이스의 잠금을 해제하는 것입니다. Junos PyEZ Config 유틸리티를 사용하여 공유 구성 데이터베이스에서 구조화되지 않은 구성을 변경하는 경우 여기에 설명된 적절한 인스턴스 메서드를 호출하여 이러한 작업을 수행할 수 있습니다.

  1. 다음을 사용하여 구성을 잠급니다. lock()

  2. 다음 작업 중 하나를 수행하여 구성을 수정합니다.

  3. 구성 커밋Junos PyEZ를 사용하여 구성 커밋에 설명된 대로 을(를) 사용하여 commit() 구성을 커밋합니다

  4. 다음을 사용하여 구성 잠금을 해제합니다. unlock()

컨텍스트 관리자(with ... as 구문)를 사용하여 개체 인스턴스를 만들 Config 수도 있으며, 특정 구성 모드에서는 컨텍스트 관리자를 사용해야 합니다. 이러한 모드의 경우, Junos PyEZ는 자동으로 구성을 잠그고 잠금을 해제합니다. 자세한 내용은 구성 모드 지정을 참조하십시오.

방법을 사용하여 load() 구성을 수정할 때 구성 모드를 지정하는 것 외에도 로드 조작 유형, 구성 변경 형식 및 구성 데이터 소스도 지정할 수 있습니다. 이 유틸리티는 Config Junos CLI에서 사용할 수 있는 것과 동일한 로드 작업 및 형식을 지원합니다. 자세한 내용은 다음을 참조하세요.

구성 데이터의 소스를 로컬 서버의 파일, 대상 디바이스의 파일, 대상 디바이스에서 연결할 수 있는 URL의 파일, 문자열, XML 객체 또는 Jinja2 템플릿으로 지정할 수 있습니다. 구성 데이터 원본 지정에 대한 자세한 내용은 다음 섹션을 참조하십시오.

구성 모드 지정

기본적으로 객체를 생성하고 Config 구성 모드를 명시적으로 지정하지 않으면 Junos PyEZ는 후보 글로벌 구성을 업데이트합니다. 구성 데이터베이스를 수정할 때 사용할 다른 구성 모드를 지정할 수도 있습니다. 기본값 이외의 모드를 지정하려면 컨텍스트 관리자를 사용하여 객체를 작성하고 Config 인수를 mode 원하는 모드로 설정해야 합니다. 지원되는 모드에는 , exclusive, dynamic, batch, 및 ephemeral가 있습니다private.

참고:

Junos PyEZ를 사용하여 이 데이터베이스를 지원하는 디바이스에서 임시 구성 데이터베이스를 업데이트할 수 있습니다. 임시 데이터베이스는 Junos 디바이스에서 구성 업데이트를 수행하기 위한 빠른 프로그래밍 인터페이스를 제공하는 대체 구성 데이터베이스입니다. 잘못 사용하면 장치 작동에 심각한 부정적인 영향을 미칠 수 있는 고급 기능입니다. 자세한 내용은 사용 후 삭제 구성 데이터베이스 이해를 참조하십시오.

기본값 이외의 모드를 지정하면 컨텍스트 관리자가 데이터베이스 열기 및 잠금과 닫기 및 잠금 해제를 처리합니다. 이렇게 하면 실수로 데이터베이스가 잠긴 상태로 유지되는 일이 발생하지 않습니다. 이러한 경우 및 commit() 메서드를 호출 load() 하기만 하면 디바이스를 구성할 수 있습니다.

예를 들어 다음 코드는 후보 구성의 프라이빗 복사본을 여는 모드를 사용하여 configure private 구성을 변경합니다.

다양한 구성 모드에 대한 자세한 내용은 CLI 사용자 가이드Junos PyEZ를 사용하여 Junos 디바이스 구성을 참조하십시오.

로드 작업 지정

Junos PyEZ는 Junos CLI에서 지원되는 것과 동일한 로드 작업을 사용하여 구성 변경 로드를 지원합니다. 메서드에 적절한 매개 변수를 Config load() 포함하거나 생략하여 원하는 로드 작업을 지정합니다.

표 1에서는 지원되는 로드 작업과 해당 load() 메서드 인수를 간략하게 설명합니다. 기본적으로 Junos PyEZ는 load replace 작업을 수행합니다. 다른 로드 작업을 사용하려면 메서드에서 load() 해당 매개 변수를 로 True 설정합니다.

표 1: load() 및 set() 메서드에서 로드 작업 유형을 지정하기 위한 매개변수

로드 작업

인수

설명

최초로 지원되는 Junos PyEZ 릴리스

load merge

merge=True

로드된 구성을 기존 구성과 병합합니다.

1.0

load override

overwrite=True

전체 구성을 로드된 구성으로 대체합니다.

1.0

load patch

patch=True

패치 파일에서 구성 데이터를 로드합니다.

2.4.0

load replace (기본값)

로드된 구성을 기존 구성과 병합하되, 기존 구성의 문을 로드된 구성의 태그를 지정하는 replace: 명령문으로 대체합니다. 기존 구성에 문이 없는 경우 로드된 구성의 문이 추가됩니다.

1.0

load update

update=True

전체 구성을 로드하고 기존 구성과 비교합니다. 로드된 구성에서 다른 각 구성 요소는 기존 구성에서 해당 요소를 대체합니다. 커밋 작업 중에는 변경된 구성 요소의 영향을 받는 시스템 프로세스만 새 구성을 구문 분석합니다.

2.1.0

다음 예제에서는 전체 후보 구성을 로드된 구성으로 대체한 다음 후보 구성을 커밋하여 활성화하는 작업을 수행합니다 load override .

로드할 구성 데이터의 형식을 지정합니다

Junos PyEZ Config 유틸리티를 사용하면 지원되는 표준 형식 중 하나를 사용하여 Junos 디바이스를 구성할 수 있습니다. 구성 데이터를 문자열, 파일, XML 객체 또는 Jinja2 템플릿 객체로 제공할 수 있습니다. 파일에는 구성 데이터 조각 또는 Jinja2 템플릿이 포함될 수 있습니다. 문자열, 파일 또는 Jinja2 템플릿 내에서 구성 데이터를 제공할 때 데이터에 지원되는 형식에는 ASCII 텍스트, Junos XML 요소, Junos OS set 명령 및 JSON이 포함됩니다. 유틸리티 load() 메서드에 Config 매개 변수를 명시적으로 포함 format 하거나 구성 데이터 파일에 적절한 확장을 추가하여 구성 데이터의 형식을 지정할 수 있습니다. 형식을 지정하지 않으면 기본값은 XML입니다.

참고:

Junos PyEZ 릴리스 1.2부터 Junos PyEZ는 구성 데이터를 문자열로 제공할 때 형식을 자동으로 감지합니다.

표 2 에는 구성 데이터에 대해 지원되는 형식과 파일 확장자 및 format 매개변수에 대한 해당 값이 요약되어 있습니다. 구성 데이터에 Junos XML 포맷을 사용하는 경우, 최상위 <configuration> 태그에 데이터를 동봉해야 합니다.

참고:

NETCONF 세션 내에서 직접 디바이스를 구성할 때 필요에 따라 ASCII 텍스트, Junos OS set 명령 또는 JSON <configuration-text>, <configuration-set>또는 <configuration-json> 태그로 포맷된 구성 데이터를 동봉할 필요가 없습니다.

표 2: 구성 데이터 형식 지정

구성 데이터 형식

파일 확장자

format 매개 변수

ASCII 텍스트

.conf, .text .txt

텍스트

JSON(JavaScript Object Notation)

.Json

Json

Junos OS set 명령

.설정

설정

Junos XML 요소

.Xml

Xml

참고:

overwrite 또는 update 매개 변수가 로 설정True되면 Junos OS set 명령 형식을 사용할 수 없습니다.

참고:

Junos OS 릴리스 16.1R1 이상을 실행하는 디바이스는 JSON 형식의 구성 데이터 로드를 지원합니다.

구성 데이터의 위치 지정

Junos PyEZ를 사용하면 구성 데이터를 문자열, 파일, XML 객체 또는 Jinja2 템플릿 객체로 로드할 수 있습니다. 파일에는 구성 데이터 조각 또는 Jinja2 템플릿이 포함될 수 있습니다.

표 3 에는 load() 구성 데이터를 전달하거나 해당 위치를 참조하는 데 사용하는 방법 매개 변수가 요약되어 있습니다. 문자열, XML 객체 또는 파일 확장자로 표시된 형식을 가진 파일을 사용하는 경우를 제외하고는 항상 메서드 호출에 매개 변수를 포함하여 format 데이터 형식을 지정해야 합니다. Jinja2 템플릿을 사용하는 경우 매개 변수를 포함하여 template_vars 필수 템플릿 변수 사전에 전달합니다.

표 3: load() 메서드에서 구성 데이터 참조

매개 변수

구성 데이터 원본

설명

format 매개 변수 요구 사항

path

로컬 파일

ASCII 텍스트, Junos XML 요소, Junos OS set 명령 또는 JSON 형식의 구성 데이터를 포함하는 로컬 구성 관리 서버의 파일 경로입니다.

파일 확장명이 format 데이터 형식을 나타내지 않는 경우 매개 변수를 포함해야 합니다.

template

Jinja2 템플릿 객체

미리 로드된 Jinja2 Template 개체입니다.

template_vars 메서드 인수 목록에 매개 변수를 load() 포함하여 필수 Jinja2 템플릿 변수가 포함된 사전을 참조합니다.

파일 확장명이 format 데이터 형식을 나타내지 않는 경우 매개 변수를 포함해야 합니다.

template_path

로컬 Jinja2 템플릿 파일

ASCII 텍스트, Junos XML 요소, Junos OS set 명령 또는 JSON 형식의 Jinja2 템플릿이 포함된 로컬 구성 관리 서버의 파일 경로입니다.

template_vars 메서드 인수 목록에 매개 변수를 load() 포함하여 필수 Jinja2 템플릿 변수가 포함된 사전을 참조합니다.

파일 확장명이 format 데이터 형식을 나타내지 않는 경우 매개 변수를 포함해야 합니다.

url

원격 파일

FTP 또는 HTTP(Hypertext Transfer Protocol) URL을 사용하여 Junos 디바이스에서 연결할 수 있는 원격 URL 또는 Junos 디바이스에 있는 파일의 경로입니다.

파일 확장명이 format 데이터 형식을 나타내지 않는 경우 매개 변수를 포함해야 합니다.

vargs[0]

XML 객체

문자열

XML 객체 또는 ASCII 텍스트, Junos XML 요소, Junos OS set 명령 또는 JSON 형식의 구성 데이터를 포함하는 문자열입니다.

Junos PyEZ는 이 경우 구성 데이터의 형식을 자동으로 감지하므로 format 매개 변수가 필요하지 않습니다.

로컬 또는 원격 파일에서 구성 데이터 로드

Junos PyEZ를 사용하면 로컬 또는 원격 파일에서 ASCII 텍스트, Junos XML 요소, Junos OS set 명령 또는 JSON 형식의 구성 데이터를 로드할 수 있습니다.

구성 관리 서버의 로컬 파일에서 구성 데이터를 로드하려면 메서드의 path 매개 변수를 파일의 절대 경로 또는 상대 경로로 설정합니다 load() . 예를 들어:

또한 Junos 디바이스에 있는 파일 또는 Junos 디바이스에서 연결할 수 있는 URL에서 구성 데이터를 로드할 수도 있습니다. Junos 디바이스의 파일에서 구성 데이터를 로드하려면 매개 변수를 대상 디바이스에 있는 파일의 절대 또는 상대 경로로 설정하고 url 로드 작업에 필요한 다른 매개 변수를 포함합니다. 예를 들어:

원격 URL에 있는 파일에서 구성 데이터를 로드하려면 매개변수를 원격 파일의 FTP 위치 또는 HTTP(Hypertext Transfer Protocol) URL로 설정하고 url 로드 조작에 필요한 다른 매개변수를 포함하십시오. 예를 들어:

URL 지정에 대한 자세한 내용은 Junos XML 프로토콜<load-configuration> 작업의 속성을 참조하십시오url.

로드할 구성 데이터의 형식 지정에 나열된 허용 파일 확장명 중 하나를 사용하여 파일이 구성 데이터의 형식을 나타내지 않는 경우 메서드 매개 변수 목록에 매개 변수를 load() 포함하여 format 형식을 지정해야 합니다. 예를 들어:

Jinja2 템플릿 또는 템플릿 파일에서 구성 데이터를 로드하는 방법에 대한 자세한 내용은 Jinja2 템플릿을 사용하여 구성 데이터 로드 단원을 참조하십시오.

문자열에서 구성 데이터 로드Load Configuration Data from a String

문자열에서 ASCII 텍스트, Junos XML 요소, Junos OS set 명령 또는 JSON으로 포맷된 구성 데이터를 로드하려면 문자열을 메서드 인수 목록의 첫 번째 인수 load() 로 포함합니다. Junos PyEZ는 문자열에서 구성 데이터의 형식을 자동으로 감지하므로 format 이 경우 매개 변수는 선택 사항입니다.

다음 코드 조각은 다양한 형식의 구성 데이터와 메서드에 대한 load() 해당 호출이 포함된 샘플 여러 줄 문자열을 제공합니다. 선택적 format 매개 변수는 명확성을 위해 각 예제에 명시적으로 포함되어 있습니다. 예제에서 은(는) cu 대상 Junos 디바이스에서 작동하는 유틸리티의 Config 인스턴스입니다.

  • ASCII 텍스트 형식의 구성 데이터의 경우:

    문자열(string)을 목록의 첫 번째 인수로 제공하여 구성 데이터를 로드하고, 선택적으로 을(를) 지정합니다 format="text".

  • Junos XML 형식의 구성 데이터의 경우:

    문자열(string)을 목록의 첫 번째 인수로 제공하여 구성 데이터를 로드하고, 선택적으로 을(를) 지정합니다 format="xml".

  • Junos OS set 명령 형식의 구성 데이터의 경우:

    문자열(string)을 목록의 첫 번째 인수로 제공하여 구성 데이터를 로드하고, 선택적으로 을(를) 지정합니다 format="set".

  • JSON을 사용하여 형식이 지정된 구성 데이터의 경우:

    문자열(string)을 목록의 첫 번째 인수로 제공하여 구성 데이터를 로드하고, 선택적으로 을(를) 지정합니다 format="json".

XML 객체로 서식이 지정된 구성 데이터 불러오기

XML 객체 형식의 구성 데이터를 불러오려면 객체를 메서드 인수 목록의 첫 번째 인수 load() 로 포함시키고 다른 필수 매개 변수를 제공하십시오. 구성 데이터의 기본 형식이 XML이기 때문에 메서드 호출에 매개 변수를 명시적으로 포함할 format 필요가 없습니다.

다음 코드에서는 XML 객체와 해당 메서드 호출을 보여 줍니다.load()

Jinja2 템플릿을 사용하여 구성 데이터 로드

Junos PyEZ는 Jinja2 템플릿을 사용하여 Junos 구성 데이터를 렌더링할 수 있도록 지원합니다. Jinja는 사전 정의된 템플릿에서 문서를 생성할 수 있는 Python용 템플릿 엔진입니다. 원하는 언어로 된 텍스트 파일인 템플릿은 표현식과 변수를 사용하여 유연성을 제공합니다. ASCII 텍스트, Junos XML 요소, Junos OS 명령 및 JSON을 포함하는 지원되는 구성 형식 중 하나로 Jinja2 템플릿을 사용하여 Junos 구성 set 데이터를 생성할 수 있습니다. Junos PyEZ는 Jinja2 템플릿과 제공된 변수 사전을 사용하여 구성 데이터를 렌더링합니다.

Jinja2 템플릿은 특히 유사한 구성 스탠자에 대해 구성 데이터를 생성하는 강력한 방법을 제공합니다. 예를 들어, 디바이스의 각 인터페이스에 대해 동일한 구성 문을 수동으로 추가하는 대신, 인터페이스 목록을 반복하고 각 인터페이스에 필요한 구성 문을 생성하는 템플릿을 만들 수 있습니다. 진자에서 블록은 '{%'와 '%}'로 구분되고 변수는 '{{'와 '}}'로 묶입니다.

다음 샘플 Jinja2 템플릿은 주어진 목록의 각 인터페이스에 대해 논리 유닛 0에서 MPLS를 활성화하고 MPLS 및 RSVP 프로토콜에 따라 인터페이스를 구성하는 구성 데이터를 생성합니다.

Junos PyEZ 코드에서 해당 Jinja2 템플릿 변수 사전은 다음과 같습니다.

Junos PyEZ 코드에서 Jinja2 템플릿을 로드하려면 매개 변수를 템플릿 파일의 경로로 설정하고 template_path 매개 변수를 템플릿 변수 사전으로 설정합니다template_vars. 허용되는 파일 확장명 중 하나를 사용하여 구성 데이터의 형식을 나타내지 않는 경우 메서드 매개 변수 목록에 매개 변수를 load() 포함해야 format 합니다.

참고:

미리 로드된 Jinja2 템플릿 개체를 제공하는 경우 메서드 인수 목록에서 매개 변수 대신 template_path 매개 변수를 load() 사용해야 template 합니다.

Junos PyEZ는 Jinja2 템플릿과 변수 사전을 사용하여 다음과 같은 구성 데이터를 렌더링하며, 이 데이터는 후보 구성에 로드되어 디바이스에 커밋됩니다.

다음 동영상은 Jinja2 템플릿을 사용하여 Junos 디바이스를 구성하는 방법을 보여주는 짧은 Python 세션을 보여줍니다.

Jinja2에 대한 자세한 내용은 https://jinja.pocoo.org/docs/ 의 Jinja2 설명서를 참조하십시오.

구성 롤백

Junos 디바이스는 플랫폼에 따라 가장 최근에 커밋된 구성의 사본과 최대 49개의 이전 구성을 저장합니다. 저장된 구성으로 롤백할 수 있습니다. 이는 구성 변경으로 인해 바람직하지 않은 결과가 발생하고 알려진 작업 구성으로 되돌리려는 경우에 유용합니다. 구성 롤백은 디바이스에서 구성을 변경하는 프로세스와 유사하지만, 구성 데이터를 로드하는 대신 전체 후보 구성을 이전에 커밋된 구성으로 대체하는 롤백을 수행합니다.

Junos PyEZ jnpr.junos.utils.config.Config 클래스 rollback() 메서드를 사용하면 Junos 디바이스에서 구성을 롤백할 수 있습니다. 구성을 롤백하려면 메서드를 호출 rollback() 하고 인수를 rb_id 롤백 구성의 ID로 설정합니다. 유효한 ID 값은 0(가장 최근에 커밋된 구성의 경우 0)에서 저장된 이전 구성 수(최대 49개)보다 1이 적은 값입니다. 메서드 호출에서 이 매개 변수를 생략하면 기본값은 0이 됩니다.

다음 예제에서는 복원할 구성의 롤백 ID를 입력하라는 메시지를 표시하고, 구성을 롤백하고, 구성 차이를 인쇄한 다음, 구성을 커밋하여 디바이스의 활성 구성으로 만듭니다.

오류 처리를 포함하는 보다 광범위한 예는 예: Junos PyEZ를 사용하여 구성 롤백을 참조하십시오.

복구 구성 불러오기

복구 구성을 사용하면 알려진 작동 구성 또는 언제든지 복원할 수 있는 알려진 상태의 구성을 정의할 수 있습니다. 알려진 구성으로 되돌려야 할 때 또는 라우터 또는 스위치 구성과 백업 구성 파일이 복구할 수 없을 정도로 손상된 경우 최후의 수단으로 복구 구성을 사용합니다. 복구 구성을 생성하면 디바이스는 가장 최근에 커밋된 구성을 복구 구성으로 저장합니다.

Junos PyEZ jnpr.junos.utils.config.Config 유틸리티를 사용하면 Junos 디바이스에서 복구 구성을 관리할 수 있습니다. 클래스의 인스턴스를 Config 만든 후 메서드를 사용하여 rescue() 복구 구성을 관리합니다. method action 매개 변수를 원하는 작업으로 설정하여 rescue() 복구 구성에서 수행할 작업을 지정합니다.

기존 복구 구성을 후보 구성으로 로드하려면 을(를) 지정합니다 action="reload". 복구 구성이 존재하지 않는 경우, 로드 작업은 를 반환합니다 False. 복구 구성을 로드한 후, 구성을 커밋하여 디바이스에서 활성 구성으로 만들어야 합니다.

다음 예제에서는 복구 구성(있는 경우)을 로드하고 커밋합니다.

복구 구성 생성, 검색 또는 삭제에 대한 정보와 추가 예제는 Junos PyEZ를 사용하여 Junos 디바이스에서 복구 구성 관리를 참조하십시오.

구성 커밋

구성을 수정한 후에는 구성을 커밋하여 디바이스에서 활성 구성으로 만들어야 합니다. 유틸리티를 사용하여 Config 디바이스에서 구조화되지 않은 구성을 변경할 때 메서드를 호출하여 후보 구성을 커밋합니다 commit() .

Junos PyEZ 스크립트에서 커밋 작업 및 지원되는 커밋 옵션에 대한 자세한 내용은 Junos PyEZ를 사용하여 구성 커밋을 참조하십시오.

변경 내역 테이블

기능 지원은 사용 중인 플랫폼 및 릴리스에 따라 결정됩니다. 기능 탐색기 를 사용하여 플랫폼에서 기능이 지원되는지 확인합니다.

릴리스
설명
1.2
Junos PyEZ 릴리스 1.2부터 Junos PyEZ는 구성 데이터를 문자열로 제공할 때 형식을 자동으로 감지합니다.