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

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

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

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

5.3.1. 배포 선택

distro 필드를 사용하여 이미지를 구성할 때 사용할 배포를 선택하거나 블루프린트를 해제할 수 있습니다. distro를 비워 두면 호스트 배포를 사용합니다. 배포를 지정하지 않으면 블루프린트에서 호스트 배포를 사용합니다. 호스트 운영 체제를 업그레이드하는 경우 새 운영 체제 버전을 사용하여 배포 세트 빌드 이미지가 없는 블루프린트입니다. RHEL 이미지 빌더 호스트와 다른 운영 체제 이미지를 빌드할 수 없습니다.

절차

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

    name = "blueprint_name"
    description = "blueprint_version"
    version = "0.1"
    distro = "different_minor_version"

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

5.3.2. 패키지 그룹 선택

패키지 및 모듈로 블루프린트를 사용자 지정합니다. name 속성은 필수 문자열입니다. version 속성은 제공되지 않는 경우 리포지토리의 최신 버전을 사용하는 선택적 문자열입니다.

참고

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

절차

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

    [[packages]]
    name = "package_group_name"

    "package_group_name"을 그룹 이름으로 바꿉니다. 예를 들면 "tmux"입니다.

    [[packages]]
    name = "tmux"
    version = "2.9a"

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

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

절차

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

    [customizations]
    hostname = "baseimage"

5.3.4. 추가 사용자 지정

이미지에 사용자를 추가하고 선택적으로 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

    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())'

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

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

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

5.3.5. 추가 그룹 지정

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

절차

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

    [[customizations.group]]
    name = "GROUP-NAME"
    gid = NUMBER

    모든 그룹에 대해 이 블록을 반복하여 포함합니다.

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

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

절차

  • 기존 사용자의 SSH 키를 설정하여 블루프린트를 사용자 지정합니다.
[[customizations.sshkey]]
user = "root"
key = "PUBLIC-SSH-KEY"
참고

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

5.3.7. 커널 인수 추가

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

절차

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

    [customizations.kernel]
    append = "KERNEL-OPTION"
  • 이미지에 사용할 커널 이름 정의

    [customizations.kernel]
    name = "KERNEL-rt"

5.3.8. 시간대 및 NTP 설정

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

절차

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

    [customizations.timezone]
    timezone = "TIMEZONE"
    ntpservers = "NTP_SERVER"

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

    [customizations.timezone]
    timezone = "US/Eastern"
    ntpservers = ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"]
    참고

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

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

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

절차

  • 로케일 설정을 설정합니다.
[customizations.locale]
languages = ["LANGUAGE"]
keyboard = "KEYBOARD"

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

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

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

    $ localectl list-keymaps

5.3.10. 방화벽 사용자 정의

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

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

참고

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

절차

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

    [customizations.firewall]
    ports = ["PORTS"]

    여기서 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"]

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

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

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

    $ firewall-cmd --get-services

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

    [customizations.firewall.services]
    enabled = ["ftp", "ntp", "dhcp"]
    disabled = ["telnet"]
    참고

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

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

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

절차

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

    [customizations.services]
    enabled = ["SERVICES"]
    disabled = ["SERVICES"]

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

    [customizations.services]
    enabled = ["sshd", "cockpit.socket", "httpd"]
    disabled = ["postfix", "telnetd"]

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

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

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

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

블루프린트는 다음 마운트 지점 및 해당 하위 디렉터리를 지원합니다.

  • / - 루트 마운트 지점
  • /var
  • /home
  • /opt
  • /srv
  • /usr
  • /app
  • /data
  • /boot - 블루프린트는 RHEL 8.7 및 RHEL 9.1 이후의 /boot 사용자 지정을 지원합니다.
참고

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

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

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

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

주의

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

[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 를 사용하는 경우 이미지 빌드에서 기존 디렉터리의 소유권 또는 권한을 변경하지 못합니다.

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

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

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

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

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

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

절차

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

    [[customizations.filesystem]]
    mountpoint = "MOUNTPOINT"
    size = MINIMUM-PARTITION-SIZE

    MINIMUM- Cryostat-SIZE 값은 기본 크기 형식이 없습니다. 블루프린트 사용자 지정은 kB에서 TB로, KiB에서 TiB까지의 다음 값과 단위를 지원합니다. 예를 들어 마운트 지점 크기를 바이트 단위로 정의할 수 있습니다.

    [[customizations.filesystem]]
    mountpoint = "/var"
    size = 1073741824
  • 단위를 사용하여 마운트 지점 크기를 정의합니다. 예를 들어 다음과 같습니다.

    [[customizations.filesystem]]
    mountpoint = "/opt"
    size = "20 GiB"
    [[customizations.filesystem]]
    mountpoint = "/boot"
    size = "1 GiB"
  • [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

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

  • 경로 - 필수 - 생성하려는 디렉터리의 경로를 입력합니다. /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!"

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

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