Menu Close
Settings Close

Language and Page Formatting Options

5.3. 支持的镜像自定义

蓝图中支持一些镜像自定义。要使用这些选项,您必须首先在蓝图中配置自定义,并将它导入(push)到 Image Builder。

注意

目前在 web 控制台中不支持这些自定义。

设置镜像主机名
[customizations]
hostname = "baseimage"
生成系统镜像的用户规范
[[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] 条目创建。

重要

若要生成哈希,您必须在您的系统上安装 python3。以下命令将安装 python3 软件包。

# dnf install python3

PASSWORD-HASH 替换为实际密码散列。要生成哈希,请使用如下命令:

$ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

PUBLIC-SSH-KEY 替换为实际公钥。

使用适当的值替换其他占位符。

根据需要可以省略任何行,只需要用户名。

为每个要包含的用户重复这个块。

生成系统镜像的组规范
[[customizations.group]]
name = "GROUP-NAME"
gid = NUMBER

为每个组重复此块。

设置现有用户的 ssh 密钥
[[customizations.sshkey]]
user = "root"
key = "PUBLIC-SSH-KEY"
注意

这个选项仅适用于现有用户。要创建用户并设置 ssh 密钥,请参阅本节中自定义的系统镜像自定义的用户规格

在默认值中附加一个内核引导参数选项
[customizations.kernel]
append = "KERNEL-OPTION"
默认情况下,Image Builder 将默认内核构建到镜像中。但是,您可以使用蓝图中的以下配置自定义内核
[customizations.kernel]
name = "KERNEL-rt"
定义要在镜像中使用的内核名称
[customizations.kernel.name]
name = "KERNEL-NAME"
为生成的系统镜像设置时区和 网络时间协议 (NTP) 服务器
[customizations.timezone]
timezone = "TIMEZONE"
ntpservers = "NTP_SERVER"

如果您没有设置时区,系统将默认使用 Universal Time, Coordinated (UTC)。设置 NTP 服务器是可选的。

为生成的系统镜像设置区域设置
[customizations.locale]
languages = ["LANGUAGE"]
keyboard = "KEYBOARD"

设置语言和键盘选项是必须的。您可以添加多种语言。您添加的第一个语言是主要语言,其他语言为次要语言。

为生成的系统镜像设置防火墙
[customizations.firewall]
port = ["PORTS"]

您可以使用数字端口或 /etc/services 文件中的名称来启用列表。

自定义防火墙服务

查看可用的防火墙服务。

$ firewall-cmd --get-services

在蓝图中,在 customs.firewall.service 部分下指定要自定义的防火墙服务。

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

firewall.services 中列出的服务与 /etc/services 文件中提供的名称不同。

您可选择为计划创建的系统镜像自定义防火墙服务。

注意

如果您不想自定义防火墙服务,请省略蓝图中的 [customizations.firewall][customizations.firewall.services] 部分。

设置在引导时要启用哪个服务
[customizations.services]
enabled = ["SERVICES"]
disabled = ["SERVICES"]

您可以控制在引导期间要启用哪些服务。有些镜像类型已经启用或禁用了特定服务,以便镜像正常工作,此设置无法覆盖。

注意

每次构建启动时,它都会克隆存储库。如果您引用具有大量历史记录的存储库,则克隆可能会需要一段时间,并使用大量的磁盘空间。另外,克隆是临时的,在创建 RPM 软件包后会被删除。

指定自定义文件系统配置

您可以在蓝图中指定自定义文件系统配置,因此创建带有特定磁盘布局的镜像,而不是使用默认的布局。通过使用蓝图中的非默认布局配置,您可以受益于:

  • 安全基准合规性
  • 防止磁盘不足错误
  • performance
  • 与现有设置的一致性

    在蓝图中自定义文件系统配置:

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

    支持以下 挂载点 及其子目录:

    • / - root 挂载点
    • /var
    • /home
    • /opt
    • /srv
    • /usr
    • /app
    • /data

      注意

      只有在使用 CLI,RHEL 8.5 和 RHEL 9.0 发行版才支持自定义挂载点。在早期发行本中,您只能将 root 分区指定为挂载点,并将 size 参数指定为镜像大小的别名。

      如果您有一个以上的分区,您可以在 LVM 中创建带有自定义文件系统分区的镜像,并在运行时重新定义这些分区大小。为此,您可以在蓝图中指定自定义的文件系统配置,然后使用所需的磁盘布局创建镜像。默认文件系统布局保持不变 - 如果您使用没有文件系统自定义的普通镜像,则 cloud-init 会调整 root 分区。

      在蓝图中添加了文件系统自定义后,该文件系统将被转换为 LVM 分区。

      当您定义 MINIMUM-PARTITION-SIZE 时,没有默认大小格式。支持以下值和单位: kB 到 TB,KiB 到 TiB。例如,您可以以字节为单位定义挂载点大小:

      [[customizations.filesystem]]
      mountpoint = "/var"
      size = 1073741824

      您还可以使用单元定义挂载点大小。

      注意

      您只能对 RHEL 8.6 和 RHEL 9.0 发行版提供的软件包版本的单元定义挂载点大小。

      例如:

      [[customizations.filesystem]]
      mountpoint = "/opt"
      size = "20 GiB"