Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZ를 사용하여 Junos 디바이스 구성

Junos PyEZ를 사용하면 Junos 디바이스에서 구조화되고 비구조화된 구성을 변경할 수 있습니다. 구성 변경을 하는 데 사용되는 사용자 계정에는 각 디바이스에서 구성의 관련 부분을 변경할 수 있는 권한이 있어야 합니다. 사용자를 정의하지 않으면 사용자가 기본으로 지정합니다 $USER.

다음 섹션에서는 구조화 및 비구조화된 구성 변경 사항을 비교하고 테이블 및 뷰를 사용하여 유틸리티 또는 구조화된 구성 변경을 사용하여 Config 구성을 비구조화할 때 Junos PyEZ 구성 프로세스에 대한 세부 정보를 제공합니다.

구조화 및 비구조화 구성 변경 이해

ASCII 텍스트, Junos XML 요소, Junos OS set 명령 또는 JSON(JavaScript Object Notation)으로 형식화된 정적 또는 템플릿화된 구성 데이터를 로딩하는 구성 변경이 유틸리티를 사용하여 jnpr.junos.utils.config.Config 수행됩니다. 이와 반대로 구조화된 구성 변경은 Junos PyEZ 구성 테이블 및 뷰를 사용하여 Junos OS 사용자 계정과 같이 구성할 특정 리소스를 정의합니다. Junos PyEZ 프레임워크에 테이블을 추가하면 Junos PyEZ가 리소스에 대한 구성 클래스를 동적으로 생성하여 디바이스에서 해당 리소스를 프로그래밍 방식으로 구성할 수 있습니다.

유틸리티를 Config 사용하여 Junos 디바이스에서 구성을 비정형으로 변경할 수 있지만 구성 데이터에 대해 허용되는 형식 중 하나와 해당 형식에 대한 올바른 구문을 사용해야 합니다. 지원되는 구성 형식에 익숙하고 구성의 어떤 부분을 수정할 것인지를 원하는 사용자는 구성 변경에 이 방법을 선호할 수 있습니다. 또한 이 Config 유틸리티를 사용하면 이전에 커밋된 구성으로 롤백하거나 기존 복구 구성을 로드할 수 있습니다.

반면에 구조화된 구성 변경은 특정 리소스를 정의하기 위해 테이블과 뷰를 생성해야 하며 디바이스에서 정의된 리소스만 구성할 수 있도록 해야 합니다. 구조화된 리소스를 정의할 때 사용자가 리소스에 대해 구성할 수 있는 구성 명령문을 지정할 수 있으며, 유형 및 제약 조건 검사를 정의하여 사용자가 Junos PyEZ 애플리케이션의 데이터에 대해 수용 가능한 값을 제공하도록 보장할 수도 있습니다. 테이블 및 뷰가 생성되면 쉽게 공유하고 재사용할 수 있습니다. 테이블 사용자는 장비에서 리소스를 프로그래밍 방식으로 구성할 수 있으며 지원되는 구성 형식이나 구문에 대한 지식이 필요하지 않습니다.

표 1 에는 Junos PyEZ가 구성 변경을 지원하는 두 가지 방법이 요약되어 있습니다.

표 1: Junos PyEZ 구조화 및 비구조화 구성 변경

구성 변경 유형

유틸리티

범위

구성 데이터 형식

추가 정보

구조화 된

테이블 및 보기

표 및 보기에 정의된 구성 명령문으로 제한됨

대상 구성 변경에 사용

구성 형식 또는 구문에 대한 지식이 필요하지 않습니다.

구조화 되지 않은

jnpr.junos.utils.config.Config 클래스

구성의 모든 부분

  • 텍스트

  • Json

  • Junos OS set 명령

  • Junos XML

지원:

  • 문자열, XML 객체, 로컬 또는 원격 파일 또는 Jinja2 템플릿에서 구성 데이터를 로딩

  • 복구 구성 로드

  • 이전 버전으로 구성 롤백

이 주제는 일반적인 구성 프로세스와 두 구성 방법 모두에 공통적인 운영 및 요소에 대해 설명합니다. 유틸리티 또는 테이블 및 뷰를 Config 사용하여 구성 업데이트 수행에 대한 자세한 내용은 해당 구성 방법에 대한 설명서를 참조하십시오.

유틸리티를 사용하여 Config 구성을 변경하지 않는 것에 대한 자세한 내용은 다음 주제를 참조하십시오.

구성 테이블 및 뷰를 사용하여 구조화된 구성을 변경하는 데 대한 자세한 내용은 다음 주제를 참조하십시오.

일반 구성 프로세스 이해

Junos PyEZ를 사용하면 Junos 디바이스에서 구성을 변경할 수 있습니다. 디바이스에 성공적으로 연결한 후 원하는 구성 방법에 따라 객체 또는 테이블 객체를 생성 Config 하고 객체와 Device 연결합니다. 예를 들어:

구성 객체

테이블 객체

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

  1. 를 사용하여 lock() 구성 잠금

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

  3. 구성 커밋에서 설명한 대로 , 를 사용하여 commit() 구성 커밋하고 Junos PyEZ를 사용하여 구성 커밋

  4. 를 사용하여 구성 잠금 해제 unlock()

표와 뷰를 사용하여 디바이스에서 구조화된 구성 변경을 수행할 경우 , load()commit()unlock() 메소드를 개별적으로 호출lock()하거나 이 모든 메소드를 자동으로 호출하는 방법을 호출 set() 할 수 있습니다.

참고:

load() 방법은 테이블 객체와 Config 객체에 대해 동일한 기능을 수행하지만, 어떤 객체 유형이 해당 메소드를 호출하느냐에 따라 서로 다른 매개변수를 제공합니다.

구성 모드를 지정하는 방법

기본적으로 Junos PyEZ는 지원자의 글로벌 구성을 업데이트합니다. 또한 구성 데이터베이스를 수정할 때 사용할 다른 구성 모드를 지정할 수도 있습니다. 기본 모드가 아닌 모드를 지정하려면 컨텍스트 관리자(구문)를 사용하여 테이블 객체를with ... as 생성 Config 하고 인수를 mode 원하는 모드로 설정해야 합니다. 지원되는 모드에는 , exclusive, dynamicbatch, 등이 ephemeral포함private됩니다.

기본 모드가 아닌 모드를 지정하면 컨텍스트 관리자가 데이터베이스를 열고 잠금 및 닫고 잠금 해제하는 것을 처리합니다. 따라서 의도치 않게 데이터베이스를 잠긴 상태로 두지 않습니다. 이러한 경우에는 디바이스를 구성하기 위해 전화 load()commit() 메소드만 필요합니다.

다음 예제에서는 모드를 사용하여 구성을 변경합니다 configure private .

참고:

컨텍스트 관리자는 , batchexclusivedynamic또는 ephemeral 모드에서 private구성 데이터베이스를 열고 잠급니다. 따라서 이러한 모드 중 하나에서 또는 set() 메소드를 호출 lock() 하면 예외가 LockError 발생합니다.

Junos PyEZ를 사용하면 이 데이터베이스를 지원하는 장치에 대한 임시 구성 데이터베이스 를 업데이트할 수 있습니다. 임시 데이터베이스는 Junos 장치에서 구성 업데이트를 수행하기 위한 빠른 프로그래밍 인터페이스를 제공하는 대체 구성 데이터베이스입니다.

참고:

임시 구성 데이터베이스는 올바르지 않으면 장비 작동에 심각한 부정적인 영향을 미칠 수 있는 고급 기능입니다. 자세한 내용은 Ephemeral Configuration Database의 이해를 참조하십시오.

임시 구성 데이터베이스의 기본 인스턴스를 열고 구성하려면 인수를 mode='ephemeral' 포함합니다. 예를 들어:

임시 구성 데이터베이스의 사용자 정의 인스턴스를 열고 구성하려면 인수를 mode='ephemeral' 포함시키고 인수를 인스턴스의 이름으로 설정합니다 ephemeral_instance .

로드 작동을 지정하는 방법

Junos PyEZ에서는 Junos OS CLI에서 지원되는 많은 동일한 로드 작업을 사용하여 구성 변경을 로드할 수 있습니다. 표 및 뷰를 사용하여 구조화된 구성 변경을 수행할 때 또는 구조화 또는 비구조화된 구성 변경을 위한 방법에 적합한 매개변수를 set() 포함하거나 load() 생략함으로써 원하는 로드 작업을 지정합니다. 표 2 는 각 로드 작업 유형에 필요한 매개변수 설정을 요약하고 있습니다.

참고:

load overrideload update 작업에는 완전한 구성이 필요하기 때문에 테이블(구성의 overwrite=True 특정 명령문만 수정)을 사용하여 구성을 변경할 때 인자 및 update=True 인수를 사용할 수 없습니다.

표 2: 로드() 및 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

장비 인스턴스의 속성으로 구성 또는 테이블 객체를 만드는 방법

클래스 Device bind() 방법을 사용하면 다양한 인스턴스와 메소드를 인스턴스에 연결할 수 Device 있습니다. Junos PyEZ 애플리케이션에서는 또는 테이블 객체를 인스턴스에 Config 바인딩하는 옵션이 있습니다 Device . 방법의 기능은 변하지 않지만 방법 실행은 약간 다릅니다. 예를 들어:

독립형 변수로서:

바운드 속성으로: