2.4. 템플릿 작성


킥스타트 템플릿 작성에서는 킥스타트 파일에 매개 변수, 스니펫, for 루프 및 if 문과 같은 흐름 제어문을 추가할 수 있습니다. 이는 cheetah 도구를 사용하여 수행할 수 있습니다.
다음과 같은 이유로 템플릿 기능을 유용하게 사용할 수 있습니다:
  • 여러 킥스타트 간의 디스크 파티셔닝 섹션과 같은 특정 킥스타트 섹션을 다시 사용할 수 있습니다.
  • 여러 킥스타트에 걸쳐 일관되게 %post 작업을 수행할 수 있습니다.
  • DNS 서버, Proxy 서버, Web 서버와 같은 여러 종류의 서버 역할에 걸쳐 스니펫을 정의할 수 있습니다. 예를 들어, Web 서버에는 다음과 같은 스니펫이 정의될 수 있습니다:
    httpd
    mod_ssl
    mod_python
    
    Copy to Clipboard Toggle word wrap
    Web 서버 프로파일을 생성하려면, 킥스타트 파일의 %package 부분에 Web 서버 스니펫을 포함시킵니다. Web 서버 및 Proxy 서버 모두에 있는 프로파일의 경우, 패키지 부분의 두 스니펫 모두를 포함시킵니다. Web 서버 스니펫에 다른 패키지를 추가하려면 (예: mod_perl) 스니펫을 업데이트하면 그 스니펫을 사용하는 모든 프로파일이 동적으로 업데이트됩니다.
변수

템플릿 기능으로 킥스타트 파일 전체에 걸쳐 사용되는 변수를 정의할 수 있습니다. 변수는 상속 대상으로 하나의 레벨에 설정될 수 있으며 그 이하의 레벨에서 덮어쓰기 가능하게 됩니다. 따라서 변수가 시스템 레벨에 정의되고 있는 경우, 프로파일 또는 킥스타트 트리 레벨에 정의된 동일한 변수를 덮어쓰기하게 됩니다. 마찬가지로 변수가 프로파일 레벨에 정의된 경우 킥스타트 트리 레벨에 정의된 동일한 변수를 덮어쓰기하게 됩니다.

참고

Satellite 동기화를 실행할 때 생성되는 것과 같은 자동 생성된 킥스타트에 대해 킥스타트 트리 변수는 정의될 수 없음에 유의합니다.
스니펫

스니펫은 여러 킥스타트 템플릿 간의 코드 조각을 다시 사용합니다. 이는 여러 줄에 걸쳐 있을 수 있고 그 안에 변수가 포함되어 있을 수 도 있습니다. 이는 $SNIPPET('snippet_name') 텍스트를 사용하여 킥스타트 프로파일에 포함될 수 있습니다. 패키지 목록, %post 스크립트, 킥스타트 파일에 보통 포함된 텍스트에 대한 스니펫을 만들 수 있습니다.

스니펫을 관리하려면 시스템 킥스타트 킥스타트 스니펫으로 이동합니다.
킥스타트 스니펫 페이지에서는 편집할 수 없지만 다른 조직에서 사용할 수 있는 여러 기본값 스니펫을 보여줍니다. 기본값 스니펫은 RHN Satellite 서버에 기록되거나 업로드된 킥스타트에서 사용될 수 있습니다. 기본값 스니펫은 /var/lib/cobbler/snippets/에 있는 RHN Satellite 서버의 파일 시스템에 저장됩니다. /var/lib/rhn/kickstarts/wizard/에 있는 마법사 스타일 킥스타트에서 템플릿이 있으며 이는 다른 기본값 스니펫 및 사용 방법을 설명합니다.
redhat_register 스니펫은 킥스타트의 일부로 시스템을 RHN Satellite 서버에 등록하기 위해 사용되는 기본값 스니펫입니다. redhat_management_key라는 변수를 사용하여 시스템을 등록합니다. 스니펫을 사용하려면 redhat_management_key 변수를 시스템, 프로파일, 배포 수준에서 설정하고 킥스타트의 %post 부분에 $SNIPPET('redhat_register')를 추가합니다. RHN Satellite 서버에 의해 생성된 마법사 스타일 킥스타트는 이러한 스니펫을 이미 %post 부분에 포함시키고 있습니다.
사용자 정의 스니펫 탭에서 조직에서 사용하도록 생성된 스니펫을 편집 및 확인할 수 있습니다. 새 스니펫 생성을 클릭하여 새로운 스니펫을 생성할 수 있습니다. 사용자 정의 스니펫은 /var/lib/rhn/kickstarts/snippets/ 디렉토리에 저장됩니다. RHN Satellite는 조직별로 다른 디렉토리에 스니펫을 저장하므로 사용자 정의 스니펫은 다음과 유사한 파일 이름으로 저장됩니다. 여기서 1은 조직 ID입니다:
$SNIPPET('spacewalk/1/snippet_name')
Copy to Clipboard Toggle word wrap
킥스타트에 스니펫을 삽입하기 위해 사용할 텍스트를 결정하려면 스니펫 목록이나 스니펫 상세 페이지에서 스니펫 매크로란을 찾습니다.

참고

스니펫은 글로벌 수준으로 존재하며 동일한 상속 구조를 변수로 공유하지 않습니다. 하지만 스니펫의 변수를 사용하여 다른 시스템이 킥스타트를 요청할 때 동작 방식을 변경할 수 있습니다.

그림 2.3. 킥스타트 스니펫

특수 문자 이스케이프

$# 문자는 템플릿 기능을 사용할 때 변수와 제어 흐름을 지정하는데 사용됩니다. 스크립트에서 다른 목적으로 이러한 문자를 사용해야 할 경우, 이를 이스케이프하여 변수로 인식되지 않도록 해야 합니다. 이는 여러 가지 다른 방법으로 수행될 수 있습니다:

  • 템플릿 기능을 실행할 때 무시하고자 하는 $ 또는 #의 각 인스턴스의 앞에 백슬래시 문자 (\)를 배치합니다.
  • 전체 스크립트를 #raw ... #end raw에 랩핑합니다.
    마법사 스타일 킥스타트를 사용하여 생성된 모든 %pre%post 스크립트는 기본값으로 #raw...#end raw로 랩핑됩니다. 이는 %post 또는 %pre 스크립트를 편집할 때 사용 가능한 템플릿 옵션을 사용하여 전환할 수 있습니다.
  • 스니펫의 첫 줄에 #errorCatcher Echo를 추가합니다.

예 2.1. 템플릿에 있는 특수 문자 이스케이프

이 예제에서는 킥스타트 템플릿에서 특수 문자를 이스케이프 처리하는 방법에 대해 설명합니다.
다음의 bash 스크립트는 %post 부분에 삽입해야 합니다:
%post 
echo $foo > /tmp/foo.txt
Copy to Clipboard Toggle word wrap
이스케이프 처리된 $ 없이, 템플릿 엔진은 $foo라는 변수를 찾으려 하지만 foo는 변수로 존재하지 않기 때문에 실패하게 됩니다.
$를 이스케이프 처리하는 가장 간단한 방법은 백슬래시 문자를 (\)를 사용하는 것입니다:
%post 
echo \$foo > /tmp/foo.txt
Copy to Clipboard Toggle word wrap
이는 \$foo$foo로 렌더링되게 합니다.
두 번째 방법은 다음과 같이 전체 bash 스크립트를 #raw ... #end raw에 랩핑하는 것입니다.
%post 
#raw  
echo $foo > /tmp/foo.txt 
#end raw
Copy to Clipboard Toggle word wrap
마지막 방법은 킥스타트 템플릿의 첫 번째 줄에 #errorCatcher Echo를 추가하는 것입니다. 이는 템플릿 엔진이 존재하지 않는 변수를 무시하고 텍스트를 있는 그대로 출력하도록 지시합니다. 이 옵션은 마법사 스타일 킥스타트에 이미 포함되어 있으며 수동으로 생성한 raw 킥스타트에 포함시킬 수 있습니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat