커밋 스크립트의 작동 방식
커밋 스크립트에는 사용자 지정 구성 규칙을 적용하는 명령이 포함되어 있으며, 표준 Junos OS 유효성 검사가 수행되기 전에 커밋 프로세스 중에 호출됩니다. 하나 이상의 커밋 스크립트 파일의 이름을 계층 수준에 나열하여 커밋 스크립트를 [edit system scripts commit]
활성화합니다. 이러한 파일은 장비의 적절한 커밋 스크립트 디렉토리에 추가되어야 합니다.
커밋 작업을 수행할 때 Junos OS는 각 스크립트를 차례로 실행하여 상속 후 후보 구성 의 정보를 스크립트에 전달합니다. 스크립트는 구성을 검사하고, 필요한 테스트 및 검증을 수행하며, 특정 작업을 수행하기 위한 지침 집합을 생성합니다. 모든 커밋 스크립트가 실행된 후에 Junos OS는 스크립트의 모든 명령을 처리합니다. 커밋 스크립트에 의해 커밋 프로세스가 중단되지 않으면 Junos OS는 모든 커밋 스크립트 변경을 적용하고 체크아웃 구성에 대한 최종 검사를 수행합니다.
하나 이상의 커밋 스크립트에 의해 검사되는 구성을 커밋할 때 대규모 구성의 처리를 수용하기 위해 커밋 스크립트에 할당되는 메모리의 양을 늘려야 할 수도 있습니다. 기본적으로 실행된 스크립트의 데이터 세그먼트 부분에 할당되는 최대 메모리 양은 시스템의 전체 가용 메모리의 절반으로 최대 128MB의 값입니다. 실행된 각 커밋 스크립트에 할당되는 최대 메모리를 늘리려면 구성을 커밋하기 전에 계층 수준에서 적절한 메모리 제한 바이트로 [edit system scripts commit]
명령문을 구성 max-datasize size
합니다.
커밋 스크립트 작업에는 생성 오류, 경고 및 시스템 로그 메시지가 포함될 수 있습니다. 오류가 발생하면 커밋 작업에 실패하고 후보 구성은 변경되지 않습니다. 이는 표준 커밋 오류로 발생하는 것과 동일한 동작입니다. 커밋 스크립트는 시스템 구성에 대한 변경을 생성할 수도 있습니다. 변경은 표준 검증 검사가 실행되기 전에 로드되기 때문에 스크립트가 적용되기 전에 구성에 이미 있는 명령문과 마찬가지로 올바른 구문에 대한 유효성이 검증됩니다. 구문이 올바르면 구성이 활성화되고 활성 디바이스 구성이 됩니다.
커밋 스크립트는 보호된 명령문이나 보호된 계층 내에서 구성을 변경할 수 없습니다. 커밋 스크립트가 보호되는 명령문이나 계층을 수정하거나 삭제하려고 시도하는 경우, Junos OS는 변경을 할 수 없다는 경고를 발행합니다. 보호된 구성 요소를 수정하지 않으면 커밋 스크립트나 커밋 프로세스가 중단되지 않습니다.
다음 섹션에서는 커밋 스크립트 입력 및 출력과 관련된 몇 가지 중요한 개념에 대해 설명합니다.
커밋 스크립트 입력
커밋 스크립트의 입력은 Junos XML API 형식의 상속 후 후보 구성입니다. 상속 후 라는 용어는 모든 구성 그룹 값이 후보 구성의 대상에 의해 상속되고 구성의 비활성 부분이 제거되었음을 의미합니다. 구성 그룹에 대한 자세한 내용은 CLI 사용자 가이드를 참조하십시오.
명령을 실행 commit
하면 Junos OS는 지원자 구성을 XML 형식으로 자동으로 생성하고 관리(mgd) 프로세스로 읽습니다. 이때 입력이 커밋 스크립트에 의해 평가됩니다.
CLI에서 상속 후 후보 구성의 XML 형식을 표시하려면 명령을 실행합니다 show | display commit-scripts view
.
[edit] user@host# show | display commit-scripts view
그룹에 대한 스크립트 생성 변경을 포함하여 모든 구성 그룹 데이터를 표시하려면 명령을 실행합니다 show groups | display commit-scripts
.
[edit] user@host# show groups | display commit-scripts
커밋 스크립트 출력
커밋 프로세스가 진행되는 동안 활성화된 커밋 스크립트가 순차적으로 실행되고 커밋 스크립트 출력 또는 명령 집합이 Junos OS에 제공됩니다. 모든 커밋 스크립트가 실행된 후에 Junos OS는 스크립트의 모든 명령을 처리합니다.
커밋 스크립트 작업에는 경고, 오류 및 시스템 로그 메시지를 생성하고 구성을 영구적이고 임시로 변경하는 작업이 포함될 수 있습니다. 표 1 에는 커밋 프로세스 중에 Junos OS에 다양한 작업을 수행하도록 명령하는 데 스크립트를 커밋하는 데 사용할 수 있는 다양한 요소, 템플릿 및 기능이 간략하게 설명되어 있습니다. 경우에 따라 동일한 작업을 수행하는 여러 방법이 있습니다. SLAX 및 XSLT 스크립트는 결과 트리를 반환하기 때문에 SLAX 및 XSLT 스크립트와 같은 <syslog><message>
출력 요소는 결과 트리에 직접 추가됩니다.
커밋 스크립트 출력 |
SLAX / XSLT |
파이썬 |
---|---|---|
커밋하는 사용자에게 경고 메시지를 생성합니다. |
|
jcs.emit_warning() |
오류 메시지를 생성하고 커밋 작업에 장애가 발생합니다. |
|
jcs.emit_error() |
시스템 로그 메시지를 생성합니다. |
jcs:syslog()
|
jcs.syslog() |
구성에 대한 지속적인 변경을 생성합니다. |
|
emit_change(content'변경', format) |
구성에 대한 임시 변경을 생성합니다. |
|
emit_change(content'일시적 변화', format) |
XPath 표현식에서 정의한 현재 컨텍스트 노드에 대한 영구 변경을 생성합니다. |
Xslt <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="content"> Slax call jcs:emit-change() { with $content = { } } |
– |
XPath 표현식에 의해 정의된 현재 컨텍스트 노드에 대한 임시 변경을 생성합니다. |
Xslt <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="tag" select="'transient-change'"/> <xsl:with-param name="content"> Slax call jcs:emit-change() { with $tag = "transient-change"; with $content = { } } |
– |
구성 변경과 함께 경고 메시지를 생성합니다. 이 태그 세트를 사용하여 구성이 변경되었다는 알림을 생성할 수 있습니다. |
Xslt <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="message"> <xsl:text> Slax call jcs:emit-change() { with $message = { expr "message"; } } |
jcs.emit_warning() |
Junos OS는 이 출력을 처리하고 적절한 작업을 수행합니다. 오류와 경고는 Junos OS CLI 또는 Junos XML 프로토콜 클라이언트 애플리케이션으로 전달됩니다. 오류가 발생하면 커밋 작업이 자동으로 실패합니다. 영구 및 임시 변경은 적절한 구성 데이터베이스에 로드됩니다.
커밋 스크립트에서 오류, 경고 및 시스템 로그 메시지의 출력을 테스트하려면 명령을 실행 commit check | display xml
합니다.
[edit] user@host# commit check | display xml
커밋 스크립트 처리의 상세한 추적을 표시하려면 명령을 실행합니다 commit check | display detail
.
[edit] user@host# commit check | display detail
시스템 로그 메시지는 추적 출력에 나타나지 않으므로 커밋 확인 작업을 사용하여 스크립트 생성 시스템 로그 메시지를 테스트할 수 없습니다. 또한 시스템 로그 메시지는 커밋 작업 중에 시스템 로그에 기록되지만 커밋 확인 작업 중에는 작성되지 않습니다.
커밋 스크립트 및 Junos OS 커밋 모델
Junos OS는 커밋 모델을 사용하여 디바이스 구성을 업데이트합니다. 이 모델을 사용하면 디바이스 운영에 영향을 주지 않고 후보 구성을 일련의 변경할 수 있습니다. 변경이 완료되면 구성을 커밋할 수 있습니다. 커밋 작업을 통해 후보 구성 변경 사항을 현재 구성에 저장합니다.
후보 구성에서 변경 사항을 커밋할 때는 다음 두 가지 방법을 사용하여 이러한 변경 사항을 현재 구성으로 전달합니다.
표준 커밋 모델—디바이스에서 커밋 스크립트가 활성화되지 않을 때 사용됩니다.
커밋 스크립트 모델—커밋 모델에 커밋 스크립트를 통합합니다.
표준 커밋 모델
표준 커밋 모델에서 관리(mgd) 프로세스는 표준 Junos OS 검증 규칙을 기반으로 후보 구성을 검증합니다. 구성 파일이 유효한 경우, 현재 활성 구성이 됩니다. 그림 1 과 함께 제공되는 설명은 표준 커밋 모델이 어떻게 작동하는지 설명합니다.

표준 커밋 모델에서 소프트웨어는 다음 단계를 수행합니다.
지원자 구성이 커밋되면 이 컨피규레이션은 계산대 구성이 되도록 복사됩니다.
mgd 프로세스는 체크아웃 구성을 검증합니다.
오류가 발생하지 않으면 체크 아웃 구성이 현재 활성 구성으로 복사됩니다.
커밋 스크립트를 사용한 커밋 모델
커밋 스크립트가 표준 커밋 모델에 추가되면 프로세스는 더욱 복잡해집니다. mgd 프로세스는 먼저 XML 형식의 체크 아웃 구성을 커밋 스크립트에 의한 체크 아웃 구성의 검증을 처리하는 스크립트 드라이버에 전달합니다. 검증이 완료되면 스크립트 드라이버가 작업 파일을 mgd 프로세스로 반환합니다. mgd 프로세스는 작업 파일의 지침에 따라 후보 및 체크아웃 구성을 업데이트하고 CLI 또는 클라이언트 애플리케이션에 메시지를 발행하며 필요에 따라 시스템 로그에 정보를 작성합니다. 작업 파일을 처리한 후 mgd 프로세스는 표준 Junos OS 검증을 수행합니다. 그림 2 와 함께 논의된 내용은 이 프로세스를 설명합니다.

커밋 스크립트 모델에서 Junos OS는 다음 단계를 수행합니다.
후보 구성이 커밋되면 mgd 프로세스는 XML 형식의 후보 구성을 스크립트 드라이버로 보냅니다.
각 활성화된 커밋 스크립트는 후보 구성에 대해 호출되며 각 스크립트는 mgd 프로세스가 수행할 작업 세트를 생성할 수 있습니다. 작업은 작업 파일에서 수집됩니다.
mgd 프로세스는 작업 파일에서 커밋 스크립트 오류, 경고 및 시스템 로그 메시지에 대해 다음과 같은 작업을 수행합니다.
오류—mgd 프로세스는 커밋 프로세스를 중단(즉, 커밋 작업에 실패함)하고 CLI 또는 Junos XML 프로토콜 클라이언트로 오류 메시지를 반환하며 추가 조치를 취하지 않습니다.
경고—mgd 프로세스는 메시지를 CLI 또는 Junos XML 프로토콜 클라이언트로 전달합니다.
시스템 로그 메시지—mgd 프로세스는 메시지를 시스템 로그 프로세스로 전달합니다.
작업 파일에 지속적인 변경이 포함된 경우 mgd 프로세스는 요청된 변경 사항을 후보 구성에 로드합니다.
응시자 구성은 계산대 구성이 되도록 복사됩니다.
작업 파일에 임시 변경 사항이 포함된 경우 mgd 프로세스는 요청된 변경 사항을 체크아웃 구성에 로드합니다.
mgd 프로세스는 체크아웃 구성을 검증합니다.
검증 오류가 없는 경우 체크 아웃 구성이 복사되어 현재 활성 구성이 됩니다.
커밋 스크립트는 보호된 명령문이나 보호된 계층 내에서 구성을 변경할 수 없습니다. 커밋 스크립트가 보호되는 명령문이나 계층을 수정하거나 삭제하려고 시도하는 경우, Junos OS는 변경을 할 수 없다는 경고를 발행합니다. 보호된 구성 요소를 수정하지 않으면 커밋 스크립트나 커밋 프로세스가 중단되지 않습니다.
커밋 작업 중에 후보 구성에 변경된 내용은 커밋 작업 중에 사용자 지정 규칙에 의해 평가되지 않습니다. 그러나 지속적인 변경은 후보 구성에서 유지되며 후속 커밋 작업 동안 사용자 지정 규칙에 따라 평가됩니다. 커밋 스크립트가 후보 구성을 변경하는 방법에 대한 자세한 내용은 여러 커밋 스크립트를 사용할 때 잠재적인 충돌 방지를 참조하십시오.
임시 변경은 커밋 스크립트의 사용자 지정 규칙에 따라 평가되지 않습니다. 커밋 스크립트가 후보 구성을 평가하고 후보가 체크아웃 구성이 되도록 복사된 후에만 체크아웃 구성으로 이루어지기 때문입니다. 구성에서 임시 변경을 제거하려면 커밋 스크립트를 제거, 비활성화 또는 비활성화 ( 커밋 작업 중 커밋 스크립트의 실행 제어에서 설명)하거나 임시 변경을 생성하는 코드를 설명합니다.
지속적 및 일시적 변경 간의 차이점에 대한 자세한 내용은 커밋 스크립트를 사용하여 영구 또는 임시 구성 변경 생성 개요를 참조하십시오.