4.5. 构建并使用 rpm-ostree 镜像进行离线部署


您可以使用 Image Builder 使用嵌入式 MicroShift 容器镜像创建 rpm-ostree 系统镜像。要嵌入容器镜像,您必须对镜像构建器蓝图添加镜像引用。您可以根据需要创建您的用例的提交和 ISO。

将此处列出的先决条件添加到遵循的步骤中包含的先决条件。

4.5.1. 离线部署的额外先决条件

  • 您已创建了和更新 RHEL for Edge 镜像蓝图,以便离线使用。以下流程使用通过容器镜像创建的蓝图示例。您必须使用您在 "Embedding MicroShift 容器中创建的更新蓝图进行离线部署"。
  • 您已更新了 /etc/osbuild-worker/osbuild-worker.toml 配置文件以离线使用。
重要

将以下流程中的 minimal-microshift.toml 替换为您更新用于离线使用的 TOML 名称,<my_blueprint_name>。

4.5.2. 将 MicroShift 服务添加到蓝图中

将 MicroShift RPM 软件包添加到镜像构建器蓝图中,可以使用嵌入 MicroShift 的 RHEL for Edge 镜像构建。

流程

  1. 使用以下示例创建蓝图:

    镜像构建器蓝图示例

    cat > minimal-microshift.toml <<EOF
    name = "minimal-microshift"
    
    description = ""
    version = "0.0.1"
    modules = []
    groups = []
    
    [[packages]]
    name = "microshift"
    version = "*"
    
    [customizations.services]
    enabled = ["microshift"]
    EOF

    注意

    命令中的通配符 * 使用最新的 MicroShift RPM。如果您需要特定版本,请替换您想要版本的通配符。例如,插入 4.14.1 以下载 MicroShift 4.14.1 RPM。

  2. 运行以下命令,将蓝图添加到镜像构建器中:

    $ sudo composer-cli blueprints push minimal-microshift.toml

验证

  1. 运行以下命令,验证 Image Builder 配置只列出 MicroShift 软件包:

    $ sudo composer-cli blueprints depsolve minimal-microshift | grep microshift

    输出示例

    blueprint: minimal-microshift v0.0.1
        microshift-greenboot-4.13.1-202305250827.p0.g4105d3b.assembly.4.13.1.el9.noarch
        microshift-networking-4.13.1-202305250827.p0.g4105d3b.assembly.4.13.1.el9.x86_64
        microshift-release-info-4.13.1-202305250827.p0.g4105d3b.assembly.4.13.1.el9.noarch
        microshift-4.13.1-202305250827.p0.g4105d3b.assembly.4.13.1.el9.x86_64
        microshift-selinux-4.13.1-202305250827.p0.g4105d3b.assembly.4.13.1.el9.noarch

  2. 可选:运行以下命令来验证 Image Builder 配置列出了要安装的所有组件:

    $ sudo composer-cli blueprints depsolve minimal-microshift

4.5.3. 创建 RHEL for Edge 镜像

使用以下步骤创建 ISO。RHEL for Edge Installer 镜像从正在运行的容器中拉取提交,并创建一个带有配置为使用嵌入式 rpm-ostree 提交的 Kickstart 文件的可安装的引导 ISO。

先决条件

  • 您的构建主机满足 Image Builder 系统要求。
  • 已安装并设置 Image Builder 和 composer-cli 工具。
  • 有对构建主机的 root 用户访问权限。
  • 已安装 podman 工具。

流程

  1. 运行以下命令启动 ostree 容器镜像构建:

    $ BUILDID=$(sudo composer-cli compose start-ostree --ref "rhel/{op-system-version-major}/$(uname -m)/edge" <microshift_blueprint> edge-container | awk '{print $2}') 1
    1
    <microshift_blueprint > 替换为蓝图的名称。

    此命令还会返回要监控的构建的标识(ID)。

  2. 您可以运行以下命令来定期检查构建的状态:

    $ sudo composer-cli compose status

    正在运行的构建的输出示例

    ID                                     Status     Time                     Blueprint                 Version   Type               Size
    cc3377ec-4643-4483-b0e7-6b0ad0ae6332   RUNNING    Wed Jun 7 12:26:23 2023  microshift_blueprint      0.0.1     edge-container

    已完成构建的输出示例

    ID                                     Status     Time                      Blueprint              Version   Type               Size
    cc3377ec-4643-4483-b0e7-6b0ad0ae6332   FINISHED   Wed Jun 7 12:32:37 2023   microshift_blueprint   0.0.1     edge-container

    注意

    如果您熟悉如何启动和停止它,您可以使用 watch 命令监控构建。

  3. 运行以下命令,使用 ID 下载容器镜像,并获取可供使用的镜像:

    $ sudo composer-cli compose image ${BUILDID}
  4. 运行以下命令,将下载的容器镜像的所有权改为当前用户:

    $ sudo chown $(whoami). ${BUILDID}-container.tar
  5. 运行以下命令,在镜像中为当前用户添加读取权限:

    $ sudo chmod a+r ${BUILDID}-container.tar
  6. 通过完成以下步骤,在端口 8085 上引导服务器,供 ISO 构建使用 ostree 容器镜像:

    1. 运行以下命令来获取 IMAGEID 变量结果:

      $ IMAGEID=$(cat < "./${BUILDID}-container.tar" | sudo podman load | grep -o -P '(?<=sha256[@:])[a-z0-9]*')
    2. 运行以下命令,使用 IMAGEID 变量结果来执行 podman 命令步骤:

      $ sudo podman run -d --name=minimal-microshift-server -p 8085:8080 ${IMAGEID}

      此命令还会返回在 IMAGEID 变量中保存的容器 ID,以进行监控。

  7. 运行以下命令来生成安装程序蓝图文件:

    cat > microshift-installer.toml <<EOF
    name = "microshift-installer"
    
    description = ""
    version = "0.0.0"
    modules = []
    groups = []
    packages = []
    EOF
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.