이 페이지의
Junos PyEZ를 사용하여 구성 커밋
Junos PyEZ를 사용하면 Junos 디바이스에서 구조화되고 비구조화된 구성을 변경할 수 있습니다. 디바이스에 연결하고 구성을 수정한 후에는 구성을 활성으로 만들기 위해 구성을 커밋해야 합니다. 이 주제는 구성을 커밋하는 방법과 Junos PyEZ 애플리케이션에서 지원되는 커밋 옵션에 대해 설명합니다.
지원자 구성을 커밋하는 방법
Junos PyEZ jnpr.junos.utils.config.Config 유틸리티를 사용하여 디바이스에서 비구조화된 구성을 변경할 때 인스턴스 commit() 방법을 호출하여 후보 구성을 커밋합니다Config. 예를 들어:
from jnpr.junos import Device
from jnpr.junos.utils.config import Config
from jnpr.junos.exception import ConfigLoadError, CommitError
with Device(host='router1.example.com') as dev:
with Config(dev, mode='exclusive') as cu:
try:
cu.load(path='configs/mx_config.conf', merge=True)
cu.commit()
except (ConfigLoadError, CommitError) as err:
print (err)
컨피규레이션을 커밋하지 않고 구문을 확인하려면 메소드 대신 commit() 메소드를 호출 commit_check() 합니다.
cu.commit_check()
Junos PyEZ 구성 테이블 및 뷰를 사용하여 장비에서 구조화된 구성을 변경할 때, 후보 컨피규레이션을 커밋합니다. 이 메소드 중 하나를 set() 호출하여 자동으로 , commit() load()및 unlock() 메소드를 호출lock()하거나, 다양한 메소드를 개별적으로 호출합니다. 예를 들어:
from jnpr.junos import Device
from myTables.UserConfigTable import UserConfigTable
with Device(host='router1.example.com') as dev:
userconfig = UserConfigTable(dev)
# ...set the values for the configuration data...
userconfig.append()
userconfig.set(merge=True)
마찬가지로 다음과 같은 예에서와 같이 개별 메소드를 호출할 수 있습니다.
from jnpr.junos import Device
from myTables.UserConfigTable import UserConfigTable
with Device(host='router1.example.com') as dev:
userconfig = UserConfigTable(dev)
# ...set the values for the configuration data...
userconfig.append()
userconfig.lock()
userconfig.load(merge=True)
userconfig.commit()
userconfig.unlock()
컨텍스트 관리자를 사용하여 또는 테이블 객체를 Config 생성하고 인수를 로 batchexclusivedynamic설정 mode 하거나ephemeral, 디바이스를 구성하기 private위한 호출 및 commit() 방법만을 지정 load() 하는 경우 컨텍스트 관리자는 데이터베이스를 열고 잠그고 닫고 잠금 해제하는 것을 처리하므로 이러한 모드 중 하나에서 , unlock()또는 set() 메소드로 호출lock()하면 LockError 예외가 발생합니다.
커밋 옵션을 지정하는 방법
Junos CLI는 커밋 주석을 추가하거나 여러 라우팅 엔진에 구성을 동기화하는 등 커밋 작업에 대한 옵션을 제공합니다. Junos PyEZ는 이와 동일한 커밋 옵션과 몇 가지 추가 옵션을 지원합니다. 이 옵션은 적절한 인수를 또는 set() 방법 인수 목록에 포함시켜 Junos PyEZ 애플리케이션에서 commit() 사용할 수 있습니다. 표 1은 지원되는 커밋 옵션을 개략적으로 설명하고 해당 CLI 명령을 제공합니다.
| 커밋 옵션 인수 |
설명 |
CLI 명령 |
|---|---|---|
|
|
시스템 로그 파일과 디바이스의 커밋 기록에서 해당 커밋 작업에 대한 주석을 기록합니다. |
|
|
|
최초 커밋 이후 지정된 시간 내에 커밋 작업을 확인해야 합니다. 그렇지 않으면 이전에 커밋된 구성으로 롤백합니다. 10분의 기본 시간을 사용하도록 인수 |
|
|
|
커밋 프로세스에 대한 자세한 정보가 포함된 XML 객체를 반환합니다. |
|
|
|
다른 라우팅 엔진에 열린 구성 세션이나 커밋되지 않은 구성 변경이 있는 경우에도 두 라우팅 엔진 모두에서 구성을 동기화하고 커밋합니다. |
|
|
|
커밋 작업 중에 발생하는 경고는 무시합니다. 모든 경고를 무시하도록 |
– |
|
|
두 라우팅 엔진 모두에서 구성을 동기화하고 커밋합니다. |
|
|
|
지정된 값을 타임아웃으로 사용하여 작업이 완료될 때까지 기다린다. |
– |
커밋 의견
구성을 커밋할 때는 커밋된 변경의 목적을 설명하는 간단한 설명을 포함할 수 있습니다. 변경 사항을 설명하는 주석을 기록하려면 적절히 매개 변수와 메시지 문자열을 commit() 또는 set() 방법 인수 목록에 포함 comment 하십시오. 예를 들어:
cu.commit(comment='Configuring ge-0/0/0 interface')
인수를 comment 포함하는 것은 CLI에서 구성 모드 명령을 발행하는 것과 commit comment 같습니다. 설명은 시스템 로그 파일에 기록되며 CLI에서 명령을 발행하여 show system commit 볼 수 있는 장비의 커밋 히스토리에 포함됩니다.
커밋 확인
초기 커밋 이후 지정된 시간 내에 커밋 작업을 확인하도록 요구하려면, 인수를 commit() 적절하게 또는 set() 방법 인수 목록에 포함 confirm=minutes
cu.commit(confirm=15)
지정된 시간 제한 내에서 커밋이 확인되지 않으면 장비는 이전에 커밋된 구성으로 자동 롤백하고 로그인한 모든 사용자에게 브로드캐스트 메시지를 보냅니다. 허용 범위는 1~65,535분입니다. 또한 10분의 기본 롤백 시간을 사용하도록 지정할 confirm=True 수도 있습니다. 커밋 작업을 확인하려면 해당 또는 commit_check() 메소드 commit() 중 하나를 호출합니다.
확인된 커밋 작업은 구성 변경이 올바르게 작동하고 장치에 대한 관리 액세스를 차단하지 않는지 확인하는 데 유용합니다. 변경으로 인해 액세스가 차단되거나 다른 오류가 발생하는 경우 이전 구성으로 자동 롤백하면 롤백 기한이 경과한 후에 장비에 액세스할 수 있습니다. 장치에 대한 연결이 끊어지면 연결을 복원하기 위해 Junos PyEZ open() 메소드를 발급해야 합니다.
세부 사항 커밋
인수 commit() 또는 set() 방법 인수 목록에 포함 detail=True 함으로써 전체 커밋 작업의 세부 사항을 검토할 수 있습니다. 이 인수를 포함하면 메소드는 커밋 프로세스에 대한 자세한 정보가 포함된 XML 객체를 반환합니다. 반환 값은 CLI에서 명령의 출력에 있는 요소가 동봉 <commit-results> 한 내용과 commit | display detail | display xml 같습니다.
from lxml import etree
...
commit_detail = cu.commit(detail=True)
print (etree.tostring(commit_detail, encoding='unicode'))
동기화 커밋
디바이스에 듀얼 라우팅 엔진이 있는 경우 인수 또는 set() 방법 인수 목록에 포함 sync=True 함으로써 두 Routing Engines에서 구성을 동기화하고 커밋할 commit() 수 있습니다.
cu.commit(sync=True)
인수를 sync=True 포함하면 디바이스는 로컬 라우팅 엔진에 저장된 후보 구성을 다른 라우팅 엔진으로 복사하고 응시자의 구문적 정확성을 검증한 다음 두 Routing Engines에서 커밋합니다. commit synchronize 다른 Routing Engine에 열린 구성 세션이나 커밋되지 않은 구성 변경이 있더라도 운영이 성공하도록 하려면 이 인수를 사용하여 force_sync=True 구성을 동기화하고 커밋하기 전에 장비가 다른 Routing Engine의 구성 세션을 종료합니다.
cu.commit(force_sync=True)
커밋 및 커밋 체크 타임아웃
RPC가 타임아웃하는 기본 시간은 30초입니다. 큰 구성 변경이 이 값을 초과하면 구성이 업로드, 확인 및 커밋되기 전에 커밋 또는 커밋 확인 작업이 타임 아웃될 수 있습니다. 기본 타임아웃 간격보다 긴 커밋 확인 또는 커밋 시간이 필요할 수 있는 구성 변경을 수용하려면 , commit() 또는 set() 방법 인수 목록에 인수commit_check()를 포함 timeout=seconds 시키고 타임아웃 간격을 적절한 값으로 설정합니다. 예를 들어:
cu.commit_check(timeout=60)
cu.commit(timeout=360)
무시 경고
Junos PyEZ는 RpcError RPC 응답에 경고의 심각도가 높은 요소를 포함하는 경우 예외를 발생시킵 <rpc-error> 니다. 경고에 따라 발생하는 예외를 억제하는 RpcError 것이 필요하거나 바람직한 경우 이 방법의 ignore_warning 매개변수를 포함할 commit() 수 있습니다. 예를 들어:
cu.commit(ignore_warning=True)
이 매개 변수를 사용하는 ignore_warning 것에 대한 자세한 내용은 Junos PyEZ 애플리케이션에서 경고를 위해 제기된 RpcError 억제 예외를 참조하십시오.