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. 추가 그룹 지정
결과 시스템 이미지에 대한 그룹을 지정합니다. name
및 gid
속성은 모두 필수입니다.
절차
그룹으로 블루프린트를 사용자 지정합니다.
[[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 )를 구성할 수 있습니다. timezone
및 ntpservers
속성은 모두 선택적 문자열입니다. 시간대를 사용자 지정하지 않으면 시스템은 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
- 선택 사항 - 일반 텍스트 파일의 내용을 지정합니다. 콘텐츠를 지정하지 않으면 빈 파일이 생성됩니다.