9.3. RHEL 이미지 빌더 CLI를 사용하여 시스템 이미지 생성


RHEL 이미지 빌더는 사용자 정의 시스템 이미지를 생성하는 툴입니다. RHEL 이미지 빌더를 제어하고 사용자 정의 시스템 이미지를 생성하려면 CLI(명령줄) 또는 웹 콘솔 인터페이스를 사용할 수 있습니다.

9.3.1. RHEL 이미지 빌더 명령줄 인터페이스 소개

RHEL 이미지 빌더 CLI(명령줄 인터페이스)를 사용하여 적절한 옵션 및 하위 명령으로 composer-cli 명령을 실행하여 블루프린트를 생성할 수 있습니다.

명령줄의 워크플로는 다음과 같이 요약할 수 있습니다.

  1. 기존 블루프린트 정의를 일반 텍스트 파일에 블루프린트 또는 내보내기(저장) 생성
  2. 텍스트 편집기에서 이 파일 편집
  3. 블루프린트 텍스트 파일을 다시 이미지 빌더로 가져오기
  4. 작성을 실행하여 블루프린트에서 이미지를 빌드합니다.
  5. 이미지 파일을 내보내서 다운로드합니다.

블루프린트를 생성하기 위한 기본 하위 명령 외에도 composer-cli 명령은 구성된 블루프린트의 상태를 검사하고 구성합니다.

9.3.2. RHEL 이미지 빌더를 루트가 아닌 사용자로 사용

composer-cli 명령을 root가 아닌 것으로 실행하려면 사용자가 weldr 그룹에 있어야 합니다.

사전 요구 사항

  • 사용자를 생성했습니다.

절차

  • weldr 또는 root 그룹에 사용자를 추가하려면 다음 명령을 실행하십시오.

    $ sudo usermod -a -G weldr user
    $ newgrp weldr
    Copy to Clipboard Toggle word wrap

9.3.3. 명령줄을 사용하여 블루프린트 생성

RHEL 이미지 빌더 CLI(명령줄 인터페이스)를 사용하여 새 블루프린트를 생성할 수 있습니다. 청사진은 최종 이미지와 패키지 및 커널 사용자 지정과 같은 사용자 정의를 설명합니다.

사전 요구 사항

  • root 사용자 또는 weldr 그룹의 멤버인 사용자로 로그인했습니다.

절차

  1. 다음 내용을 사용하여 일반 텍스트 파일을 생성합니다.

    name = "BLUEPRINT-NAME"
    description = "LONG FORM DESCRIPTION TEXT"
    version = "0.0.1"
    modules = []
    groups = []
    Copy to Clipboard Toggle word wrap

    BLUEPRINT-NAMELONG FORM DESCRIPTION TEXT 를 블루프린트의 이름 및 설명으로 바꿉니다.

    0.0.1 을 Semantic Versioning 스키마에 따른 버전 번호로 바꿉니다.

  2. 블루프린트에 포함하려는 모든 패키지에 대해 파일에 다음 행을 추가합니다.

    [[packages]]
    name = "package-name"
    version = "package-version"
    Copy to Clipboard Toggle word wrap

    package-namehttpd, gdb-doc 또는 coreutils 와 같은 패키지 이름으로 교체합니다.

    선택적으로 package-version 을 사용할 버전으로 교체합니다. 이 필드는 dnf 버전 사양을 지원합니다.

    • 특정 버전의 경우 8.7.0 과 같은 정확한 버전 번호를 사용하십시오.
    • 사용 가능한 최신 버전의 경우 별표 * 를 사용합니다.
    • 최신 마이너 버전의 경우 8.*와 같은 형식을 사용하십시오.
  3. 필요에 맞게 청사진을 사용자 지정합니다. 예를 들어 SMT(Simultaneous Multi Threading)를 비활성화하여 CloudEvent 파일에 다음 행을 추가합니다.

    [customizations.kernel]
    append = "nosmt=force"
    Copy to Clipboard Toggle word wrap

    사용 가능한 추가 사용자 정의는 지원되는 이미지 사용자 지정을 참조하십시오.

    [][[]] 는 TOML로 표현되는 다양한 데이터 구조입니다.

    • [customizations.kernel] 헤더는 키 및 해당 값 쌍으로 정의된 단일 테이블을 나타냅니다(예: append = "nosmt=force" ).
    • [[packages]] 헤더는 테이블 배열을 나타냅니다. 첫 번째 인스턴스는 배열과 첫 번째 테이블 요소(예: name = "package-name"version = "package-version" )를 정의하고 각 후속 인스턴스는 사용자가 정의한 순서대로 해당 배열에 새 테이블 요소를 생성하고 정의합니다.
  4. 예를 들어 파일을 BLUEPRINT-NAME.toml로 저장하고 텍스트 편집기를 종료합니다.
  5. 선택 사항: 블루프린트 TOML 파일의 모든 설정이 올바르게 구문 분석되었는지 확인합니다. 블루프린트를 저장하고 저장된 출력을 입력 파일과 비교합니다.

    # composer-cli blueprints save BLUEPRINT-NAME.toml
    Copy to Clipboard Toggle word wrap
    1. 저장된 BLUEPRINT-NAME.toml 를 입력 파일과 비교합니다.
  6. 블루프린트를 푸시합니다.

    # composer-cli blueprints push BLUEPRINT-NAME.toml
    Copy to Clipboard Toggle word wrap

    BLUEPRINT-NAME 을 이전 단계에서 사용한 값으로 바꿉니다.

    참고

    composer-cli 를 사용하여 root가 아닌 이미지를 만들려면 사용자를 weldr 또는 root 그룹에 추가합니다.

    # usermod -a -G weldr user
    $ newgrp weldr
    Copy to Clipboard Toggle word wrap

검증

  • 기존 기능 목록을 나열하여 해당 기능이 푸시되고 있는지 확인합니다.

    # composer-cli blueprints list
    Copy to Clipboard Toggle word wrap
  • 방금 추가한 청사진 구성을 표시합니다.

    # composer-cli blueprints show BLUEPRINT-NAME
    Copy to Clipboard Toggle word wrap
  • 블루프린트 및 해당 종속 항목에 나열된 구성 요소 및 버전이 유효한지 확인합니다.

    # composer-cli blueprints depsolve BLUEPRINT-NAME
    Copy to Clipboard Toggle word wrap

    RHEL 이미지 빌더에서 사용자 정의 리포지토리에서 패키지의 종속 항목을 해결할 수 없는 경우 osbuild-composer 캐시를 제거합니다.

    $ sudo rm -rf /var/cache/osbuild-composer/*
    $ sudo systemctl restart osbuild-composer
    Copy to Clipboard Toggle word wrap

9.3.4. 명령줄을 사용하여 블루프린트 편집

예를 들어 새 패키지를 추가하거나 새 그룹을 정의하고 사용자 지정 이미지를 생성하기 위해 CLI(명령줄)에서 기존 블루프린트를 편집할 수 있습니다.

사전 요구 사항

  • 블루프린트를 생성했습니다.

절차

  1. 기존 블루프린트를 나열합니다.

    # composer-cli blueprints list
    Copy to Clipboard Toggle word wrap
  2. 블루프린트를 로컬 텍스트 파일에 저장합니다.

    # composer-cli blueprints save BLUEPRINT-NAME
    Copy to Clipboard Toggle word wrap
  3. 텍스트 편집기로 BLUEPRINT-NAME.toml 파일을 편집하고 변경합니다.
  4. 편집을 완료하기 전에 파일이 유효한 청사진인지 확인합니다.

    1. 블루프린트에서 다음 행을 제거합니다.

      packages = []
      Copy to Clipboard Toggle word wrap
    2. 버전 번호를 0.0.1에서 0.1.0으로 늘립니다. RHEL 이미지 빌더 블루프린트 버전에서는 Semantic Versioning 스키마를 사용해야 합니다. 또한 버전을 변경하지 않으면 패치 버전 구성 요소가 자동으로 증가합니다.
  5. 파일을 저장하고 텍스트 편집기를 종료합니다.
  6. 블루프린트를 RHEL 이미지 빌더로 다시 푸시합니다.

    # composer-cli blueprints push BLUEPRINT-NAME.toml
    Copy to Clipboard Toggle word wrap
    참고

    블루프린트를 RHEL 이미지 빌더로 다시 가져오려면 .toml 확장을 포함한 파일 이름을 제공하고 다른 명령에서는 블루프린트 이름만 사용합니다.

검증

  1. RHEL 이미지 빌더에 업로드된 콘텐츠가 편집 내용과 일치하는지 확인하려면 블루프린트 내용을 나열합니다.

    # composer-cli blueprints show BLUEPRINT-NAME
    Copy to Clipboard Toggle word wrap
  2. 블루프린트 및 해당 종속 항목에 나열된 구성 요소 및 버전이 유효한지 확인합니다.

    # composer-cli blueprints depsolve BLUEPRINT-NAME
    Copy to Clipboard Toggle word wrap

9.3.5. 명령줄에서 RHEL 이미지 빌더를 사용하여 시스템 이미지 생성

RHEL 이미지 빌더 명령줄 인터페이스를 사용하여 사용자 지정 RHEL 이미지를 빌드할 수 있습니다. 이를 위해 블루프린트와 이미지 유형을 지정해야 합니다. 선택적으로 배포를 지정할 수도 있습니다. 배포를 지정하지 않으면 호스트 시스템과 동일한 배포 및 버전을 사용합니다. 아키텍처는 호스트의 아키텍처와 동일합니다.

사전 요구 사항

절차

  1. 선택 사항: 생성할 수 있는 이미지 형식을 나열합니다.

    # composer-cli compose types
    Copy to Clipboard Toggle word wrap
  2. 작성을 시작합니다.

    # composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE
    Copy to Clipboard Toggle word wrap

    BLUEPRINT-NAME 을 블루프린트 이름으로 바꾸고, IMAGE-TYPE 을 이미지 유형으로 바꿉니다. 사용 가능한 값은 composer-cli compose types 명령의 출력을 참조하십시오.

    compose 프로세스는 백그라운드에서 시작되고 composer Universally Unique Identifier (UUID)를 표시합니다.

  3. 이미지 생성을 완료하는 데 최대 10분이 걸릴 수 있습니다.

    작성 상태를 확인하려면 다음을 수행합니다.

    # composer-cli compose status
    Copy to Clipboard Toggle word wrap

    완료된 작성에는 FINISHED 상태 값이 표시됩니다. 목록에서 Composer를 식별하려면 해당 UUID를 사용합니다.

  4. 작성 프로세스가 완료되면 결과 이미지 파일을 다운로드합니다.

    # composer-cli compose image UUID
    Copy to Clipboard Toggle word wrap

    UUID 를 이전 단계에 표시된 UUID 값으로 바꿉니다.

검증

이미지를 생성한 후 다음 명령을 사용하여 이미지 생성 진행 상황을 확인할 수 있습니다.

  • 이미지의 메타데이터를 다운로드하여 구성 요소에 대한 메타데이터의 .tar 파일을 가져옵니다.

    $ sudo composer-cli compose metadata UUID
    Copy to Clipboard Toggle word wrap
  • 이미지 로그를 다운로드합니다.

    $ sudo composer-cli compose logs UUID
    Copy to Clipboard Toggle word wrap

    이 명령은 이미지 생성을 위한 로그가 포함된 .tar 파일을 생성합니다. 로그가 비어 있으면 저널을 확인할 수 있습니다.

  • 저널 확인:

    $ journalctl | grep osbuild
    Copy to Clipboard Toggle word wrap
  • 이미지 매니페스트를 확인합니다.

    $ sudo cat /var/lib/osbuild-composer/jobs/job_UUID.json
    Copy to Clipboard Toggle word wrap

    journal에서 job_UUID.json을 찾을 수 있습니다.

9.3.6. 기본 RHEL 이미지 빌더 명령줄 명령

RHEL 이미지 빌더 명령줄 인터페이스는 다음 하위 명령을 제공합니다.

블루프린트 조작

사용 가능한 모든 블루프린트 나열
# composer-cli blueprints list
Copy to Clipboard Toggle word wrap
TOML 형식의 블루프린트 콘텐츠 표시
# composer-cli blueprints show <BLUEPRINT-NAME>
Copy to Clipboard Toggle word wrap
TOML 형식으로 블루프린트 내용을 파일 BLUEPRINT-NAME.todir에 저장합니다.
# composer-cli blueprints save <BLUEPRINT-NAME>
Copy to Clipboard Toggle word wrap
블루프린트 제거
# composer-cli blueprints delete <BLUEPRINT-NAME>
Copy to Clipboard Toggle word wrap
TOML 형식의 블루프린트 파일을 RHEL 이미지 빌더로 푸시(가져오기)
# composer-cli blueprints push <BLUEPRINT-NAME>
Copy to Clipboard Toggle word wrap

블루프린트에서 이미지 구성

사용 가능한 이미지 유형 나열
# composer-cli compose types
Copy to Clipboard Toggle word wrap
작성 시작
# composer-cli compose start <BLUEPRINT> <COMPOSE-TYPE>
Copy to Clipboard Toggle word wrap
모든 작성 사항 나열
# composer-cli compose list
Copy to Clipboard Toggle word wrap
모든 작성 및 해당 상태 나열
# composer-cli compose status
Copy to Clipboard Toggle word wrap
실행 중인 작성 취소
# composer-cli compose cancel <COMPOSE-UUID>
Copy to Clipboard Toggle word wrap
완료된 작성 삭제
# composer-cli compose delete <COMPOSE-UUID>
Copy to Clipboard Toggle word wrap
작성에 대한 자세한 정보 표시
# composer-cli compose info <COMPOSE-UUID>
Copy to Clipboard Toggle word wrap
작성 이미지 파일 다운로드
# composer-cli compose image <COMPOSE-UUID>
Copy to Clipboard Toggle word wrap
더 많은 하위 명령 및 옵션 보기
# composer-cli help
Copy to Clipboard Toggle word wrap

9.3.7. RHEL 이미지 빌더 블루프린트 형식

RHEL 이미지 빌더 블루프린트는 TOML 형식의 일반 텍스트로 사용자에게 제공됩니다.

일반적인 청사진 파일의 요소는 다음과 같습니다.

블루프린트 메타데이터
name = "<BLUEPRINT-NAME>"
description = "<LONG FORM DESCRIPTION TEXT>"
version = "<VERSION>"
Copy to Clipboard Toggle word wrap

BLUEPRINT-NAMELOECDHE FORM DESCRIPTION TEXT 필드는 귀하의 청사진의 이름과 설명입니다.

VERSION 은 Semantic Versioning 스키마에 따른 버전 번호이며 전체 블루프린트 파일에 대해 한 번만 제공됩니다.

이미지에 포함할 그룹
[[groups]]
name = "group-name"
Copy to Clipboard Toggle word wrap

group 항목은 이미지에 설치할 패키지 그룹을 설명합니다. 그룹은 다음과 같은 패키지 범주를 사용합니다.

  • 필수 항목
  • Default
  • 선택 사항

    group-name 은 그룹의 이름입니다(예: anaconda-tools, 위젯, Clair 또는 사용자 ). templates는 필수 및 기본 패키지를 설치합니다. 옵션 패키지를 선택하는 메커니즘은 없습니다.

이미지에 포함할 패키지
[[packages]]
name = "<package-name>"
version = "<package-version>"
Copy to Clipboard Toggle word wrap

package-namehttpd, gdb-doc 또는 coreutils 와 같은 패키지 이름입니다.

package-version 은 사용할 버전입니다. 이 필드는 dnf 버전 사양을 지원합니다.

  • 특정 버전의 경우 8.7.0 과 같은 정확한 버전 번호를 사용하십시오.
  • 사용 가능한 최신 버전의 경우 별표 * 를 사용합니다.
  • 최신 마이너 버전의 경우 8과 같은 형식을 사용합니다.*

    포함할 모든 패키지에 대해 이 블록을 반복합니다.

참고

RHEL 이미지 빌더 툴의 패키지와 모듈 간에 차이가 없습니다. 둘 다 RPM 패키지 종속성으로 처리됩니다.

9.3.8. 지원되는 이미지 사용자 정의

다음과 같은 블루프린트에 사용자 지정을 추가하여 이미지를 사용자 지정할 수 있습니다.

  • 추가 RPM 패키지 추가
  • 서비스 활성화
  • 커널 명령줄 매개 변수 사용자 정의.

다른 사람 사이입니다. sshd 내에서 여러 이미지 사용자 지정을 사용할 수 있습니다. 사용자 지정을 사용하면 기본 패키지에서 사용할 수 없는 이미지에 패키지 및 그룹을 추가할 수 있습니다. 이러한 옵션을 사용하려면 블루프린트에서 사용자 지정을 구성하고 RHEL 이미지 빌더로 가져오기(push)합니다.

9.3.8.1. 배포 선택

distro 필드를 사용하여 이미지를 구성하거나 블루프린트의 종속성을 해결할 때 사용할 배포를 지정할 수 있습니다. distro 필드를 비워 두면 블루프린트에서 호스트의 운영 체제 배포를 자동으로 사용합니다. 배포를 지정하지 않으면 블루프린트에서 호스트 배포를 사용합니다. 호스트 운영 체제를 업그레이드할 때 업그레이드된 운영 체제 버전을 사용하여 지정된 배포 빌드 이미지가 없는 블루프린트입니다.

최신 시스템에서 이전 주요 버전의 이미지를 빌드할 수 있습니다. 예를 들어 RHEL 10 호스트를 사용하여 RHEL 9 및 RHEL 8 이미지를 생성할 수 있습니다. 그러나 이전 시스템에서 최신 주요 버전의 이미지를 빌드할 수 없습니다.

중요

RHEL 이미지 빌더 호스트와 다른 운영 체제 이미지를 빌드할 수 없습니다. 예를 들어 RHEL 시스템을 사용하여 Fedora 또는 CentOS 이미지를 빌드할 수 없습니다.

  • 항상 지정된 RHEL 이미지를 빌드하도록 RHEL 배포를 사용하여 블루프린트를 사용자 지정합니다.

    name = "blueprint_name"
    description = "blueprint_version"
    version = "0.1"
    distro = "different_minor_version"
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    name = "tmux"
    description = "tmux image with openssh"
    version = "1.2.16"
    distro = "rhel-9.5"
    Copy to Clipboard Toggle word wrap

"different_minor_version"을 교체하여 다른 마이너 버전을 빌드합니다. 예를 들어 RHEL 8.10 이미지를 빌드하려면 distro = "rhel-810"을 사용합니다. RHEL 8.10 이미지에서 RHEL 8.9 및 이전 릴리스와 같은 마이너 버전을 빌드할 수 있습니다.

9.3.8.2. 패키지 그룹 선택

패키지 그룹으로 블루프린트를 사용자 지정합니다. 그룹 목록은 이미지에 설치할 패키지 그룹을 설명합니다. 패키지 그룹은 리포지토리 메타데이터에 정의되어 있습니다. 각 그룹에는 주로 사용자 인터페이스에 표시하는 데 사용되는 설명적인 이름과 Kickstart 파일에서 일반적으로 사용되는 ID가 있습니다. 이 경우 ID를 사용하여 그룹을 나열해야 합니다. 그룹에는 필수, 기본값, 선택 사항 등 패키지를 분류하는 세 가지 방법이 있습니다. 필수 및 기본 패키지만 블루프린트에 설치됩니다. 선택적 패키지를 선택할 수 없습니다.

name 속성은 필수 문자열이며 리포지토리의 패키지 그룹 ID와 정확히 일치해야 합니다.

참고

현재 osbuild-composer 의 패키지와 모듈 간에는 차이가 없습니다. 둘 다 RPM 패키지 종속성으로 취급됩니다.

  • 패키지로 블루프린트를 사용자 지정합니다.

    [[groups]]
    name = "group_name"
    Copy to Clipboard Toggle word wrap

    group_name 을 그룹 이름으로 교체합니다. 예: anaconda-tools:

    [[groups]]
    name = "anaconda-tools"
    Copy to Clipboard Toggle word wrap

9.3.8.3. 컨테이너 포함

블루프린트를 사용자 지정하여 최신 RHEL 컨테이너를 포함할 수 있습니다. 컨테이너 목록에는 소스가 있는 오브젝트와 필요한 경우 tls-verify 속성이 포함되어 있습니다.

컨테이너 목록 항목은 이미지에 포함할 컨테이너 이미지를 설명합니다.

  • Source - 필수 필드입니다. 레지스트리의 컨테이너 이미지에 대한 참조입니다. 이 예에서는 registry.access.redhat.com 레지스트리를 사용합니다. 태그 버전을 지정할 수 있습니다. 기본 태그 버전은 latest입니다.
  • name - 로컬 레지스트리에 있는 컨테이너의 이름입니다.
  • tls-verify - 부울 필드. tls-verify 부울 필드는 전송 계층 보안을 제어합니다. 기본값은 true입니다.

포함된 컨테이너는 자동으로 시작되지 않습니다. 시작하려면 파일 사용자 지정이 포함된 systemd 장치 파일 또는 사각형을 만듭니다.

  • registry.access.redhat.com/ubi9/ubi:latest 의 컨테이너와 호스트의 컨테이너를 포함하려면 블루프린트에 다음 사용자 지정을 추가합니다.

    [[containers]]
    source = "registry.access.redhat.com/ubi9/ubi:latest"
    name =  "local-name"
    tls-verify = true
    
    [[containers]]
    source = "localhost/test:latest"
    local-storage = true
    Copy to Clipboard Toggle word wrap

containers-auth.json 파일을 사용하여 보호된 컨테이너 리소스에 액세스할 수 있습니다. 컨테이너 레지스트리 인증 정보를 참조하십시오.

9.3.8.4. 이미지 호스트 이름 설정

customization .hostname 은 최종 이미지 호스트 이름을 구성하는 데 사용할 수 있는 선택적 문자열입니다. 이 사용자 지정은 선택 사항이며 설정하지 않으면 블루프린트에서 기본 호스트 이름을 사용합니다.

  • 블루프린트를 사용자 지정하여 호스트 이름을 구성합니다.

    [customizations]
    hostname = "baseimage"
    Copy to Clipboard Toggle word wrap

9.3.8.5. 추가 사용자 지정

이미지에 사용자를 추가하고 선택적으로 SSH 키를 설정합니다. 이 섹션의 모든 필드는 이름을 제외하고 선택 사항입니다.

절차

  • 이미지에 사용자를 추가하도록 블루프린트를 사용자 지정합니다.

    [[customizations.user]]
    name = "USER-NAME"
    description = "USER-DESCRIPTION"
    password = "PASSWORD-HASH"
    key = "PUBLIC-SSH-KEY"
    home = "/home/USER-NAME/"
    shell = "/usr/bin/bash"
    groups = ["users", "wheel"]
    uid = NUMBER
    gid = NUMBER
    Copy to Clipboard Toggle word wrap
    [[customizations.user]]
    name = "admin"
    description = "Administrator account"
    password = "$6$CHO2$3rN8eviE2t50lmVyBYihTgVRHcaecmeCk31L..."
    key = "PUBLIC SSH KEY"
    home = "/srv/widget/"
    shell = "/usr/bin/bash"
    groups = ["widget", "users", "wheel"]
    uid = 1200
    gid = 1200
    expiredate = 12345
    Copy to Clipboard Toggle word wrap

    GID는 선택 사항이며 이미지에 이미 있어야 합니다. 선택적으로 패키지에서 이를 생성하거나, [customizations.group] 항목을 사용하여 GID를 생성합니다.

    PASSWORD-HASH 를 실제 암호 해시 로 바꿉니다. 암호 해시 를 생성하려면 다음과 같은 명령을 사용합니다.

    $ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
    Copy to Clipboard Toggle word wrap

    다른 자리 표시자를 적절한 값으로 바꿉니다.

    name 값을 입력하고 필요하지 않은 행을 생략합니다.

    모든 사용자가 포함할 이 블록을 반복합니다.

9.3.8.6. 추가 그룹 지정

결과 시스템 이미지에 대한 그룹을 지정합니다. namegid 속성은 모두 필수입니다.

  • 그룹으로 블루프린트를 사용자 지정합니다.

    [[customizations.group]]
    name = "GROUP-NAME"
    gid = NUMBER
    Copy to Clipboard Toggle word wrap

    모든 그룹이 포함할 이 블록을 반복합니다. 예를 들면 다음과 같습니다.

    [[customizations.group]]
    name = "widget"
    gid = 1130
    Copy to Clipboard Toggle word wrap

9.3.8.7. 기존 사용자를 위한 SSH 키 설정

custom .sshkey 를 사용하여 최종 이미지에 있는 기존 사용자의 SSH 키를 설정할 수 있습니다. 사용자 속성은 모두 필수입니다.

  • 기존 사용자의 SSH 키를 설정하여 블루프린트를 사용자 지정합니다.

    [[customizations.sshkey]]
    user = "root"
    key = "PUBLIC-SSH-KEY"
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    [[customizations.sshkey]]
    user = "root"
    key = "SSH key for root"
    Copy to Clipboard Toggle word wrap
    참고

    기존 사용자에 대한 customization .sshkey 사용자 지정만 구성할 수 있습니다. 사용자를 생성하고 SSH 키를 설정하려면 추가 사용자 사용자 지정을 참조하십시오.

9.3.8.8. 커널 인수 추가

부트 로더 커널 명령줄에 인수를 추가할 수 있습니다. 기본적으로 RHEL 이미지 빌더는 기본 커널을 이미지에 빌드합니다. 그러나 블루프린트에서 커널을 구성하여 커널을 사용자 지정할 수 있습니다.

  • 커널 부팅 매개변수 옵션을 기본값에 추가합니다.

    [customizations.kernel]
    append = "KERNEL-OPTION"
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    [customizations.kernel]
    name = "kernel-debug"
    append = "nosmt=force"
    Copy to Clipboard Toggle word wrap

9.3.8.9. 실시간 커널을 사용하여 RHEL 이미지 빌드

실시간 커널(kernel-rt)을 사용하여 RHEL 이미지를 빌드하려면 리포지토리를 재정의해야 kernel-rt 가 기본 커널로 올바르게 선택되는 이미지를 빌드할 수 있습니다. /usr/share/osbuild-composer/repositories/ 디렉터리의 .json 을 사용합니다. 그런 다음 시스템에 빌드한 이미지를 배포하고 실시간 커널 기능을 사용할 수 있습니다.

참고

실시간 커널은 Red Hat Enterprise Linux 실행을 위해 인증된 AMD64 및 Intel 64 서버 플랫폼에서 실행됩니다.

사전 요구 사항

절차

  1. 다음 디렉터리를 생성합니다.

    # mkdir /etc/osbuild-composer/repositories/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/osbuild-composer/repositories/rhel-8.버전.json 파일의 내용을 새 디렉터리로 복사합니다.

    # cp /usr/share/osbuild-composer/repositories/rhel-8.version.json /etc/osbuild-composer/repositories
    Copy to Clipboard Toggle word wrap
  3. RT 커널 리포지터리를 포함하도록 /etc/osbuild-composer/repositories/rhel-8.버전.json 파일을 편집합니다.

    # grep -C 6 kernel-rt /etc/osbuild-composer/repositories/rhel-8.version.json
          "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8.version/x86_64/appstream/os",
          "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nm………..=\n=UZd/\n-----END PGP PUBLIC KEY BLOCK-----\n",
          "rhsm": true,
          "check_gpg": true
        },
        {
          "name": "kernel-rt",
          "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8.version/x86_64/rt/os",
          "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBEr………fg==\n=UZd/\n-----END PGP PUBLIC KEY BLOCK-----\n",
          "rhsm": true,
          "check_gpg": true
        },
    Copy to Clipboard Toggle word wrap
  4. 서비스를 다시 시작하십시오.

    # systemctl restart osbuild-composer
    Copy to Clipboard Toggle word wrap
  5. kernel-rt.json 파일에 포함되어 있는지 확인합니다.

    # composer-cli sources list
    # composer-cli sources info kernel-rt
    Copy to Clipboard Toggle word wrap

    이전에 구성한 URL이 표시됩니다.

  6. 블루프린트를 생성합니다. 블루프린트에서 "[customizations.kernel]" 사용자 지정을 추가합니다. 다음은 블루프린트에 "[customizations.kernel]"을 포함하는 예입니다.

    name = "rt-kernel-image"
    description = ""
    version = "2.0.0"
    modules = []
    groups = []
    distro = "rhel-8_version_"
    [[customizations.user]]
    name = "admin"
    password = "admin"
    groups = ["users", "wheel"]
    [customizations.kernel]
    name = "kernel-rt"
    append = ""
    Copy to Clipboard Toggle word wrap
  7. 블루프린트를 서버로 푸시합니다.

    # composer-cli blueprints push rt-kernel-image.toml
    Copy to Clipboard Toggle word wrap
  8. 생성한 블루프린트에서 이미지를 빌드합니다. 다음 예제에서는 (.qcow2) 이미지를 빌드합니다.

    # composer-cli compose start rt-kernel-image qcow2
    Copy to Clipboard Toggle word wrap
  9. 실시간 커널 기능을 사용하려는 시스템에 빌드한 이미지를 배포합니다.

검증

  • 이미지에서 VM을 부팅한 후 이미지가 기본 커널로 올바르게 선택되었는지 확인합니다.

    $ cat /proc/cmdline
    BOOT_IMAGE=(hd0,got3)/vmlinuz-5.14.0-362.24.1..el8_version_.x86_64+rt...
    Copy to Clipboard Toggle word wrap

9.3.8.10. 시간대 및 NTP 설정

블루프린트를 사용자 지정하여 시간대 및 NTP( Network Time Protocol )를 구성할 수 있습니다. timezonentpservers 속성은 모두 선택적 문자열입니다. 시간대를 사용자 지정하지 않으면 시스템은 UTC( Universal Time, Coordinated )를 사용합니다. NTP 서버를 설정하지 않으면 시스템은 기본 배포를 사용합니다.

  • 시간대 및 원하는 ntpservers 로 블루프린트를 사용자 지정합니다.

    [customizations.timezone]
    timezone = "TIMEZONE"
    ntpservers = "NTP_SERVER"
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    [customizations.timezone]
    timezone = "US/Eastern"
    ntpservers = ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"]
    Copy to Clipboard Toggle word wrap
    참고

    Google Cloud와 같은 일부 이미지 유형에는 이미 NTP 서버가 설정되어 있습니다. 이미지에 선택한 환경에서 NTP 서버를 부팅해야 하므로 재정의할 수 없습니다. 그러나 블루프린트에서 시간대를 사용자 지정할 수 있습니다.

9.3.8.11. 로케일 설정 사용자 정의

결과 시스템 이미지에 대한 로케일 설정을 사용자 지정할 수 있습니다. 언어키보드 속성은 모두 필수입니다. 다른 많은 언어를 추가할 수 있습니다. 첫 번째 언어는 기본 언어이며 다른 언어는 보조 언어입니다.

절차

  • 로케일 설정을 설정합니다.

    [customizations.locale]
    languages = ["LANGUAGE"]
    keyboard = "KEYBOARD"
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    [customizations.locale]
    languages = ["en_US.UTF-8"]
    keyboard = "us"
    Copy to Clipboard Toggle word wrap
  • 언어에서 지원하는 값을 나열하려면 다음 명령을 실행합니다.

    $ localectl list-locales
    Copy to Clipboard Toggle word wrap
  • 키보드에서 지원하는 값을 나열하려면 다음 명령을 실행합니다.

    $ localectl list-keymaps
    Copy to Clipboard Toggle word wrap

9.3.8.12. 방화벽 사용자 정의

결과 시스템 이미지에 대한 방화벽을 설정합니다. 기본적으로 방화벽은 sshd 와 같이 포트를 명시적으로 활성화하는 서비스를 제외하고 들어오는 연결을 차단합니다.

[customizations.firewall] 또는 [customizations.firewall.services] 를 사용하지 않으려는 경우 속성을 제거하거나 빈 목록 []으로 설정합니다. 기본 방화벽 설정만 사용하려는 경우 블루프린트에서 사용자 지정을 생략할 수 있습니다.

참고

Google 및 OpenStack 템플릿은 해당 환경의 방화벽을 명시적으로 비활성화합니다. 블루프린트를 설정하여 이 동작을 재정의할 수 없습니다.

절차

  • 다음 설정으로 블루프린트를 사용자 지정하여 다른 포트 및 서비스를 엽니다.

    [customizations.firewall]
    ports = ["PORTS"]
    Copy to Clipboard Toggle word wrap

    여기서 port는 열 포트 또는 포트 및 프로토콜 범위를 포함하는 선택적 문자열 목록입니다. port:protocol 형식을 사용하여 포트를 구성할 수 있습니다. portA-portB:protocol 형식을 사용하여 포트 범위를 구성할 수 있습니다. 예를 들면 다음과 같습니다.

    [customizations.firewall]
    ports = ["22:tcp", "80:tcp", "imap:tcp", "53:tcp", "53:udp", "30000-32767:tcp", "30000-32767:udp"]
    Copy to Clipboard Toggle word wrap

    숫자 포트 또는 /etc/services 의 해당 이름을 사용하여 포트 목록을 활성화하거나 비활성화할 수 있습니다.

  • customization .firewall.service 섹션에서 활성화 또는 비활성화할 방화벽 서비스를 지정합니다.

    [customizations.firewall.services]
    enabled = ["SERVICES"]
    disabled = ["SERVICES"]
    Copy to Clipboard Toggle word wrap
  • 사용 가능한 방화벽 서비스를 확인할 수 있습니다.

    $ firewall-cmd --get-services
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    [customizations.firewall.services]
    enabled = ["ftp", "ntp", "dhcp"]
    disabled = ["telnet"]
    Copy to Clipboard Toggle word wrap
    참고

    firewall.services 에 나열된 서비스는 /etc/services 파일에서 사용할 수 있는 서비스 이름과 다릅니다.

9.3.8.13. 서비스 활성화 또는 비활성화

부팅 시 활성화할 서비스를 제어할 수 있습니다. 일부 이미지 유형에는 이미지가 올바르게 작동하고 이 설정을 재정의할 수 없도록 서비스가 이미 활성화되어 있거나 비활성화되어 있습니다. 블루프린트의 [customizations.services] 설정은 이러한 서비스를 대체하지 않고 이미지 템플릿에 이미 있는 서비스 목록에 서비스를 추가합니다.

  • 부팅 시 활성화할 서비스를 사용자 지정합니다.

    [customizations.services]
    enabled = ["SERVICES"]
    disabled = ["SERVICES"]
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    [customizations.services]
    enabled = ["sshd", "cockpit.socket", "httpd"]
    disabled = ["postfix", "telnetd"]
    Copy to Clipboard Toggle word wrap

9.3.8.14. ISO 이미지에 Kickstart 파일 삽입

[customization.installer] 블루프린트 사용자 지정을 사용하여 이미지 설치 프로그램 또는 에지 설치 프로그램과 같은 ISO 설치 프로그램 빌드에 고유한 Kickstart 파일을 추가하고 베어 메탈 배포를 위한 ISO 이미지를 빌드할 때 유연성을 높일 수 있습니다.

주의

Kickstart는 시스템의 첫 번째 디스크를 자동으로 다시 포맷하도록 구성되므로 기존 운영 체제 또는 데이터를 사용하여 시스템에서 ISO를 부팅하는 것은 안전하지 않을 수 있습니다.

다음 옵션을 선택하여 고유한 Kickstart 파일을 추가할 수 있습니다.

  • 설치 프로세스 중에 모든 값을 설정합니다.
  • Kickstart에서 unattended = true 필드를 활성화하고 기본값으로 완전히 무인 설치를 가져옵니다.
  • Kickstart 필드를 사용하여 자체 Kickstart 삽입. 이렇게 하면 모든 필수 필드를 지정하거나 설치 관리자가 누락될 수 있는 일부 필드를 묻는 경우 완전히 무인 설치가 발생할 수 있습니다.

Anaconda 설치 프로그램 ISO 이미지 유형은 다음 블루프린트 사용자 지정을 지원합니다.

[customizations.installer]
unattended = true
sudo-nopasswd = ["user", "%wheel"]
Copy to Clipboard Toggle word wrap

무인: 설치를 완전히 자동으로 만드는 Kickstart 파일을 만듭니다. 여기에는 기본적으로 다음 옵션 설정이 포함됩니다.

  • 텍스트 표시 모드
  • en_US.UTF-8 언어/로컬
  • us keyboard layout
  • UTC 시간대
  • zerombr, clearpart, autopart를 입력하여 첫 번째 디스크를 자동으로 지우고 파티션합니다.
  • dhcp 및 auto-activation을 활성화하는 네트워크 옵션

다음은 예제입니다.

liveimg --url file:///run/install/<_repo_>/liveimg.tar.gz
lang en_US.UTF-8
keyboard us
timezone UTC
zerombr
clearpart --all --initlabel
text
autopart --type=plain --fstype=xfs --nohome
reboot --eject
network --device=link --bootproto=dhcp --onboot=on --activate
Copy to Clipboard Toggle word wrap

sudo-nopasswd: 설치 후 /etc/sudoers.d 에 드롭인 파일을 생성하여 지정된 사용자 및 그룹이 암호 없이 sudo를 실행할 수 있도록 Kickstart 파일에 스니펫을 추가합니다. 그룹 앞에 % 를 붙여야 합니다. 예를 들어 값을 ["user"로 설정하면 "%wheel"] 에서 다음 Kickstart %post 섹션이 생성됩니다.

%post
echo -e "user\tALL=(ALL)\tNOPASSWD: ALL" > "/etc/sudoers.d/user"
chmod 0440 /etc/sudoers.d/user
echo -e "%wheel\tALL=(ALL)\tNOPASSWD: ALL" > "/etc/sudoers.d/%wheel"
chmod 0440 /etc/sudoers.d/%wheel
restorecon -rvF /etc/sudoers.d
%end
Copy to Clipboard Toggle word wrap

설치 프로그램 Kickstart

또는 다음 사용자 지정을 사용하여 사용자 지정 Kickstart를 포함할 수 있습니다.

[customizations.installer.kickstart]
contents = """
text --non-interactive
zerombr
clearpart --all --initlabel --disklabel=gpt
autopart --noswap --type=lvm
network --bootproto=dhcp --device=link --activate --onboot=on
"""
Copy to Clipboard Toggle word wrap

osbuild-composerimage-installer 또는 edge-installer 이미지 유형과 관련된 경우 system: liveimg 또는 ostreesetup 을 설치하는 명령을 자동으로 추가합니다. 다른 설치 프로그램 사용자 정의와 함께 [customizations.installer.kickstart] 사용자 지정을 사용할 수 없습니다.

9.3.8.15. 파티션 모드 지정

partitioning_mode 변수를 사용하여 빌드 중인 디스크 이미지를 파티션하는 방법을 선택합니다. 다음과 같은 지원되는 모드로 이미지를 사용자 지정할 수 있습니다.

  • auto-lvm: 하나 이상의 파일 시스템 사용자 지정이 없는 경우 원시 파티션 모드를 사용합니다. 이 경우 LVM 파티션 모드를 사용합니다.
  • lvm: 추가 마운트 지점이 없는 경우에도 LVM 파티션 모드를 사용합니다.
  • Raw: 마운트 지점이 하나 이상 있는 경우에도 원시 파티션을 사용합니다.
  • 다음 사용자 지정을 사용하여 partitioning_mode 변수로 블루프린트를 사용자 지정할 수 있습니다.

    [customizations]
    partitioning_mode = "lvm"
    Copy to Clipboard Toggle word wrap

9.3.8.16. 사용자 정의 파일 시스템 구성 지정

블루프린트에서 사용자 지정 파일 시스템 구성을 지정하고 기본 레이아웃 구성 대신 특정 디스크 레이아웃으로 이미지를 생성할 수 있습니다. 블루프린트에서 기본이 아닌 레이아웃 구성을 사용하면 다음과 같은 이점을 얻을 수 있습니다.

  • 보안 벤치마크 준수
  • 디스크 부족 오류로부터 보호
  • 성능 개선
  • 기존 설정과의 일관성
참고

OSTree 이미지에는 읽기 전용과 같은 자체 마운트 규칙이 있으므로 OSTree 시스템은 파일 시스템 사용자 정의를 지원하지 않습니다. 다음 이미지 유형은 지원되지 않습니다.

  • image-installer
  • edge-installer
  • edge-simplified-installer

또한 이러한 이미지 유형은 분할된 운영 체제 이미지를 생성하지 않으므로 다음 이미지 유형에서는 파일 시스템 사용자 정의를 지원하지 않습니다.

  • edge-commit
  • edge-container
  • tar
  • container

그러나 다음 이미지 유형에서는 파일 시스템 사용자 지정을 지원합니다.

  • simplified-installer
  • edge-raw-image
  • edge-ami
  • edge-vsphere

OSTree 시스템에 대한 몇 가지 추가 예외를 제외하고 파일 시스템의 /root 수준에서 임의의 디렉터리 이름을 선택할 수 있습니다(예: '/local',' /mypartition', /$ CryostatITION ). 논리 볼륨에서 이러한 변경 사항은 LVM 파티션 시스템에서 수행됩니다. 다음 디렉터리는 별도의 논리 볼륨에서 /var,' /var/log' 및 /var/lib/containers 가 지원됩니다. root 수준에서 예외는 다음과 같습니다.

  • "/home": {Deny: true},
  • "/mnt": {Deny: true},
  • "/opt": {Deny: true},
  • "/ostree": {Deny: true},
  • "/root": {Deny: true},
  • "/srv": {Deny: true},
  • "/var/home": {Deny: true},
  • "/var/mnt": {Deny: true},
  • "/var/opt": {Deny: true},
  • "/var/roothome": {Deny: true},
  • "/var/srv": {Deny: true},
  • "/var/usrlocal": {Deny: true},

RHEL 8.10 및 9.5 이전의 릴리스 배포의 경우 블루프린트는 다음 마운트 지점 및 해당 하위 디렉터리를 지원합니다.

  • / - 루트 마운트 지점
  • /var
  • /home
  • /opt
  • /srv
  • /usr
  • /app
  • /data
  • /tmp

RHEL 9.5 및 8.10 릴리스 이후 릴리스 배포에서는 운영 체제용으로 예약된 특정 경로를 제외하고 임의의 사용자 지정 마운트 지점을 지정할 수 있습니다.

다음 마운트 지점 및 해당 하위 디렉터리에 임의의 사용자 지정 마운트 지점을 지정할 수 없습니다.

  • /bin
  • /boot/efi
  • /dev
  • /etc
  • /lib
  • /lib64
  • /lost+found
  • /proc
  • /run
  • /sbin
  • /sys
  • /sysroot
  • /var/lock
  • /var/run

/usr 사용자 지정 마운트 지점의 블루프린트에서 파일 시스템을 사용자 지정할 수 있지만 하위 디렉터리는 허용되지 않습니다.

참고

마운트 지점 사용자 지정은 CLI를 사용하여 RHEL 8.5 이후에만 지원됩니다. 이전 배포에서는 루트 파티션을 마운트 지점으로만 지정하고 size 인수를 이미지 크기의 별칭으로 지정할 수 있습니다. RHEL 8.6부터 osbuild-composer-46.1-1.el8 RPM 및 이후 버전의 경우 물리적 파티션을 더 이상 사용할 수 없으며 파일 시스템 사용자 지정으로 논리 볼륨을 생성합니다.

사용자 지정된 이미지에 두 개 이상의 파티션이 있는 경우 LVM에 사용자 지정된 파일 시스템 파티션을 사용하여 이미지를 만들고 런타임 시 해당 파티션의 크기를 조정할 수 있습니다. 이렇게 하려면 블루프린트에서 사용자 지정 파일 시스템 구성을 지정하고 필요한 디스크 레이아웃을 사용하여 이미지를 생성할 수 있습니다. 기본 파일 시스템 레이아웃은 변경되지 않은 상태로 유지됩니다. 파일 시스템 사용자 지정 없이 일반 이미지를 사용하고 cloud-init 는 루트 파티션의 크기를 조정합니다.

블루프린트는 파일 시스템 사용자 지정을 LVM 파티션으로 자동 변환합니다.

사용자 지정 파일 블루프린트 사용자 지정을 사용하여 새 파일을 생성하거나 기존 파일을 교체할 수 있습니다. 지정한 파일의 상위 디렉터리가 있어야 합니다. 그렇지 않으면 이미지 빌드가 실패합니다. [customizations.directories] 사용자 지정에 상위 디렉터리가 있는지 확인합니다.

주의

파일 사용자 정의를 다른 블루프린트 사용자 정의와 결합하면 다른 사용자 정의 기능에 영향을 주거나 현재 파일 사용자 정의를 재정의할 수 있습니다.

9.3.8.16.1. 블루프린트에 사용자 지정 파일 지정

[customizations.files] 블루프린트 사용자 지정을 사용하면 다음을 수행할 수 있습니다.

  • 새 텍스트 파일을 생성합니다.
  • 기존 파일 수정. 경고: 기존 콘텐츠를 덮어쓸 수 있습니다.
  • 생성 중인 파일에 대한 사용자 및 그룹 소유권을 설정합니다.
  • 8진수 형식으로 모드 권한을 설정합니다.

다음 파일을 생성하거나 교체할 수 없습니다.

  • /etc/fstab
  • /etc/shadow
  • /etc/passwd
  • /etc/group

[customizations.files] 및 [[customizations.directories]] 블루프린트 사용자 지정을 사용하여 이미지에 사용자 지정 파일 및 디렉터리를 생성할 수 있습니다. 이러한 사용자 지정은 /etc 디렉토리에서만 사용할 수 있습니다.

참고

이러한 블루프린트 사용자 정의는 edge-raw-image,edge-installer, edge-simplified-installer 와 같은 OSTree 커밋을 배포하는 이미지 유형을 제외하고 모든 이미지 유형에서 지원됩니다.

주의

이미 설정된 모드,사용자 또는 그룹이 설정된 이미지에 이미 존재하는 디렉터리 경로에 custom .directories 를 사용하는 경우 이미지 빌드에서 기존 디렉터리의 소유권 또는 권한을 변경하지 못합니다.

9.3.8.16.2. 블루프린트에 사용자 지정 디렉터리 지정

[customizations.directories] 블루프린트 사용자 지정을 사용하면 다음을 수행할 수 있습니다.

  • 새 디렉토리를 만듭니다.
  • 생성 중인 디렉터리에 대한 사용자 및 그룹 소유권을 설정합니다.
  • 8진수 형식으로 디렉터리 모드 권한을 설정합니다.
  • 필요에 따라 상위 디렉터리가 생성되었는지 확인합니다.

[customizations.files] 블루프린트 사용자 지정을 사용하면 다음을 수행할 수 있습니다.

  • 새 텍스트 파일을 생성합니다.
  • 기존 파일 수정. 경고: 기존 콘텐츠를 덮어쓸 수 있습니다.
  • 생성 중인 파일에 대한 사용자 및 그룹 소유권을 설정합니다.
  • 8진수 형식으로 모드 권한을 설정합니다.
참고

다음 파일을 생성하거나 교체할 수 없습니다.

  • /etc/fstab
  • /etc/shadow
  • /etc/passwd
  • /etc/group

다음 사용자 지정을 사용할 수 있습니다.

  • 블루프린트에서 파일 시스템 구성을 사용자 지정합니다.

    [[customizations.filesystem]]
    mountpoint = "MOUNTPOINT"
    minsize = MINIMUM-PARTITION-SIZE
    Copy to Clipboard Toggle word wrap

    Mi NIMUM-PARTITION-SIZE 값은 기본 크기 형식이 없습니다. 사용자 지정은 kB에서 TB까지, KiB~TiB의 값 및 단위를 지원합니다. 예를 들어 마운트 지점 크기를 바이트 단위로 정의할 수 있습니다.

    [[customizations.filesystem]]
    mountpoint = "/var"
    minsize = 1073741824
    Copy to Clipboard Toggle word wrap
  • 단위를 사용하여 마운트 지점 크기를 정의합니다. 예를 들면 다음과 같습니다.

    [[customizations.filesystem]]
    mountpoint = "/opt"
    minsize = "20 GiB"
    Copy to Clipboard Toggle word wrap
    [[customizations.filesystem]]
    mountpoint = "/boot"
    minsize = "1 GiB"
    Copy to Clipboard Toggle word wrap
  • minsize 를 설정하여 최소 파티션을 정의합니다. 예를 들면 다음과 같습니다.

    [[customizations.filesystem]]
    mountpoint = "/var"
    minsize = 2147483648
    Copy to Clipboard Toggle word wrap
  • [customizations.directories] :을 사용하여 이미지의 /etc 디렉터리에 사용자 지정 디렉토리를 만듭니다.

    [[customizations.directories]]
    path = "/etc/directory_name"
    mode = "octal_access_permission"
    user = "user_string_or_integer"
    group = "group_string_or_integer"
    ensure_parents = boolean
    Copy to Clipboard Toggle word wrap

    블루프린트 항목은 다음과 같이 설명되어 있습니다.

    • 경로 - 필수 - 생성하려는 디렉터리의 경로를 입력합니다. /etc 디렉토리 아래의 절대 경로여야 합니다.
    • mode - 선택 사항 - 디렉터리에 대한 액세스 권한을 8진수 형식으로 설정합니다. 권한을 지정하지 않으면 기본값은 0755입니다. 앞에 0은 선택 사항입니다.
    • user - 선택 사항 - 사용자를 디렉터리의 소유자로 설정합니다. 사용자를 지정하지 않으면 기본값은 root 입니다. 사용자를 문자열 또는 정수로 지정할 수 있습니다.
    • group - 선택 사항 - 그룹을 디렉터리의 소유자로 설정합니다. 그룹을 지정하지 않으면 기본값은 root 입니다. 그룹을 문자열 또는 정수로 지정할 수 있습니다.
    • ensure_parents - 선택 사항 - 필요에 따라 상위 디렉터리를 생성할지 여부를 지정합니다. 값을 지정하지 않으면 기본값은 false 입니다.
  • [customizations.directories] :을 사용하여 이미지의 /etc 디렉터리에 사용자 지정 파일을 만듭니다.

    [[customizations.files]]
    path = "/etc/directory_name"
    mode = "octal_access_permission"
    user = "user_string_or_integer"
    group = "group_string_or_integer"
    data = "Hello world!"
    Copy to Clipboard Toggle word wrap

    블루프린트 항목은 다음과 같이 설명되어 있습니다.

    • path - Mandatory - 생성하려는 파일의 경로를 입력합니다. /etc 디렉토리 아래의 절대 경로여야 합니다.
    • mode Optional - 8진수 형식으로 파일에 대한 액세스 권한을 설정합니다. 권한을 지정하지 않으면 기본값은 0644입니다. 앞에 0은 선택 사항입니다.
    • user - Optional - 사용자를 파일의 소유자로 설정합니다. 사용자를 지정하지 않으면 기본값은 root 입니다. 사용자를 문자열 또는 정수로 지정할 수 있습니다.
    • group - 선택 사항 - 그룹을 파일의 소유자로 설정합니다. 그룹을 지정하지 않으면 기본값은 root 입니다. 그룹을 문자열 또는 정수로 지정할 수 있습니다.
    • data - 선택 사항 - 일반 텍스트 파일의 내용을 지정합니다. 콘텐츠를 지정하지 않으면 빈 파일이 생성됩니다.

9.3.8.17. 블루프린트에서 볼륨 그룹 및 논리 볼륨 이름 지정

다음 작업에 RHEL 이미지 빌더를 사용할 수 있습니다.

  • 고급 파티션 레이아웃을 사용하여 RHEL 디스크 이미지를 생성합니다. 사용자 지정 마운트 지점, LVM 기반 파티션 및 LVM 기반 SWAP를 사용하여 디스크 이미지를 생성할 수 있습니다. 예를 들어 config.toml 파일을 사용하여 //boot 디렉터리의 크기를 변경합니다.
  • 사용할 파일 시스템을 선택합니다. ext4xfs 중에서 선택할 수 있습니다.
  • 스왑 파티션 및 LV를 추가합니다. 디스크 이미지에는 LV 기반 SWAP가 포함될 수 있습니다.
  • LVM 엔터티의 이름을 변경합니다. 이미지 내의 논리 볼륨(LV) 및 볼륨 그룹(VG)에는 사용자 지정 이름이 있을 수 있습니다.

다음 옵션은 지원되지 않습니다.

  • 하나의 이미지에 여러 PV 또는 VG가 있습니다.
  • SWAP 파일
  • /dev/shm, /tmp 와 같은 비 물리적 파티션의 마운트 옵션.

예제: 파일 시스템이 있는 VG 및 LG 사용자 지정 이름을 추가합니다.

[[customizations.disk.partitions]]
type = "plain"
label = "data"
mountpoint = "/data"
fs_type = "ext4"
minsize = "50 GiB"

[[customizations.disk.partitions]]
type = "lvm"
name = "mainvg"
minsize = "20 GiB"

[[customizations.disk.partitions.logical_volumes]]
name = "rootlv"
mountpoint = "/"
label = "root"
fs_type = "ext4"
minsize = "2 GiB"

[[customizations.disk.partitions.logical_volumes]]
name = "homelv"
mountpoint = "/home"
label = "home"
fs_type = "ext4"
minsize = "2 GiB"

[[customizations.disk.partitions.logical_volumes]]
name = "swaplv"
fs_type = "swap"
minsize = "1 GiB"
Copy to Clipboard Toggle word wrap

9.3.9. RHEL 이미지 빌더에서 설치한 패키지

RHEL 이미지 빌더를 사용하여 시스템 이미지를 생성할 때 시스템은 기본 패키지 그룹 세트를 설치합니다.

참고

청사진에 추가 구성 요소를 추가할 때 추가한 구성 요소의 패키지가 다른 패키지 구성 요소와 충돌하지 않는지 확인합니다. 그렇지 않으면 시스템이 종속성을 해결하지 못하고 사용자 지정된 이미지를 생성하지 못합니다. 다음 명령을 실행하여 패키지 간에 충돌이 없는지 확인할 수 있습니다.

# composer-cli blueprints depsolve BLUEPRINT-NAME
Copy to Clipboard Toggle word wrap

기본적으로 RHEL 이미지 빌더에서는 Core 그룹을 기본 패키지 목록으로 사용합니다.

Expand
표 9.3. 이미지 유형 생성을 지원하는 기본 패키지
이미지 유형기본 패키지

ami

checkpolicy, chrony, cloud-init, cloud-utils-growpart, @Core, dhcp-client, gdisk, insights-client, kernel, langpacks-en, net-tools, NetworkManager, redhat-release-eula, rng-tools, rsync, selinux-policy-targeted, tar, yum-utils

openstack

@core, langpacks-en

qcow2

@core, chrony, dnf, kernel, yum, nfs-utils, dnf-utils, cloud-init, python3-jsonschema, qemu-guest-agent, cloud-utils-growpart, dracut-norescue, tar, tcpdump, tcpdump, dnf-plugin-space-spacewalk, rhn-client-tools, rhnlib, rhnsd, rhn-setup, NetworkManager, dhcp-client, cockpit-ws, cockpit-system, subscription-manager-cockpit, redhat-release, redhat-release-eula, rng-tools, insights-client

tar

policycoreutils, selinux-policy-targeted

vhd

@core, langpacks-en

vmdk

@core, chrony, cloud-init, firewalld, langpacks-en, open-vm-tools, selinux-policy-targeted

edge-commit

redhat-release,glibc,glibc-minimal-langpack,nss-altfiles,dracut-config-generic,dracut-network,basesystem,bash,platform-python,shadow-utils, , chrony,설정,shadow-utils,sudo,systemd,coreutils,util-linux,curl,vim-minimal,rpm,rpm-ostree,polkit,lvm2, cryptsetup,pinentry,e2fsprogs,dosfstools,keyutils,gnupg2,attr,xz,gzip,firewalld,iptables,NetworkManager, NetworkManager-wifi,NetworkManager-wwan,wpa_supplicant,traceroute,호스트 이름,iproute, iproute ,openssh-clients,procps-ng,rootfiles,openssh-server, passwd,policycoreutils,policycoreutils-python-utils,selinux-policy-targeted,setools-console,less,tar,rsync,usbguard,bash-completion,tmux, IMA -evm-utils,audit,podman,containernetworking-plugins,container-selinux,skopeo,criu,slirp4netns,fuse-overlayfs,clevis, clevis-dracut,clevis-luks,greenboot,greenboot-default-health-checks,fdo-client,fdo-owner-cli,sos.

edge-container

dnf, dosfstools, e2fsprogs, e2fsprogs, glibc, lorax-templates-rhel, lvm2, policycoreutils, python36, python3-iniparse, qemu-img, selinux-policy-targeted, systemd, tar, xfsprogs, xz

edge-installer

aajohan-comfortaa-fonts, a pltis-cantarell-fonts, alsa-tools-firmware, alsa-tools-firmware, anaconda-install-env-deps, anaconda-widgets, audit, bind-utils, bitmap-fangsongti-fonts, 10.0.0.12, cryptsetup, dbus-x11, dejavu-sans-fonts, dejavu-sans-mono-fonts, device-mapper-persistent-data, dnf, dump, ethtool, fcoe-utils, ftp, gdb-gdbserver, gdisk, gfs2-utils, gfs2-utils, glibc-all-langpacks, google-noto-sans-ttc-fonts, gsettings-SECRET-schemas, hdparm, hexedit, initscripts, ipmitool, iwl3945-firmware, iwl4965-firmware, iwl6000g-firmware, iwl6000g-firmware, iwl6000g2b-firmware, jomolhari-fonts, kacst-farsi-fonts, kacst-qurn-fonts, kbd, kbd-misc, kdump-anaconda-addon-fonts, libblockdev-lvm-dbus, libblockdev-lvm-fonts, libertas-sd8686-firmware, libertas-sd8787-firmware, libertas-usb8388-firmware, libertas-usb8388-olpc-firmware, libibverbs, libreport-plugin-bugzilla, libreport-plugin-reportuploader, libreport-rhel-bugzilla, librsvg2, linux-firmware, lklug-fonts, lldpad, lohit-beamese-fonts, lohit-bengali-fonts, lohit-devanagari-fonts, lohit-gujarati-fonts, lohit-gurmukhi-fonts, lohit-kannada-fonts, lohit-odia-fonts, lohit-taknative-fonts, lohit-telugu-fonts, lsof, madan-fonts, metacity, mtr, mtr MT-st, net-tools, nmap-ncat, nm-connection-editor, nss-tools, openssh-server, oscap-anaconda-addon, pciutils, perl-interpreter, smallz, python3-pyatspi, rdma-core, redhat-release-eula, rpm-ostree, rsync, rsyslog, sg3_utils, sil-abyssinica-fonts, sil-padauk-fonts, sil-scheherazade-fonts, smartmontools, smc-meera-fonts, spice-vdagent, strace, system-storage-manager, Thai-scalable-waree-fonts, Velerovnc-server-minimal, fluentvnc-server-module, udisks2, udisks2-iscsi, usbutils, volume_minimal, volume_key, wget, xfsdump, xorg-x11-drivers,xorg-x11-fonts-misc, Xorg-x11-server-utils,xorg-x11-server-Xorg, xorg-x11-xauth

edge-simplified-installer

attr, basesystem, binutils, bsdtar, clevis-dracut, clevis-luks, cloud-utils-growpart, coreos-installer-dracut, coreos-installer-dracut, coreutils, device-mapper-multipath, dnsmasq, dosfstools, dracut-live, e2fsprogs, fcoe-utils, fcoe-utils, FDO-init, gzip, ima-evm-utils, iproute, iptables, iputils, iscsi-initiator-utils, keyutils, lldpad, lvm2, passwd, policycoreutils, policycoreutils-python-utils, procps-ng, rootfiles, setools-console, sudo, traceroute, util-linux

image-installer

aajohan-comfortaa-fonts,a topologytis-cantarell-fonts,alsa-firmware,alsa-tools-firmware,anaconda -dracut,anaconda-install-env-deps, Anaconda -widgets,audit,bind-utils,비트맵-fangti-fonts,bzip2,cryptsetup,curl,dbus-x11,dejavu-sans-fonts, dejavu-sans-mono-fonts,device-mapper-persistent-data,dmidecode,dnf,dracut-config-generic,dracut-network,efibootmgr,ethtool, fCoE-utils,ftp,gdb-gdbserver,gdisk,glibc-all-langpacks,gnome-kiosk,google-noto-sans-cjk-ttc-fonts,grub2-tools, grub2-tools-extra,grub2-tools-minimal,grubby,gsettings-desktop-schemas,hdparm,hexedit,hostname,initscripts,ipmitool,iwl1000-firmware, iwl100-firmware,iwl105-firmware,iwl135-firmware,iwl2000-firmware,iwl2030-firmware,iwl3160-firmware,iwl5000-firmware, iwl5150-firmware,iwl6000g2a-firmware,iwl6050-firmware,iwl6050-firmware, jomolhari- fonts ,jomolhari-fonts, kacst-farsi-fonts,kacst-qurn-fonts, kbd ,kbd -misc,kdump-anaconda-addon,커널,khmeros-base-fonts,less, libblockdev-lvm-dbus,libibverbs,libreport-plugin-bugzilla,libreport-plugin-reportuploader,librsvg2,linux-firmware,lklug-fonts,lldpad, lohit-assamese-fonts,lohit-bengali-fonts,lohit- gujarati-fonts,lohit-gurmukhi-fonts, lohit-karhsclda-fonts,lohit-odia-fonts,lohit-tamil-fonts,lohit-telugu-fonts,lsof,madan-fonts,mtr, MT-st,net-tools,nfs-utils,nmap-ncat,nm-connection-editor,nss-tools,openssh-clients,openssh-server,oscap-anaconda-addon, ostree,pciutils,perl-interpreter, Plymouth ,prefixdevname,python3-pyatspi,rdma-core,redhat-release-eula,rng-tools, rpcbind,rpm-ostree,rsync,rsyslog,selinux-policy-targeted,sg3_utils,sil-abysinica-fonts,sil-padauk-fonts,sil-scheherazade-fonts, smartmontools,smc-meera-fonts,spice-vdagent,strace,systemd,tar,thai-scalable-waree-fonts, Cryostatvnc-server-minimal, Cryostat vnc-server-module,udisks2,udisks2-iscsi,vim-minimal,volume_key,wget,xfsprogs,xorg-x11-drivers, xorg-x11-fonts-misc,xorg-x11-server-utils,xorg-x11-server-Xorg,xorg-x11-xauth,xz

edge-raw-image

dnf, dosfstools, e2fsprogs, e2fsprogs, glibc, lorax-templates-rhel, lvm2, policycoreutils, python36, python3-iniparse, qemu-img, selinux-policy-targeted, systemd, tar, xfsprogs, xz

gce

@core, langpacks-en, acpid, dhcp-client, dnf-automatic, net-tools, python3, rng-tools, tar, gRPC

9.3.10. 사용자 정의 이미지에서 서비스 활성화

이미지 빌더를 사용하여 사용자 정의 이미지를 구성할 때 이미지에 사용되는 기본 서비스는 다음 사항에 따라 결정됩니다.

  • osbuild-composer 유틸리티를 사용하는 RHEL 릴리스
  • 이미지 유형

예를 들어 ami 이미지 유형을 사용하면 기본적으로 sshd,chronyd, cloud-init 서비스를 활성화합니다. 이러한 서비스가 활성화되지 않으면 사용자 정의 이미지가 부팅되지 않습니다.

Expand
표 9.4. 이미지 유형 생성을 지원하는 서비스 사용
이미지 유형기본 활성화된 서비스

ami

sshd, cloud-init, cloud-init-local, cloud-config, cloud-final

openstack

sshd, cloud-init, cloud-init-local, cloud-config, cloud-final

qcow2

cloud-init

rhel-edge-commit

추가 서비스는 기본적으로 활성화되어 있지 않습니다.

tar

추가 서비스는 기본적으로 활성화되어 있지 않습니다.

vhd

sshd, chronyd, waagent, cloud-init, cloud-init-local, cloud-config, cloud-final

vmdk

sshd, chronyd, vmtoolsd, cloud-init

참고: 시스템을 부팅하는 동안 활성화할 서비스를 사용자 지정할 수 있습니다. 그러나 사용자 지정은 언급된 이미지 유형에 대해 기본적으로 활성화된 서비스를 재정의하지 않습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat