A.3. Kickstart 파일의 스크립트


Kickstart 파일은 다음 스크립트를 포함할 수 있습니다.

  • %pre
  • %pre-install
  • %post

이 섹션에서는 스크립트에 대한 다음 세부 정보를 제공합니다.

  • 실행 시간
  • 스크립트에 포함될 수 있는 명령 유형입니다.
  • 스크립트의 목적
  • 스크립트 옵션

A.3.1. %pre 스크립트

%pre 스크립트는 Kickstart 파일이 로드된 직후 시스템에서 실행되지만 완전히 구문 분석되고 설치가 시작되기 전에 실행됩니다. 이러한 각 섹션은 %pre로 시작하고 %end로 끝나야 합니다.

%pre 스크립트는 네트워킹 및 스토리지 장치의 활성화 및 구성에 사용할 수 있습니다. 설치 환경에서 사용 가능한 인터프리터를 사용하여 스크립트를 실행할 수도 있습니다. 설치를 진행하기 전에 특수 구성이 필요한 네트워킹 및 스토리지가 있거나 추가 로깅 매개변수 또는 환경 변수를 설정하는 스크립트가 있는 경우 %pre 스크립트를 추가할 수 있습니다.

%pre 스크립트의 문제를 디버깅하기 어려울 수 있으므로 필요한 경우에만 %pre 스크립트를 사용하는 것이 좋습니다.

중요

Kickstart의 %pre 섹션은 설치 단계(inst.stage2)를 가져온 후 실행됩니다. 즉, root가 설치 프로그램 환경(설치 프로그램 이미지)으로 전환된 Anaconda 설치 프로그램 자체를 시작한 를 의미합니다. 그런 다음 %pre 의 구성이 적용되고 Kickstart의 URL로 구성된 설치 리포지토리에서 패키지를 가져오는 데 사용할 수 있습니다. 그러나 네트워크에서 이미지(inst.stage2)를 가져오도록 네트워크를 구성하는 데 사용할 수 없습니다.

네트워킹, 스토리지 및 파일 시스템과 관련된 명령은 설치 환경 /sbin/bin 디렉터리에 있는 대부분의 유틸리티 외에 %pre 스크립트에서 사용할 수 있습니다.

%pre 섹션에서 네트워크에 액세스할 수 있습니다. 그러나 이 시점에서 이름 서비스가 구성되지 않았으므로 URL이 아닌 IP 주소만 작동합니다.

참고

pre 스크립트는 chroot 환경에서 실행되지 않습니다.

A.3.1.1. %pre 스크립트 섹션 옵션

다음 옵션을 사용하여 사전 설치 스크립트의 동작을 변경할 수 있습니다. 옵션을 사용하려면 스크립트 시작 시 %pre 줄에 추가합니다. 예를 들면 다음과 같습니다.

%pre --interpreter=/usr/libexec/platform-python
-- Python script omitted --
%end
--interpreter=

Python과 같은 다른 스크립팅 언어를 지정할 수 있습니다. 시스템에서 사용 가능한 모든 스크립팅 언어를 사용할 수 있습니다. 대부분의 경우 /usr/bin/sh,/usr/bin/bash/usr/libexec/platform-python 입니다.

platform-python 인터프리터는 Python 버전 3.6을 사용합니다. 새 경로와 버전의 Python 스크립트를 이전 RHEL 버전에서 변경해야 합니다. 또한 platform-python 은 시스템 툴을 위한 것입니다. 설치 환경 외부의 python36 패키지를 사용합니다. Red Hat Enterprise Linux의 Python에 대한 자세한 내용은 동적 프로그래밍 언어 설치 및 사용에 Python 소개를 참조하십시오.

--erroronfail
스크립트가 실패하면 오류를 표시하고 설치를 중지합니다. 오류 메시지는 실패의 원인이 기록되는 위치로 안내합니다. 설치된 시스템은 불안정하고 부팅 불가능한 상태가 될 수 있습니다. inst.nokill 옵션을 사용하여 스크립트를 디버깅할 수 있습니다.
--log=

스크립트의 출력을 지정된 로그 파일에 기록합니다. 예를 들면 다음과 같습니다.

%pre --log=/tmp/ks-pre.log

A.3.2. %pre-install 스크립트

pre-install 스크립트의 명령은 다음 작업이 완료된 후 실행됩니다.

  • 시스템이 분할됨
  • 파일 시스템은 /mnt/sysroot에 생성 및 마운트됨
  • 네트워크가 부팅 옵션 및 Kickstart 명령에 따라 구성되었습니다.

%pre-install 각 섹션은 %pre-install로 시작하고 %end로 끝나야 합니다.

%pre-install 스크립트를 사용하여 설치를 수정하고 패키지 설치 전에 보장된 ID가 있는 사용자 및 그룹을 추가할 수 있습니다.

설치에 필요한 수정 사항에 대해 %post 스크립트를 사용하는 것이 좋습니다. %post 스크립트가 필요한 수정 사항에 대한 짧은 경우에만 %pre-install 스크립트를 사용합니다.

pre-install 스크립트는 chroot 환경에서 실행되지 않습니다.

A.3.2.1. %pre-install 스크립트 섹션 옵션

다음 옵션을 사용하여 pre-install 스크립트의 동작을 변경할 수 있습니다. 옵션을 사용하려면 스크립트 시작 시 %pre-install 행에 추가합니다. 예를 들면 다음과 같습니다.

%pre-install --interpreter=/usr/libexec/platform-python
-- Python script omitted --
%end

동일한 인터프리터 또는 다른 인터프리터와 함께 %pre-install 섹션이 여러 개 있을 수 있습니다. Kickstart 파일에 나타나는 순서에 따라 평가됩니다.

--interpreter=

Python과 같은 다른 스크립팅 언어를 지정할 수 있습니다. 시스템에서 사용 가능한 모든 스크립팅 언어를 사용할 수 있습니다. 대부분의 경우 /usr/bin/sh,/usr/bin/bash/usr/libexec/platform-python 입니다.

platform-python 인터프리터는 Python 버전 3.6을 사용합니다. 새 경로와 버전의 Python 스크립트를 이전 RHEL 버전에서 변경해야 합니다. 또한 platform-python 은 시스템 툴을 위한 것입니다. 설치 환경 외부의 python36 패키지를 사용합니다. Red Hat Enterprise Linux의 Python에 대한 자세한 내용은 동적 프로그래밍 언어 설치 및 사용에 대한 Python 소개 를 참조하십시오.

--erroronfail
스크립트가 실패하면 오류를 표시하고 설치를 중지합니다. 오류 메시지는 실패의 원인이 기록되는 위치로 안내합니다. 설치된 시스템은 불안정하고 부팅 불가능한 상태가 될 수 있습니다. inst.nokill 옵션을 사용하여 스크립트를 디버깅할 수 있습니다.
--log=

스크립트의 출력을 지정된 로그 파일에 기록합니다. 예를 들면 다음과 같습니다.

%pre-install --log=/mnt/sysroot/root/ks-pre.log

A.3.3. %post 스크립트

%post 스크립트는 설치가 완료된 후에 실행되는 설치 후 스크립트이지만 시스템을 처음 재부팅하기 전에 실행됩니다. 이 섹션을 사용하여 시스템 서브스크립션과 같은 작업을 실행할 수 있습니다.

설치가 완료되면 시스템에서 실행할 명령을 추가하는 옵션이 있지만 시스템을 처음 재부팅하기 전에 실행할 수 있습니다. 이 섹션은 %post 로 시작하고 %end 로 끝나야 합니다.

%post 섹션은 추가 소프트웨어 설치 또는 추가 이름 서버 구성과 같은 기능에 유용합니다. 설치 후 스크립트는 chroot 환경에서 실행되므로 설치 미디어에서 스크립트 또는 RPM 패키지를 복사하는 것은 기본적으로 작동하지 않습니다. 아래 설명된 대로 --nochroot 옵션을 사용하여 이 동작을 변경할 수 있습니다. 그런 다음 %post 스크립트가 설치된 대상 시스템의 chroot 가 아닌 설치 환경에서 실행됩니다.

설치 후 스크립트는 chroot 환경에서 실행되므로 대부분의 systemctl 명령은 모든 작업 수행을 거부합니다.

%post 섹션을 실행하는 동안 설치 미디어가 계속 삽입되어야 합니다.

A.3.3.1. %post 스크립트 섹션 옵션

다음 옵션을 사용하여 설치 후 스크립트의 동작을 변경할 수 있습니다. 옵션을 사용하려면 스크립트 시작 부분에 있는 %post 줄에 추가합니다. 예를 들면 다음과 같습니다.

%post --interpreter=/usr/libexec/platform-python
-- Python script omitted --
%end
--interpreter=

Python과 같은 다른 스크립팅 언어를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

%post --interpreter=/usr/libexec/platform-python

시스템에서 사용 가능한 모든 스크립팅 언어를 사용할 수 있습니다. 대부분의 경우 /usr/bin/sh,/usr/bin/bash/usr/libexec/platform-python 입니다.

platform-python 인터프리터는 Python 버전 3.6을 사용합니다. 새 경로와 버전의 Python 스크립트를 이전 RHEL 버전에서 변경해야 합니다. 또한 platform-python 은 시스템 툴을 위한 것입니다. 설치 환경 외부의 python36 패키지를 사용합니다. Red Hat Enterprise Linux의 Python에 대한 자세한 내용은 동적 프로그래밍 언어 설치 및 사용에 대한 Python 소개 를 참조하십시오.

--nochroot

chroot 환경 외부에서 실행하려는 명령을 지정할 수 있습니다.

다음 예제에서는 /etc/resolv.conf 파일을 방금 설치한 파일 시스템에 복사합니다.

%post --nochroot
cp /etc/resolv.conf /mnt/sysroot/etc/resolv.conf
%end
--erroronfail
스크립트가 실패하면 오류를 표시하고 설치를 중지합니다. 오류 메시지는 실패의 원인이 기록되는 위치로 안내합니다. 설치된 시스템은 불안정하고 부팅 불가능한 상태가 될 수 있습니다. inst.nokill 옵션을 사용하여 스크립트를 디버깅할 수 있습니다.
--log=

스크립트의 출력을 지정된 로그 파일에 기록합니다. 로그 파일의 경로는 --nochroot 옵션을 사용할지 여부를 고려해야 합니다. 예를 들어 --nochroot 가 없는 경우:

%post --log=/root/ks-post.log

--nochroot 와 함께 다음을 수행합니다.

%post --nochroot --log=/mnt/sysroot/root/ks-post.log

A.3.3.2. 예: 설치 후 스크립트에서 NFS 마운트

%post 섹션의 예에서는 NFS 공유를 마운트하고 공유의 /usr/new-machines/ 에 있는 runme 라는 스크립트를 실행합니다. Kickstart 모드에서는 NFS 파일 잠금이 지원되지 않으므로 -o nolock 옵션이 필요합니다.

# Start of the %post section with logging into /root/ks-post.log
%post --log=/root/ks-post.log

# Mount an NFS share
mkdir /mnt/temp
mount -o nolock 10.10.0.2:/usr/new-machines /mnt/temp
openvt -s -w -- /mnt/temp/runme
umount /mnt/temp

# End of the %post section
%end
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.