Menu Close
Settings Close

Language and Page Formatting Options

第 5 章 使用 Image Builder 命令行编写 RHEL for Edge 镜像

您可以使用 Image Builder 创建自定义 RHEL for Edge 镜像 (OSTree commit)。

要访问 Image Builder 并创建自定义 RHEL for Edge 镜像,您可以使用 RHEL web 控制台界面或命令行界面。本章提供有关使用 CLI 为 Edge 镜像创建 RHEL 的信息。

对于基于网络的部署,使用 CLI 编写 RHEL for Edge 镜像的工作流涉及以下高级别步骤:

  1. 为 RHEL for Edge 镜像创建蓝图
  2. 创建 RHEL for Edge Commit 镜像
  3. 下载 RHEL for Edge Commit 镜像

对于不是基于网络的部署,使用 CLI 编写 RHEL for Edge 镜像的工作流涉及以下高级别步骤:

  1. 为 RHEL for Edge 镜像创建蓝图
  2. 为 RHEL for Edge Installer 镜像创建一个蓝图
  3. 创建 RHEL for Edge 容器镜像
  4. 为 Edge 安装程序创建 RHEL
  5. 下载 RHEL for Edge 镜像

要执行这些步骤,请使用 composer-cli 软件包。

注意

要以非 root 身份运行 composer-cli 命令,您必须是 weldr 组的一部分,或者您必须具有系统的管理员访问权限。

5.1. 基于网络的部署工作流

这提供了如何构建 OSTree 提交的步骤。这些 OSTree 提交包含完整的操作系统,但不能直接启动。要引导它们,您需要使用 Kickstart 文件进行部署。

5.1.1. 使用 Image Builder 命令行界面创建 RHEL for Edge Commit 镜像蓝图

使用 CLI 为 RHEL for Edge Commit 镜像创建一个蓝图。

前提条件

  • 您没有现有的蓝图。要验证,列出现有的蓝图:

    $ sudo composer-cli blueprints list

步骤

  1. 以 TOML 格式创建一个纯文本文件,其内容如下:

    name = "blueprint-name"
    description = "blueprint-text-description"
    version = "0.0.1"
    modules = [ ]
    groups = [ ]

    其中,

    • blueprint-name 是名称,print-text-description 是您的蓝图的描述。
    • 0.0.1 是 Semantic Versioning 方案的版本号。
    • 模块 描述了要安装到镜像中的软件包名称和匹配版本的 glob,例如:软件包名称 = "tmux",匹配的版本 glob 是 version = "2.9a"。

      请注意,目前软件包和模块之间没有区别。

    • 是要安装到镜像中的软件包组,如组软件包 anaconda-tools。

      此时,如果您不知道模块和组,请将它们留空。

  2. 包含所需的软件包,并在蓝图中自定义其他详情以满足您的要求。

    对于要包含在蓝图中的每个软件包,请在文件中添加以下行:

    [[packages]]
    name = "package-name"
    version = "package-version"

    其中,

    • package-name 是软件包的名称,如 httpd、gdb-doc 或 coreutils。
    • package-version 是您要使用的软件包的版本号。

      package-version 支持以下 dnf 版本规格:

    • 对于特定版本,请使用准确版本号,如 9.0。
    • 对于最新可用版本,请使用星号 *。
    • 对于最新的次版本,请使用格式(如 9.*)。
  3. 将蓝图推送到镜像构建器服务器:

    # composer-cli blueprints push blueprint-name.toml
  4. 列出现有的蓝图,以检查创建的蓝图是否已成功推送并存在。

    # composer-cli blueprints show BLUEPRINT-NAME
  5. 检查蓝图中列出的组件和版本是否有效:

    # composer-cli blueprints depsolve blueprint-name

5.1.2. 使用 Image Builder 命令行界面创建 RHEL for Edge Commit 镜像

要使用 Image Builder 命令行界面创建 RHEL for Edge Commit 镜像,请确定您满足以下先决条件并遵循这个流程。

先决条件

  • 您已为 RHEL for Edge Commit 镜像创建了一个蓝图。

步骤

  1. 创建 RHEL for Edge Commit 镜像。

    # composer-cli compose start blueprint-name image-type

    其中,

    • blueprint-name 是 RHEL for Edge 蓝图名称。
    • image-typeedge-commit(对于 network-based deployment)。

      这时将显示一个确认已添加到队列中的 composer 进程。它还显示创建的镜像的通用唯一标识符 (UUID) 号。使用 UUID 号来跟踪构建。另外,记录 UUID 号以易于执行进一步的任务。

  2. 检查镜像 compose 状态。

    # composer-cli compose status

    输出以以下格式显示状态:

    <UUID> RUNNING date blueprint-name blueprint-version image-type
    注意

    镜像创建过程需要 20 分钟才能完成。

    要中断镜像创建过程,请运行:

    # composer-cli compose cancel <UUID>

    要删除现有镜像,请运行:

    # composer-cli compose delete <UUID>

    镜像就绪后,您可以下载该镜像并使用网络部署上的镜像。

5.1.3. 使用 Image Builder 命令行界面的父提交创建 RHEL for Edge 镜像更新

如果您对现有蓝图进行了更改,例如,您添加了一个新的软件包,并希望使用这个新软件包更新现有 RHEL for Edge 镜像,您可以使用父提交 ID 生成更新的 RHEL for Edge Commit(.tar)镜像。

要使用 Image Builder 命令行界面的父提交创建 RHEL for Edge 镜像,请确定您满足以下先决条件,然后按照以下步骤操作。

先决条件

步骤

  1. 创建 RHEL for Edge 镜像。

    # composer-cli compose start-ostree --ref rhel/9/x86_64/edge --parent parent-OSTree-commit-id blueprint-name image-type

    其中,

    • --ref 与构建 ostree 存储库的值相同
    • --parent 是 OSTree 父提交
    • blueprint-name 是 RHEL for Edge 蓝图名称。
    • image-typeedge-commit(对于 network-based deployment

      注意

      --parent 参数只能用于 RHEL for Edge Commit(.tar)镜像类型。将 --url--parent 参数一起使用会产生错误。

      这时将显示一个确认已添加到队列中的 composer 进程。它还显示创建的镜像的通用唯一标识符 (UUID) 号。使用 UUID 号来跟踪构建。另外,记录 UUID 号以易于执行进一步的任务。

  2. 检查镜像 compose 状态。

    # composer-cli compose status

    输出以以下格式显示状态:

    <UUID> RUNNING date blueprint-name blueprint-version image-type
    注意

    完成镜像创建过程需要几分钟时间。

    (可选)要中断镜像创建过程,请运行:

    # composer-cli compose cancel <UUID>

    (可选)要删除现有镜像,请运行:

    # composer-cli compose delete <UUID>

镜像创建完成后,要升级现有的 ostree 部署,您需要:

5.1.4. 使用 Image Builder 命令行界面下载 RHEL for Edge 镜像

要使用 Image Builder 命令行界面下载 RHEL for Edge 镜像,请确保您满足以下先决条件,然后按照以下步骤操作。

先决条件

  • 您已创建了 RHEL for Edge 镜像。

步骤

  1. 查看 RHEL for Edge 镜像状态。

    # composer-cli compose status

    输出必须显示以下内容:

    $ <UUID> FINISHED date blueprint-name blueprint-version image-type
  2. 下载镜像。

    # composer-cli compose image <UUID>

    镜像构建器将镜像作为 tar 文件下载到当前目录。

    UUID 号和镜像大小会同时显示。

    $ <UUID>-commit.tar: size MB

镜像包含提交和 json 文件,其中包含有关存储库内容的信息元数据。