이 페이지의 내용
Junos PyEZ를 사용하여 구성 커밋
Junos PyEZ를 사용하면 Junos 디바이스에서 구조화 및 비구조화 구성을 변경할 수 있습니다. 디바이스에 연결하고 구성을 수정한 후, 구성을 커밋하여 활성화해야 합니다. 이 주제에서는 구성을 커밋하는 방법과 Junos PyEZ 애플리케이션에서 지원되는 커밋 옵션에 대해 설명합니다.
후보 구성을 커밋하는 방법
Junos PyEZ jnpr.junos.utils.config.Config 유틸리티를 사용하여 디바이스에서 구조화되지 않은 구성을 변경할 때는 instance 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_check() 합니다.commit()
cu.commit_check()
Junos PyEZ 구성 테이블 및 뷰를 사용하여 디바이스에서 구조화된 구성을 변경할 때, , load()및 commit() unlock() 메서드를 lock()자동으로 호출하는 메서드를 set() 호출하거나 다양한 메서드를 개별적으로 호출하여 후보 구성을 커밋합니다. 예를 들면 다음과 같습니다.
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()
컨텍스트 관리자를 사용하여 or 테이블 개체를 Config 만들고 인수를 private, exclusive, dynamic, batch또는 ephemeral로 설정하는 mode 경우 디바이스를 구성하기 위해 and commit() 메서드만 호출 load() 합니다. 컨텍스트 관리자는 데이터베이스의 열기 및 잠금, 닫기 및 잠금 해제를 처리하므로 이러한 모드 중 하나에서 , unlock(), 또는 set() 메서드를 lock()호출하면 LockError 예외가 발생합니다.
커밋 옵션 지정 방법
Junos CLI는 커밋 코멘트를 추가하거나 여러 라우팅 엔진에서 구성을 동기화하는 것과 같은 커밋 작업에 대한 옵션을 제공합니다. Junos PyEZ는 이와 동일한 커밋 옵션과 몇 가지 추가 옵션을 지원하며, 이는 or 메서드 인수 목록에 적절한 인수를 commit() set() 포함하여 Junos PyEZ 애플리케이션에서 사용할 수 있습니다. 표 1 은 지원되는 커밋 옵션을 간략하게 설명하고 해당 CLI 명령을 제공합니다.
| 커밋 옵션 인수 |
설명 |
CLI 명령 |
|---|---|---|
|
|
시스템 로그 파일 및 디바이스의 커밋 기록에 해당 커밋 작업에 대한 코멘트를 기록합니다. |
|
|
|
초기 커밋 후 지정된 시간 내에 커밋 작업을 확인해야 합니다. 그렇지 않으면 이전에 커밋한 구성으로 롤백합니다. 인수를 에 설정하여 |
|
|
|
커밋 프로세스에 대한 자세한 정보가 포함된 XML 객체를 반환합니다. |
|
|
|
다른 라우팅 엔진에 열려 있는 구성 세션이나 커밋되지 않은 구성 변경 사항이 있더라도 두 라우팅 엔진에서 구성을 동기화하고 라우팅 엔진을 커밋합니다. |
|
|
|
커밋 작업 중에 발생하는 경고를 무시합니다. 인수를 로 |
– |
|
|
두 라우팅 엔진에서 구성을 동기화하고 커밋합니다. |
|
|
|
지정된 값을 시간 제한으로 사용하여 작업이 완료될 때까지 기다립니다. |
– |
커밋 코멘트
구성을 커밋할 때 커밋된 변경 사항을 설명하는 간단한 코멘트를 포함할 수 있습니다. 변경사항을 설명하는 주석을 기록하려면 매개 변수와 comment 메시지 문자열 commit() 을 또는 set() 메서드 인수 목록에 적절하게 포함합니다. 예를 들면 다음과 같습니다.
cu.commit(comment='Configuring ge-0/0/0 interface')
인수를 포함하는 comment 것은 CLI에서 구성 모드 명령을 실행하는 commit comment 것과 같습니다. 코멘트는 시스템 로그 파일에 기록되고 디바이스의 커밋 기록에 포함되며, CLI에서 명령을 실행 show system commit 하여 볼 수 있습니다.
커밋 확인
초기 커밋 후 지정된 시간 내에 커밋 작업을 확인하도록 요구하려면 필요에 따라 또는 set() 메서드 인수 목록에 인수를 commit() 포함 confirm=minutes 합니다.
cu.commit(confirm=15)
주어진 시간 제한 내에 커밋이 확인되지 않으면 디바이스는 이전에 커밋된 구성으로 자동 롤백하고 로그인한 모든 사용자에게 브로드캐스트 메시지를 보냅니다. 허용되는 범위는 1분에서 65,535분입니다. 기본 롤백 시간인 10분을 사용하도록 지정할 confirm=True 수도 있습니다. 커밋 작업을 확인하려면 or commit_check() 메서드를 호출합니다commit().
확인된 커밋 작업은 구성 변경이 올바르게 작동하는지 확인하는 데 유용하며 디바이스에 대한 관리 액세스를 차단하지 않습니다. 이러한 변경으로 인해 액세스가 차단되거나 다른 오류가 발생하는 경우, 이전 구성으로의 자동 롤백을 통해 롤백 기한이 지난 후 디바이스에 액세스할 수 있습니다. 디바이스에 대한 연결이 끊어지면 연결을 복원하려면 Junos PyEZ open() 메서드를 실행해야 합니다.
커밋 세부 정보
또는 set() 메서드 인수 목록에 인수를 commit() 포함하여 detail=True 전체 커밋 작업의 세부 정보를 검토할 수 있습니다. 이 인수를 포함하면 메서드는 커밋 프로세스에 대한 자세한 정보가 포함된 XML 개체를 반환합니다. 반환 값은 CLI의 명령 출력 commit | display detail | display xml 에서 요소로 <commit-results> 둘러싸인 내용과 동일합니다.
from lxml import etree
...
commit_detail = cu.commit(detail=True)
print (etree.tostring(commit_detail, encoding='unicode'))
커밋 동기화
디바이스에 이중 라우팅 엔진이 있는 경우, or set() method 인수 목록에 인 commit() 수를 포함하여 sync=True 두 라우팅 엔진에서 구성을 동기화하고 커밋할 수 있습니다.
cu.commit(sync=True)
인수를 포함 sync=True 하면 디바이스는 로컬 라우팅 엔진에 저장된 후보 구성을 다른 라우팅 엔진으로 복사하고 후보의 구문 정확성을 검증한 후 두 라우팅 엔진에서 커밋합니다. 다른 라우팅 엔진에서 열려 있는 구성 세션이나 커밋되지 않은 구성 변경이 있더라도 작업이 성공하도록 강제 commit synchronize 하려면, 인수를 사용하면 force_sync=True 디바이스가 구성을 동기화하고 커밋하기 전에 다른 라우팅 엔진에서 구성 세션을 종료하게 됩니다.
cu.commit(force_sync=True)
커밋 및 커밋 체크 타임아웃
RPC의 시간 초과 기본 시간은 30초입니다. 대규모 구성 변경은 이 값을 초과하여 구성을 업로드, 확인 및 커밋하기 전에 커밋 또는 커밋 검사 작업의 시간이 초과될 수 있습니다. 커밋 확인이 필요할 수 있는 구성 변경 또는 기본 시간 초과 간격보다 긴 커밋 시간을 수용하려면 , 또는 set() commit() 메서드 인수 목록에 인수를 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 예외 억제를 참조하십시오.