创建自定义 RHEL 系统镜像
在 Red Hat Enterprise Linux 8 上使用 RHEL 镜像构建器创建自定义系统镜像
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 单击顶部导航栏中的 Create。
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 RHEL 镜像构建器描述 复制链接链接已复制到粘贴板!
要部署一个系统,请创建一个系统镜像。要创建 RHEL 系统镜像,请使用 RHEL 镜像构建器工具。您可以使用 RHEL 镜像构建器创建 RHEL 的自定义系统镜像,包括为在云平台上的部署准备的系统镜像。RHEL 镜像构建器自动为每种输出类型处理配置详情,因此比手动创建镜像方法更容易和更快地使用。您可以使用 composer-cli
工具中的命令行或 RHEL web 控制台中的图形用户界面来访问 RHEL 镜像构建器功能。
从 RHEL 8.3 开始,osbuild-composer
后端替换了 lorax-composer
。新服务为镜像构建提供 REST API。
1.1. RHEL 镜像构建器术语 复制链接链接已复制到粘贴板!
RHEL 镜像构建器使用以下概念:
- Blueprint
Blueprint 是自定义系统镜像的描述。它列出了将成为系统一部分的软件包和自定义。您可以使用自定义编辑蓝图,并将其保存为特定版本。当从蓝图创建系统镜像时,镜像与 RHEL 镜像构建器界面中的蓝图相关联。
以 TOML 格式创建蓝图。
- Compose
- Compose 是基于特定蓝图的特定版本的系统镜像的单独构建。作为一个术语,Compose 代表系统镜像以及来自其创建、输入、元数据和进程本身的日志。
- Customizations
- Customizations 是不是软件包的镜像的规范。这包括用户、组和 SSH 密钥。
1.2. RHEL 镜像构建器输出格式 复制链接链接已复制到粘贴板!
RHEL 镜像构建器可以以下表中显示的多种输出格式创建镜像。
描述 | CLI 名称 | 文件扩展名 |
---|---|---|
QEMU 镜像 |
|
|
磁盘归档 |
|
|
Amazon Web Services |
|
|
Microsoft Azure |
|
|
Google Cloud Platform |
|
|
VMware vSphere |
|
|
VMware vSphere |
|
|
Openstack |
|
|
用于边缘提交的 RHEL |
|
|
用于边缘容器的 RHEL |
|
|
用于边缘安装程序的 RHEL |
|
|
RHEL for Edge Raw 镜像 |
|
|
RHEL for Edge Simplified Installer |
|
|
RHEL for Edge AMI |
|
|
RHEL for Edge VMDK |
|
|
RHEL 安装程序 |
|
|
Oracle 云基础架构 |
|
|
要检查支持的类型,请运行以下命令:
composer-cli compose types
# composer-cli compose types
1.3. 支持的用于镜像构建的构架 复制链接链接已复制到粘贴板!
RHEL 镜像构建器支持为以下架构构建镜像:
-
AMD 和 Intel 64 位(
x86_64
) -
ARM64 (
aarch64
) -
IBM Z (
s390x
) - IBM POWER 系统
但是,RHEL 镜像构建器不支持多架构构建。它仅构建运行在相同系统架构上的镜像。例如,如果 RHEL 镜像构建器运行在 x86_64
系统上,它只能为 x86_64
架构构建镜像。
第 2 章 安装 RHEL 镜像构建器 复制链接链接已复制到粘贴板!
在使用 RHEL 镜像构建器前,您必须安装它。
2.1. RHEL 镜像构建器系统要求 复制链接链接已复制到粘贴板!
运行 RHEL 镜像构建器的主机必须满足以下要求:
参数 | 最低要求值 |
---|---|
系统类型 | 一个专用的主机或虚拟机。请注意,RHEL 镜像构建器在容器中不支持,包括 Red Hat Universal Base Images (UBI)。 |
处理器 | 2 个内核 |
内存 | 4 GiB |
磁盘空间 | '/var/cache/' 文件系统中有 20 GiB 可用空间 |
访问权限 | root |
网络 | 到 Red Hat Content Delivery Network (CDN)的互联网连接。 |
如果您没有互联网连接,请在隔离网络中使用 RHEL 镜像构建器。为此,您必须覆盖默认存储库以指向本地存储库,来不连接到 Red Hat Content Delivery Network (CDN)。确保您的内容在内部镜像了或使用 Red Hat Satellite。
2.2. 安装 RHEL 镜像构建器 复制链接链接已复制到粘贴板!
安装 RHEL 镜像构建器以访问所有 osbuild-composer
软件包功能。
先决条件
- 您已登陆到要在其上安装 RHEL 镜像构建器的 RHEL 主机。
- 主机已订阅到 Red Hat Subscription Manager (RHSM)或 Red Hat Satellite。
-
您已启用了
BaseOS
和AppStream
存储库,以便能安装 RHEL 镜像构建器软件包。
流程
安装 RHEL 镜像构建器和其他必要的软件包:
yum install osbuild-composer composer-cli cockpit-composer
# yum install osbuild-composer composer-cli cockpit-composer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
osbuild-composer
- 一个构建自定义 RHEL 操作系统镜像的服务。 -
composer-cli
- 这个软件包提供对 CLI 界面的访问。 -
cockpit-composer
- 这个软件包提供对 Web UI 界面的访问。Web 控制台作为cockpit-composer
软件包的依赖项安装。
-
启用并启动 RHEL 镜像构建器套接字:
systemctl enable --now osbuild-composer.socket
# systemctl enable --now osbuild-composer.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要在 web 控制台中使用 RHEL 镜像构建器,请启用并启动它。
systemctl enable --now cockpit.socket
# systemctl enable --now cockpit.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow osbuild-composer
和cockpit
服务在第一次访问时自动启动。加载 shell 配置脚本,以便
composer-cli
命令的自动完成功能立即开始工作,而无需退出,然后再次登录:source /etc/bash_completion.d/composer-cli
$ source /etc/bash_completion.d/composer-cli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
osbuild-composer
软件包是新的后端引擎,它将是从 Red Hat Enterprise Linux 8.3 及更高版本开始的所有新功能的首选默认和重点。之前的后端 lorax-composer
软件包被视为已弃用,将只接收 Red Hat Enterprise Linux 8 生命周期剩余部分所选定的修复,并将在以后的主发行版本中被忽略。建议卸载 lorax-composer
,使用 osbuild-composer。
验证
通过运行
composer-cli
来验证安装是否正常工作:composer-cli status show
# composer-cli status show
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
故障排除
您可以使用系统日志来跟踪 RHEL 镜像构建器活动。此外,您还可以在文件中找到日志消息。
要查找回溯的日志输出,请运行以下命令:
journalctl | grep osbuild
$ journalctl | grep osbuild
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要显示本地 worker,如
osbuild-worker@.service
,它是一个可启动多个服务实例的模板服务:journalctl -u osbuild-worker*
$ journalctl -u osbuild-worker*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示运行的服务:
journalctl -u osbuild-composer.service
$ journalctl -u osbuild-composer.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 回到 lorax-composer RHEL 镜像构建器后端 复制链接链接已复制到粘贴板!
osbuild-composer
后端虽然具有更大的可扩展性,但目前还无法与之前的 lorax-composer
后端功能相媲美。
要回到以前的后端,请按照以下步骤操作:
先决条件
-
osbuild-composer
软件包已安装
流程
删除 osbuild-composer 后端。
yum remove osbuild-composer yum remove weldr-client
# yum remove osbuild-composer # yum remove weldr-client
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
/etc/yum.conf
文件中 ,为osbuild-composer
软件包添加一个排除项。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
lorax-composer
软件包。yum install lorax-composer composer-cli
# yum install lorax-composer composer-cli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用并启动
lorax-composer
服务,以便在每次重启后启动。systemctl enable --now lorax-composer.socket systemctl start lorax-composer
# systemctl enable --now lorax-composer.socket # systemctl start lorax-composer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 配置 RHEL 镜像构建器存储库 复制链接链接已复制到粘贴板!
要使用 RHEL 镜像构建器,您必须确保配置了存储库。您可以在 RHEL 镜像构建器中使用以下类型的存储库:
- 官方存储库覆盖
- 如果您要从 Red Hat Content Delivery Network (CDN)官方存储库(如网络中的自定义镜像)以外的其他位置下载基础系统 RPM。使用官方存储库覆盖会禁用默认存储库,您的自定义镜像必须包含所有必需的软件包。
- 自定义第三方存储库
- 使用这些存储库来包括官方 RHEL 软件仓库中没有的软件包。
3.1. 在 RHEL 镜像构建器中添加自定义第三方存储库 复制链接链接已复制到粘贴板!
您可以将自定义第三方源添加到存储库中,并使用 composer-cli
管理这些存储库。
先决条件
- 您有自定义第三方存储库的 URL。
步骤
创建一个存储库源文件,如
/root/repo.toml
。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow type
字段接受以下有效值yum-baseurl
、yum-mirrorlist
和yum-metalink
。- 以 TOML 格式保存文件。
将新的第三方源添加到 RHEL 镜像构建器中:
composer-cli sources add <file-name>.toml
$ composer-cli sources add <file-name>.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查新源是否已成功添加:
composer-cli sources list
$ composer-cli sources list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查新源内容:
composer-cli sources info <source_id>
$ composer-cli sources info <source_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. 将带有特定发行版的第三方存储库添加到 RHEL 镜像构建器中 复制链接链接已复制到粘贴板!
您可以使用可选字段 distro
在自定义第三方源文件中指定发行版列表。在解析镜像构建期间解析依赖项时,存储库文件使用分发字符串列表。
任何指定 rhel-8
的请求都使用这个源。例如,如果您列出软件包并指定 rhel-8
,它将包含此源。但是,列出主机发行版的软件包不包括此源。
先决条件
- 您有自定义第三方存储库的 URL。
- 您有要指定的发行版的列表。
步骤
创建一个存储库源文件,如
/root/repo.toml
。例如,要指定发行版:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 以 TOML 格式保存文件。
将新的第三方源添加到 RHEL 镜像构建器中:
composer-cli sources add <file-name>.toml
$ composer-cli sources add <file-name>.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查新源是否已成功添加:
composer-cli sources list
$ composer-cli sources list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查新源内容:
composer-cli sources info <source_id>
$ composer-cli sources info <source_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. 使用 GPG 检查存储库元数据 复制链接链接已复制到粘贴板!
要检测和避免损坏的软件包,您可以使用 DNF 软件包管理器检查 RPM 软件包上的 GNU Privacy Guard (GPG)签名,以及检查存储库元数据是否已使用 GPG 密钥进行了签名。
您可以使用密钥 URL 设置 gpgkeys
字段,输入您要通过 https
进行检查的 gpgkey
。或者,为了提高安全性,您还可以将整个密钥嵌入到 gpgkeys
字段中,来直接导入它,而不是直接从 URL 获取密钥。
先决条件
- 您要用作存储库的目录存在,且包含软件包。
步骤
访问您要创建存储库的文件夹:
cd repo/
$ cd repo/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
createrepo_c
来从 RPM 软件包创建存储库:createrepo_c .
$ createrepo_c .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 访问 repodata 的目录:
cd repodata/
$ cd repodata/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
repomd.xml
文件签名:gpg -u <_gpg-key-email_> --yes --detach-sign --armor /srv/repo/example/repomd.xml
$ gpg -u <_gpg-key-email_> --yes --detach-sign --armor /srv/repo/example/repomd.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在存储库中启用 GPG 签名检查:
-
在存储库源中设置
check_repogpg = true
。 输入您要进行检查的
gpgkey
。如果您的密钥可以通过https
使用,请使用密钥的密钥 URL 设置gpgkeys
字段。您可以根据需要添加任意数量的 URL 密钥。以下是一个示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作为替代方案,直接在
gpgkeys
字段中添加 GPG 密钥,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果测试没有找到签名,GPG 工具会显示一个类似如下的错误:
GPG verification is enabled, but GPG signature is not available.
$ GPG verification is enabled, but GPG signature is not available. This may be an error or the repository does not support GPG verification: Status code: 404 for http://repo-server/rhel/repodata/repomd.xml.asc (IP: 192.168.1.3)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果签名无效,GPG 工具会显示一个类似如下的错误:
repomd.xml GPG signature verification error: Bad GPG signature
repomd.xml GPG signature verification error: Bad GPG signature
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在存储库源中设置
验证
手动测试存储库的签名:
gpg --verify /srv/repo/example/repomd.xml.asc
$ gpg --verify /srv/repo/example/repomd.xml.asc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. RHEL 镜像构建器官方存储库覆盖 复制链接链接已复制到粘贴板!
RHEL 镜像构建器 osbuild-composer
后端不继承位于 /etc/yum.repos.d/
目录中的系统存储库。相反,它拥有自己的一组在 /usr/share/osbuild-composer/repositories
目录中定义的官方存储库。这包括红帽官方存储库,其中包含要安装附加软件或将已安装的程序基础更新到新版本的基础系统 RPM。如果要覆盖官方存储库,您必须在 /etc/osbuild-composer/repositories/
中定义覆盖。此目录用于用户定义的覆盖,这里的文件优先于 /usr/share/osbuild-composer/repositories/
目录中的文件。
配置文件不是 /etc/yum.repos.d/
中常见的 YUM 存储库格式。相反,它们是 JSON 文件。
3.5. 覆盖系统存储库 复制链接链接已复制到粘贴板!
您可以在 /etc/osbuild-composer/repositories
目录中为 RHEL 镜像构建器配置自己的存储库覆盖。
在 RHEL 8.5 发行版本中,仓库覆盖的名称为 rhel-8.json
。从 RHEL 8.5 开始,名称也会尊重次要版本: rhel-84.json
、rhel-85.json
等等。
先决条件
- 您有一个可从主机系统访问的自定义存储库。
步骤
创建
/etc/osbuild-composer/repositories/
目录来存储存储库覆盖:sudo mkdir -p /etc/osbuild-composer/repositories
$ sudo mkdir -p /etc/osbuild-composer/repositories
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用与 RHEL 版本对应的名称,创建一个 JSON 文件。或者,您还可以从
/usr/share/osbuild-composer/
中复制用于分发的文件,并修改其内容。对于 RHEL 8.9,请使用
/etc/osbuild-composer/repositories/rhel-89.json
。将以下结构添加到 JSON 文件中。仅以字符串格式指定以下属性之一:
-
baseurl
- 存储库的基本 URL。 -
metalink
- 包含有效镜像存储库列表的 metalink 文件的 URL。 mirrorlist
- 包含有效镜像存储库列表的 mirrorlist 文件的 URL。其余的字段(如gpgkey
)和metadata_expire
是可选的。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以通过将
rhel-version.json
替换为 RHEL 版本(例如:rhel-8.json)来复制用于分发的 JSON 文件。cp /usr/share/osbuild-composer/repositories/rhel-version.json /etc/osbuild-composer/repositories/
$ cp /usr/share/osbuild-composer/repositories/rhel-version.json /etc/osbuild-composer/repositories/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
可选:验证 JSON 文件:
json_verify < /etc/osbuild-composer/repositories/rhel-version.json
$ json_verify < /etc/osbuild-composer/repositories/rhel-version.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
rhel-8.json
文件中的baseurl
路径,并保存。例如:/etc/osbuild-composer/repositories/rhel-version.json
$ /etc/osbuild-composer/repositories/rhel-version.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
osbuild-composer.service
:sudo systemctl restart osbuild-composer.service
$ sudo systemctl restart osbuild-composer.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查存储库是否指向正确的 URL:
cat /etc/yum.repos.d/redhat.repo
$ cat /etc/yum.repos.d/redhat.repo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以看到仓库指向从
/etc/yum.repos.d/redhat.repo
文件复制的正确 URL。
3.6. 覆盖需要订阅的系统存储库 复制链接链接已复制到粘贴板!
您可以设置 osbuild-composer
服务,以使用 /etc/yum.repos.d/redhat.repo
文件中定义的系统订阅。要使用 osbuild-composer
中的系统订阅,请定义一个具有以下详情的存储库覆盖:
-
与
/etc/yum.repos.d/redhat.repo
中定义的存储库相同的baseurl
。 JSON 对象中定义的
"rhsm": true
值。注意osbuild-composer
不自动使用/etc/yum.repos.d/
中定义的存储库。您需要手动将它们指定为系统存储库覆盖,或使用composer-cli
将其指定为附加源
。"BaseOS"和"AppStream"存储库通常使用系统存储库覆盖,而所有其他存储库则使用composer-cli
源。
先决条件
-
您的系统有一个在
/etc/yum.repos.d/redhat.repo
中定义的订阅 - 您已创建了一个存储库覆盖。请参阅 覆盖系统存储库。
步骤
从
/etc/yum.repos.d/redhat.repo
文件中获取baseurl
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置存储库覆盖以使用相同的
baseurl
,并将rhsm
设为 true:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
osbuild-composer.service
:sudo systemctl restart osbuild-composer.service
$ sudo systemctl restart osbuild-composer.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7. 配置 Satellite CV ,并将其用作内容源 复制链接链接已复制到粘贴板!
您可以使用 Satellite 的内容视图(CV)作为存储库来使用 RHEL 镜像构建器构建镜像。为此,在注册到 Satellite 的主机上手动配置存储库引用,以便能够从 Satellite 存储库检索,而不是 Red Hat Content Delivery Network (CDN)官方存储库。
先决条件
- 您已安装了 RHEL 镜像构建器。请参阅安装 RHEL 镜像构建器。
- 您在注册到 Satellite 6 的主机上使用 RHEL 镜像构建器。请参阅 linkhttps://docs.redhat.com/en/documentation/red_hat_satellite/6.7/html/provisioning_guide/index#using-an-image-builder-image-for-provisioning[Using 一个 RHEL image builder image for Provisioning]。
流程
从您当前配置的存储库中找到存储库 URL:
sudo yum -v repolist "-baseos-rpms" | grep -i repo-baseurl
$ sudo yum -v repolist "-baseos-rpms" | grep -i repo-baseurl Repo-baseurl :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下输出是一个示例:
https://satellite6.example.com/pulp/content/YourOrg/YourEnv/YourCV/content/dist/rhel8/8/x86_64/baseos/os
https://satellite6.example.com/pulp/content/YourOrg/YourEnv/YourCV/content/dist/rhel8/8/x86_64/baseos/os
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将硬编码的存储库修改为 Satellite 服务器。
创建具有
0755
权限的存储库目录:sudo mkdir -pvm 0755 /etc/osbuild-composer/repositories
$ sudo mkdir -pvm 0755 /etc/osbuild-composer/repositories
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/usr/share/osbuild-composer/repositories/*.json
中的内容复制到您创建的目录中:sudo cp /usr/share/osbuild-composer/repositories/*.json /etc/osbuild-composer/repositories/
$ sudo cp /usr/share/osbuild-composer/repositories/*.json /etc/osbuild-composer/repositories/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过
/content/dist/*
行更新 Satellite URL 和文件内容:sudo sed -i -e 's|cdn.redhat.com|satellite6.example.com/pulp/content/YourOrg/YourEnv/YourCV|' /etc/osbuild-composer/repositories/*.json
$ sudo sed -i -e 's|cdn.redhat.com|satellite6.example.com/pulp/content/YourOrg/YourEnv/YourCV|' /etc/osbuild-composer/repositories/*.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证配置是否已被正确替换:
sudo vi /etc/osbuild-composer/repositories/rhel-8.json
$ sudo vi /etc/osbuild-composer/repositories/rhel-8.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
重启服务:
sudo systemctl restart osbuild-worker@1.service osbuild-composer.service
$ sudo systemctl restart osbuild-worker@1.service osbuild-composer.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 覆盖红帽镜像构建器配置中所需的系统存储库,并使用 Satellite 存储库的 URL 作为 baseurl。请参阅 覆盖系统存储库。
3.8. 使用 Satellite CV 作为存储库,来在 RHEL 镜像构建器中构建镜像 复制链接链接已复制到粘贴板!
配置 RHEL 镜像构建器,以使用 Satellite 的内容视图(CV)作为存储库来构建您的自定义镜像。
先决条件
- 您已将 Satellite 与 RHEL web 控制台集成。请参阅 在 Satellite 上启用 RHEL web 控制台
流程
- 在 Satellite Web UI 中,导航到 Content > Products,选择您的 Product 并点击您要使用的存储库。
- 在 Published 字段中搜索安全 URL (HTTPS),并复制它。
- 使用您复制的 URL 作为红帽镜像构建器存储库的 baseurl。请参阅 在 RHEL 镜像构建器中添加自定义第三方存储库。
第 4 章 使用 RHEL 镜像构建器 CLI 创建系统镜像 复制链接链接已复制到粘贴板!
RHEL 镜像构建器是一个创建自定义系统镜像的工具。要控制 RHEL 镜像构建器并创建自定义系统镜像,您可以使用命令行(CLI)或 Web 控制台界面。
4.1. RHEL 镜像构建器命令行界面简介 复制链接链接已复制到粘贴板!
您可以使用 RHEL 镜像构建器命令行界面(CLI)创建蓝图,方法是运行带有合适的选项和子命令的 composer-cli
命令。
命令行的工作流可以总结如下:
- 创建蓝图或将现有蓝图定义导出(保存)到纯文本文件中
- 在文本编辑器中编辑这个文件
- 将蓝图文本文件重新导回到镜像构建器中
- 运行 compose 来从蓝图构建镜像
- 导出镜像文件以下载它
除了创建蓝图的基本子命令外,composer-cli
命令还提供了许多子命令来检查配置的蓝图和组成的状态。
4.2. 以非 root 用户身份使用 RHEL 镜像构建器 复制链接链接已复制到粘贴板!
要以非 root 身份运行 composer-cli
命令,该用户必须在 weldr
组中。
先决条件
- 您已创建了一个用户
流程
要在
weldr
或root
组中添加用户,请运行以下命令:sudo usermod -a -G weldr user newgrp weldr
$ sudo usermod -a -G weldr user $ newgrp weldr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. 使用命令行创建蓝图 复制链接链接已复制到粘贴板!
您可以使用 RHEL 镜像构建器命令行界面(CLI)创建一个新蓝图。蓝图描述了最终的镜像及其自定义,如软件包和内核自定义。
先决条件
-
您以 root 用户身份登录,或者是
weldr
组成员的用户身份登录
流程
创建一个包含以下内容的纯文本文件:
name = "BLUEPRINT-NAME" description = "LONG FORM DESCRIPTION TEXT" version = "0.0.1" modules = [] groups = []
name = "BLUEPRINT-NAME" description = "LONG FORM DESCRIPTION TEXT" version = "0.0.1" modules = [] groups = []
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 用您的蓝图的名称和描述替换 BLUEPRINT-NAME 和 LONG FORM DESCRIPTION TEXT。
根据 Semantic Versioning 方案,将 0.0.1 替换为版本号。
对于您要包含在蓝图中的每个软件包,请在文件中添加以下行:
[[packages]] name = "package-name" version = "package-version"
[[packages]] name = "package-name" version = "package-version"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用软件包名称替换 package-name,如
httpd
、gdb-doc
或coreutils
。可选,将 package-version 替换为要使用的版本。此字段支持
dnf
版本规范:- 对于特定版本,请使用确切的版本号,如 8.7.0。
- 对于最新可用版本,请使用星号 *。
- 对于最新的次版本,请使用以下格式,如 8.*。
自定义蓝图以满足您的需要。例如,禁用 Simultaneous Multi Threading (SMT),在蓝图文件中添加以下行:
[customizations.kernel] append = "nosmt=force"
[customizations.kernel] append = "nosmt=force"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关其他可用的定制信息,请参阅 支持的镜像自定义。
请注意,
[]
和[[]]
是以 TOML 表示的不同的数据结构。-
[customizations.kernel]
标头代表一个由一组键及其相应的值对定义的表,例如:append = "nosmt=force"
。 -
[[packages]]
标头代表表数组。第一个实例定义数组及其第一个表元素,例如name = "package-name"
和version = "package-version"
,每个后续实例都按照您定义它们的顺序创建并定义一个新的表元素。
-
- 将文件保存为 例如 BLUEPRINT-NAME.toml,并关闭文本编辑器。
可选:检查蓝图 TOML 文件中的所有设置是否已被正确解析。保存蓝图,并将保存的输出与输入文件进行比较:
composer-cli blueprints save BLUEPRINT-NAME.toml
# composer-cli blueprints save BLUEPRINT-NAME.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
BLUEPRINT-NAME.toml
保存的文件与输入文件进行比较。
-
将
推送蓝图:
composer-cli blueprints push BLUEPRINT-NAME.toml
# composer-cli blueprints push BLUEPRINT-NAME.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 BLUEPRINT-NAME 替换为您在前面步骤中使用的值。
注意以非 root 身份运行
composer-cli
命令创建镜像,请将您的用户添加到weldr
或root
组中。usermod -a -G weldr user newgrp weldr
# usermod -a -G weldr user $ newgrp weldr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出现有的蓝图以验证蓝图是否已推送并已存在:
composer-cli blueprints list
# composer-cli blueprints list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示您刚刚添加的蓝图配置:
composer-cli blueprints show BLUEPRINT-NAME
# composer-cli blueprints show BLUEPRINT-NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查蓝图中列出的组件和版本是否有效:
composer-cli blueprints depsolve BLUEPRINT-NAME
# composer-cli blueprints depsolve BLUEPRINT-NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 RHEL 镜像构建器无法解决自定义存储库中软件包的依赖项,请清除
osbuild-composer
缓存:sudo rm -rf /var/cache/osbuild-composer/* sudo systemctl restart osbuild-composer
$ sudo rm -rf /var/cache/osbuild-composer/* $ sudo systemctl restart osbuild-composer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. 使用命令行编辑蓝图 复制链接链接已复制到粘贴板!
您可以在命令行中编辑现有蓝图,例如添加新软件包或定义新组,并创建自定义镜像。
先决条件
- 您已创建了一个蓝图
流程
列出现有的蓝图:
composer-cli blueprints list
# composer-cli blueprints list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将蓝图保存到一个本地文本文件中:
composer-cli blueprints save BLUEPRINT-NAME
# composer-cli blueprints save BLUEPRINT-NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用文本编辑器编辑 BLUEPRINT-NAME.toml 文件并进行更改。
在完成编辑前,请验证该文件是否是一个有效的蓝图:
如果存在,从蓝图中删除以下行:
packages = []
packages = []
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 增加版本号,例如,从 0.0.1 增加到 0.1.0。请记住,RHEL 镜像构建器蓝图版本必须使用 Semantic Versioning 方案。请注意,如果您没有更改版本,补丁版本组件会自动增加。
- 保存文件并关闭文本编辑器。
将蓝图推送回 RHEL 镜像构建器:
composer-cli blueprints push BLUEPRINT-NAME.toml
# composer-cli blueprints push BLUEPRINT-NAME.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要将蓝图导回到 RHEL 镜像构建器,请提供包括
.toml
扩展名的文件名,而在其他命令中则只使用蓝图名称。
验证
要验证上传到 RHEL 镜像构建器的内容是否与您编辑的内容匹配,请列出蓝图的内容:
composer-cli blueprints show BLUEPRINT-NAME
# composer-cli blueprints show BLUEPRINT-NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查蓝图中列出的组件和版本是否有效:
composer-cli blueprints depsolve BLUEPRINT-NAME
# composer-cli blueprints depsolve BLUEPRINT-NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5. 在命令行上使用 RHEL 镜像构建器创建系统镜像 复制链接链接已复制到粘贴板!
您可以使用 RHEL 镜像构建器命令行界面构建一个自定义 RHEL 镜像。为此,您必须指定蓝图和镜像类型。可选,您还可以指定一个发行版。如果没有指定发行版,它将使用与主机系统一样的发行版和版本。架构也与主机上的架构一样。
先决条件
- 您已为镜像准备了蓝图。请参阅 使用命令行 创建 RHEL 镜像构建程序蓝图。
流程
可选:列出您可以创建的镜像格式:
composer-cli compose types
# composer-cli compose types
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 compose:
composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE
# composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 BLUEPRINT-NAME 替换为蓝图的名称,将 IMAGE-TYPE 替换为镜像的类型。有关可用值,请查看
composer-cli compose types
命令的输出。compose 进程在后台启动,并显示 composer Universally Unique Identifier (UUID)。
镜像创建最多可能需要十分钟才能完成。
检查 Compose 的状态:
composer-cli compose status
# composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 完成的 compose 显示 FINISHED 状态值。要识别列表中您的 compose,请使用其 UUID。
完成 compose 过程后,下载生成的镜像文件:
composer-cli compose image UUID
# composer-cli compose image UUID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用前面步骤中显示的 UUID 值替换 UUID。
验证
创建镜像后,您可以使用以下命令检查镜像的创建进度:
下载镜像的元数据以获取 compose 的元数据的
.tar
文件:sudo composer-cli compose metadata UUID
$ sudo composer-cli compose metadata UUID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下载镜像的日志:
sudo composer-cli compose logs UUID
$ sudo composer-cli compose logs UUID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令会创建一个
.tar
文件,其中包含创建镜像的日志。如果日志为空,您可以检查日志。检查日志:
journalctl | grep osbuild
$ journalctl | grep osbuild
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查镜像的清单:
sudo cat /var/lib/osbuild-composer/jobs/job_UUID.json
$ sudo cat /var/lib/osbuild-composer/jobs/job_UUID.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以在日志中找到 job_UUID.json。
4.6. 基本 RHEL 镜像构建器命令行命令 复制链接链接已复制到粘贴板!
RHEL 镜像构建器命令行界面提供以下子命令。
蓝图操作
- 列出所有可用的蓝图
composer-cli blueprints list
# composer-cli blueprints list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 显示 TOML 格式的蓝图内容
composer-cli blueprints show <BLUEPRINT-NAME>
# composer-cli blueprints show <BLUEPRINT-NAME>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将蓝图内容以 TOML 格式保存(导出)到文件
BLUEPRINT-NAME.toml
中 composer-cli blueprints save <BLUEPRINT-NAME>
# composer-cli blueprints save <BLUEPRINT-NAME>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 删除蓝图
composer-cli blueprints delete <BLUEPRINT-NAME>
# composer-cli blueprints delete <BLUEPRINT-NAME>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 TOML 格式的蓝图文件推送(导入)到 RHEL 镜像构建器
composer-cli blueprints push <BLUEPRINT-NAME>
# composer-cli blueprints push <BLUEPRINT-NAME>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
从蓝图制作镜像
- 列出可用的镜像类型
composer-cli compose types
# composer-cli compose types
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动一个目录
composer-cli compose start <BLUEPRINT> <COMPOSE-TYPE>
# composer-cli compose start <BLUEPRINT> <COMPOSE-TYPE>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 列出所有 compose
composer-cli compose list
# composer-cli compose list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 列出所有 compose 及其状态
composer-cli compose status
# composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 取消正在运行的 compose
composer-cli compose cancel <COMPOSE-UUID>
# composer-cli compose cancel <COMPOSE-UUID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 删除完成的 compose
composer-cli compose delete <COMPOSE-UUID>
# composer-cli compose delete <COMPOSE-UUID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 显示有关 compose 的详细信息
composer-cli compose info <COMPOSE-UUID>
# composer-cli compose info <COMPOSE-UUID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 下载 compose 的镜像文件
composer-cli compose image <COMPOSE-UUID>
# composer-cli compose image <COMPOSE-UUID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 更多子命令和选项
composer-cli help
# composer-cli help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. RHEL 镜像构建器蓝图格式 复制链接链接已复制到粘贴板!
RHEL 镜像构建器蓝图以 TOML 格式的纯文本向用户显示。
典型的蓝图文件元素包括:
- 蓝图元数据
name = "<BLUEPRINT-NAME>" description = "<LONG FORM DESCRIPTION TEXT>" version = "<VERSION>"
name = "<BLUEPRINT-NAME>" description = "<LONG FORM DESCRIPTION TEXT>" version = "<VERSION>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BLUEPRINT-NAME 和 LONG FORM DESCRIPTION TEXT 字段是您的蓝图的名称和描述。
VERSION 是根据 Semantic Versioning 方案的版本号,只对整个蓝图文件显示一次。
- 镜像中包含的组
[[groups]] name = "group-name"
[[groups]] name = "group-name"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow group 条目描述要安装到镜像中的一组软件包。组使用以下软件包类别:
- Mandatory(必需)
- Default(默认)
选填
group-name 是组的名称,例如 anaconda-tools, widget, wheel 或 users。蓝图安装必需的和默认的软件包。没有选择可选软件包的机制。
- 镜像中包含的软件包
[[packages]] name = "<package-name>" version = "<package-version>"
[[packages]] name = "<package-name>" version = "<package-version>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow package-name 是软件包的名称,如 httpd、gdb-doc 或 coreutils。
package-version 是要使用的版本。此字段支持
dnf
版本规范:- 对于特定版本,请使用确切的版本号,如 8.7.0。
- 对于最新的可用版本,请使用星号 *。
对于最新的次版本,请使用以下格式,如 8.*。
为每个要包括的软件包重复这个块。
RHEL 镜像构建器工具中的软件包和模块之间没有区别。两者都被视为 RPM 软件包依赖项。
4.8. 支持的镜像自定义 复制链接链接已复制到粘贴板!
您可以通过向蓝图中添加自定义来自定义镜像,例如:
- 添加一个额外的 RPM 软件包
- 启用一个服务
- 自定义一个内核命令行参数.
在其他参数之间。您可以在蓝图中使用多个镜像自定义。通过使用自定义,您可以将软件包和组添加到在默认软件包中不可用的镜像中。要使用这些选项,请在蓝图中配置自定义,并将其导入(推送)到 RHEL 镜像构建器。
4.8.1. 选择一个发行版 复制链接链接已复制到粘贴板!
您可以使用 distro
字段指定在制作镜像或在蓝图中解决依赖项时要使用的发行版。如果 distro
字段留空,蓝图会自动使用主机的操作系统发行版。如果没有指定发行版,蓝图将使用主机分发。当您升级主机操作系统时,没有指定发行版的蓝图使用升级的操作系统版本构建镜像。
您可以在较新的系统上为旧的主版本构建镜像。例如,您可以使用 RHEL 10 主机创建 RHEL 9 和 RHEL 8 镜像。但是,您无法在较旧的系统上为较新的主版本构建镜像。
您无法构建一个与 RHEL 镜像构建器主机不同的操作系统镜像。例如,您无法使用 RHEL 系统构建 Fedora 或 CentOS 镜像。
自定义带有 RHEL 发行版本的蓝图,以始终构建指定的 RHEL 镜像:
name = "blueprint_name" description = "blueprint_version" version = "0.1" distro = "different_minor_version"
name = "blueprint_name" description = "blueprint_version" version = "0.1" distro = "different_minor_version"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
name = "tmux" description = "tmux image with openssh" version = "1.2.16" distro = "rhel-9.5"
name = "tmux" description = "tmux image with openssh" version = "1.2.16" distro = "rhel-9.5"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
替换 "different_minor_version" ,来构建不同的次版本,例如,如果要构建 RHEL 8.10 镜像,请使用 distro
= "rhel-810"。在 RHEL 8.10 镜像上,您可以构建次版本,如 RHEL 8.9 及更早版本。
4.8.2. 选择一个软件包组 复制链接链接已复制到粘贴板!
自定义带有软件包组的蓝图。groups
列表描述您要安装到镜像中的软件包组。软件包组在存储库元数据中定义。每个组都有一个描述性名称,主要用于在用户界面中显示,以及一个通常在 Kickstart 文件中使用的 ID。在这种情况下,您必须使用 ID 来列出组。组有三种不同的对其软件包进行分类的方法:强制、默认和可选。蓝图中只安装了强制和默认软件包。无法选择可选软件包。
name
属性是必需的字符串,必须与存储库中的软件包组 id 完全匹配。
目前,osbuild-composer
中的软件包和模块之间没有区别。两者都被视为 RPM 软件包依赖项。
自定义带有软件包的蓝图:
[[groups]] name = "group_name"
[[groups]] name = "group_name"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用组的名称替换
group_name
。例如:anaconda-tools
:[[groups]] name = "anaconda-tools"
[[groups]] name = "anaconda-tools"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.3. 嵌入容器 复制链接链接已复制到粘贴板!
您可以自定义蓝图来嵌入最新的 RHEL 容器。容器列表包含带有源的对象,以及可选的 tls-verify
属性。
容器列表条目描述要嵌入到镜像中的容器镜像。
-
source
- 必需的字段。它是对 registry 中的容器镜像的引用。这个示例使用registry.access.redhat.com
registry。您可以指定标签版本。默认标签版本为 latest。 -
name
- 本地注册中心中的容器的名称。 -
tls-verify
- 布尔值字段。tls-verify 布尔值字段控制传输层安全。默认值为 true。
嵌入的容器不能自动启动。要启动它,请创建 systemd
单元文件或带有文件自定义的 四元组
。
要从
registry.access.redhat.com/ubi9/ubi:latest
和来自主机的容器嵌入容器,请在蓝图中添加以下自定义:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以使用 containers-auth.json
文件访问受保护的容器资源。请参阅 容器注册中心凭证。
4.8.4. 设置镜像主机名 复制链接链接已复制到粘贴板!
customizations.hostname
是一个可选字符串,您可以用来配置最终镜像主机名。此自定义是可选的,如果您未设置它,则蓝图使用默认主机名。
自定义蓝图以配置主机名:
[customizations] hostname = "baseimage"
[customizations] hostname = "baseimage"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.5. 指定其他用户 复制链接链接已复制到粘贴板!
将用户添加到镜像中,并可选择设置其 SSH 密钥。本节的所有字段都是可选的,但 name
除外。
流程
自定义蓝图来将用户添加到镜像中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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())'
$ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用适当的值替换其他占位符。
输入
name
值,并省略您不需要的任何行。为每个要包含的用户重复这个块。
4.8.6. 指定附加组 复制链接链接已复制到粘贴板!
为生成的系统镜像指定一个组。name
和 gid
属性都是必需的。
自定义带有组的蓝图:
[[customizations.group]] name = "GROUP-NAME" gid = NUMBER
[[customizations.group]] name = "GROUP-NAME" gid = NUMBER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为每个组重复此块。例如:
[[customizations.group]] name = "widget" gid = 1130
[[customizations.group]] name = "widget" gid = 1130
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.7. 为现有用户设置 SSH 密钥 复制链接链接已复制到粘贴板!
您可以使用 customizations.sshkey
为最终镜像中的现有用户设置 SSH 密钥。user
和 key
属性是必需的。
通过为现有用户设置 SSH 密钥来自定义蓝图:
[[customizations.sshkey]] user = "root" key = "PUBLIC-SSH-KEY"
[[customizations.sshkey]] user = "root" key = "PUBLIC-SSH-KEY"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
[[customizations.sshkey]] user = "root" key = "SSH key for root"
[[customizations.sshkey]] user = "root" key = "SSH key for root"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您只能为现有用户配置
customizations.sshkey
自定义。要创建用户并设置 SSH 密钥,请参阅 指定其他用户 自定义。
4.8.8. 附加一个内核参数 复制链接链接已复制到粘贴板!
您可以向引导装载程序内核命令行中附加参数。默认情况下,RHEL 镜像构建器将默认内核构建到镜像中。但是,您可以通过在蓝图中配置它来自定义内核。
在默认值中附加内核引导选项:
[customizations.kernel] append = "KERNEL-OPTION"
[customizations.kernel] append = "KERNEL-OPTION"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
[customizations.kernel] name = "kernel-debug" append = "nosmt=force"
[customizations.kernel] name = "kernel-debug" append = "nosmt=force"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.9. 使用实时内核构建 RHEL 镜像 复制链接链接已复制到粘贴板!
要使用实时内核(kernel-rt
)构建 RHEL 镜像,您需要覆盖存储库,以便您然后可以构建一个镜像,其中 kernel-rt
被正确选择为默认内核。使用 /usr/share/osbuild-composer/repositories/
目录中的 .json
。然后,您可以部署您构建到系统的镜像,并使用实时内核功能。
实时内核在经过认证可运行 Red Hat Enterprise Linux 的 AMD64 和 Intel 64 服务器平台上运行。
先决条件
- 您的系统已注册,并且 RHEL 已附加到 RHEL for Real Time 订阅。请参阅 使用 dnf 安装 RHEL for Real Time。
流程
创建以下目录:
mkdir /etc/osbuild-composer/repositories/
# mkdir /etc/osbuild-composer/repositories/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/usr/share/osbuild-composer/repositories/rhel-8.version.json
文件中的内容复制到新目录中:cp /usr/share/osbuild-composer/repositories/rhel-8.version.json /etc/osbuild-composer/repositories
# cp /usr/share/osbuild-composer/repositories/rhel-8.version.json /etc/osbuild-composer/repositories
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/osbuild-composer/repositories/rhel-8.version.json
,使其包含 RT 内核存储库:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启服务:
systemctl restart osbuild-composer
# systemctl restart osbuild-composer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认
kernel-rt
已包含在.json
文件中:composer-cli sources list composer-cli sources info kernel-rt
# composer-cli sources list # composer-cli sources info kernel-rt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您将看到您之前配置的 URL。
创建一个蓝图。在蓝图中,添加 "[customizations.kernel]" 自定义。以下是蓝图中包含 "[customizations.kernel]" 的一个示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将蓝图推送到服务器:
composer-cli blueprints push rt-kernel-image.toml
# composer-cli blueprints push rt-kernel-image.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从您创建的蓝图中构建镜像。以下示例构建一个(
.qcow2
)镜像:composer-cli compose start rt-kernel-image qcow2
# composer-cli compose start rt-kernel-image qcow2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将您构建的镜像部署到您要使用实时内核功能的系统中。
验证
从镜像引导虚拟机后,验证镜像是否是使用正确选择为默认内核的
kernel-rt
构建的。cat /proc/cmdline BOOT_IMAGE=(hd0,got3)/vmlinuz-5.14.0-362.24.1..el8_version_.x86_64+rt...
$ cat /proc/cmdline BOOT_IMAGE=(hd0,got3)/vmlinuz-5.14.0-362.24.1..el8_version_.x86_64+rt...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.10. 设置时区和 NTP 复制链接链接已复制到粘贴板!
您可以自定义蓝图来配置时区和 网络时间协议 (NTP)。timezone
和 ntpservers
属性是可选字符串。如果您没有自定义时区,系统将使用 Universal Time, Coordinated (UTC)。如果您没有设置 NTP 服务器,系统将使用默认发行版。
自定义带有您想要的
timezone
和ntpservers
的蓝图:[customizations.timezone] timezone = "TIMEZONE" ntpservers = "NTP_SERVER"
[customizations.timezone] timezone = "TIMEZONE" ntpservers = "NTP_SERVER"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
[customizations.timezone] timezone = "US/Eastern" ntpservers = ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"]
[customizations.timezone] timezone = "US/Eastern" ntpservers = ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意有些镜像类型,如 Google Cloud,已经建立了 NTP 服务器。您无法覆盖它,因为镜像需要 NTP 服务器来在所选环境中引导。但是,您可以在蓝图中自定义时区。
4.8.11. 自定义区域设置 复制链接链接已复制到粘贴板!
您可以为生成的系统镜像自定义区域设置。language
和 keyboard
属性是必需的。您可以添加许多其他语言。您添加的第一个语言是主语言,其他语言是次要语言。
流程
设置区域设置:
[customizations.locale] languages = ["LANGUAGE"] keyboard = "KEYBOARD"
[customizations.locale] languages = ["LANGUAGE"] keyboard = "KEYBOARD"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
[customizations.locale] languages = ["en_US.UTF-8"] keyboard = "us"
[customizations.locale] languages = ["en_US.UTF-8"] keyboard = "us"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要列出语言支持的值,请运行以下命令:
localectl list-locales
$ localectl list-locales
Copy to Clipboard Copied! Toggle word wrap Toggle overflow localectl list-keymaps
$ localectl list-keymaps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.12. 复制链接链接已复制到粘贴板!
[customizations.firewall] ports = ["PORTS"]
[customizations.firewall] ports = ["PORTS"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [customizations.firewall] ports = ["22:tcp", "80:tcp", "imap:tcp", "53:tcp", "53:udp", "30000-32767:tcp", "30000-32767:udp"]
[customizations.firewall] ports = ["22:tcp", "80:tcp", "imap:tcp", "53:tcp", "53:udp", "30000-32767:tcp", "30000-32767:udp"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [customizations.firewall.services] enabled = ["SERVICES"] disabled = ["SERVICES"]
[customizations.firewall.services] enabled = ["SERVICES"] disabled = ["SERVICES"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --get-services
$ firewall-cmd --get-services
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [customizations.firewall.services] enabled = ["ftp", "ntp", "dhcp"] disabled = ["telnet"]
[customizations.firewall.services] enabled = ["ftp", "ntp", "dhcp"] disabled = ["telnet"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意
4.8.13. 复制链接链接已复制到粘贴板!
[customizations.services] enabled = ["SERVICES"] disabled = ["SERVICES"]
[customizations.services] enabled = ["SERVICES"] disabled = ["SERVICES"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [customizations.services] enabled = ["sshd", "cockpit.socket", "httpd"] disabled = ["postfix", "telnetd"]
[customizations.services] enabled = ["sshd", "cockpit.socket", "httpd"] disabled = ["postfix", "telnetd"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.14. 复制链接链接已复制到粘贴板!
[customizations.installer] unattended = true sudo-nopasswd = ["user", "%wheel"]
[customizations.installer]
unattended = true
sudo-nopasswd = ["user", "%wheel"]
4.8.15. 复制链接链接已复制到粘贴板!
[customizations] partitioning_mode = "lvm"
[customizations] partitioning_mode = "lvm"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.16. 复制链接链接已复制到粘贴板!
4.8.16.1. 复制链接链接已复制到粘贴板!
4.8.16.2. 复制链接链接已复制到粘贴板!
[[customizations.filesystem]] mountpoint = "MOUNTPOINT" minsize = MINIMUM-PARTITION-SIZE
[[customizations.filesystem]] mountpoint = "MOUNTPOINT" minsize = MINIMUM-PARTITION-SIZE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [[customizations.filesystem]] mountpoint = "/var" minsize = 1073741824
[[customizations.filesystem]] mountpoint = "/var" minsize = 1073741824
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [[customizations.filesystem]] mountpoint = "/opt" minsize = "20 GiB"
[[customizations.filesystem]] mountpoint = "/opt" minsize = "20 GiB"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [[customizations.filesystem]] mountpoint = "/boot" minsize = "1 GiB"
[[customizations.filesystem]] mountpoint = "/boot" minsize = "1 GiB"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [[customizations.filesystem]] mountpoint = "/var" minsize = 2147483648
[[customizations.filesystem]] mountpoint = "/var" minsize = 2147483648
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9. 复制链接链接已复制到粘贴板!
composer-cli blueprints depsolve BLUEPRINT-NAME
# composer-cli blueprints depsolve BLUEPRINT-NAME
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.10. 复制链接链接已复制到粘贴板!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第 5 章 复制链接链接已复制到粘贴板!
5.1. 复制链接链接已复制到粘贴板!
5.2. 复制链接链接已复制到粘贴板!
- 注意
- 注意
- 注意
5.3. 复制链接链接已复制到粘贴板!
5.4. 复制链接链接已复制到粘贴板!
5.5. 复制链接链接已复制到粘贴板!
第 6 章 复制链接链接已复制到粘贴板!
composer-cli distros list
$ composer-cli distros list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意
6.1. 复制链接链接已复制到粘贴板!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意composer-cli blueprints save EXISTING-BLUEPRINT
# composer-cli blueprints save EXISTING-BLUEPRINT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli blueprints push EXISTING-BLUEPRINT.toml
# composer-cli blueprints push EXISTING-BLUEPRINT.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE
# composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose status
# composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose image UUID
# composer-cli compose image UUID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. 复制链接链接已复制到粘贴板!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 7 章 复制链接链接已复制到粘贴板!
7.1. 复制链接链接已复制到粘贴板!
composer-cli compose start BLUEPRINT-NAME image-installer
# composer-cli compose start BLUEPRINT-NAME image-installer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose status
# composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose list
# composer-cli compose list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose image UUID
# composer-cli compose image UUID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
mount -o ro path_to_ISO /mnt
$ mount -o ro path_to_ISO /mnt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar ztvf /mnt/liveimg.tar.gz
$ tar ztvf /mnt/liveimg.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2. 复制链接链接已复制到粘贴板!
tar -xf content.tar
$ tar -xf content.tar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3. 复制链接链接已复制到粘贴板!
dd if=installer.iso of=/dev/sdX
dd if=installer.iso of=/dev/sdX
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 8 章 复制链接链接已复制到粘贴板!
8.1. 复制链接链接已复制到粘贴板!
[customizations.openscap] # If you want to use the data stream from the 'scap-security-guide' package # the 'datastream' key could be omitted. # datastream = "/usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml" profile_id = "xccdf_org.ssgproject.content_profile_cis"
[customizations.openscap]
# If you want to use the data stream from the 'scap-security-guide' package
# the 'datastream' key could be omitted.
# datastream = "/usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml"
profile_id = "xccdf_org.ssgproject.content_profile_cis"
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
# oscap info /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
oscap xccdf generate fix --profile=cis --fix-type=blueprint /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
# oscap xccdf generate fix --profile=cis --fix-type=blueprint /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
- 注意
8.2. 复制链接链接已复制到粘贴板!
oscap xccdf generate fix --profile=<profileID> --fix-type=<blueprint> /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml > cis.toml
# oscap xccdf generate fix --profile=<profileID> --fix-type=<blueprint> /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml > cis.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli blueprints push <blueprint_name>.toml
# composer-cli blueprints push <blueprint_name>.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose start <blueprint_name> <image_type>
# composer-cli compose start <blueprint_name> <image_type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. 复制链接链接已复制到粘贴板!
oscap xccdf generate fix --profile=<profileID> --fix-type=blueprint /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml > <profileID>-tailored.toml
# oscap xccdf generate fix --profile=<profileID> --fix-type=blueprint /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml > <profileID>-tailored.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Blueprint for CIS Red Hat Enterprise Linux 8 Benchmark for Level 2 - Server ...
# Blueprint for CIS Red Hat Enterprise Linux 8 Benchmark for Level 2 - Server # ... [customizations.openscap.tailoring] selected = [ "xccdf_org.ssgproject.content_bind_crypto_policy" ] unselected = [ "grub2_password" ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli blueprints push <blueprintProfileID>-tailored.toml
# composer-cli blueprints push <blueprintProfileID>-tailored.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose start <blueprintProfileID> <image_type>
# composer-cli compose start <blueprintProfileID> <image_type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 9 章 复制链接链接已复制到粘贴板!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli blueprints push <blueprint-name>.toml
# composer-cli blueprints push <blueprint-name>.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli blueprints show <blueprint-name>
# composer-cli blueprints show <blueprint-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli blueprints depsolve <blueprint-name>
# composer-cli blueprints depsolve <blueprint-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose start \ <blueprint-name> \ <image-type> \
# composer-cli compose start \ <blueprint-name> \ <image-type> \
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose status <UUID> FINISHED <date> <blueprint-name> <blueprint-version> <image-type>
# composer-cli compose status … $ <UUID> FINISHED <date> <blueprint-name> <blueprint-version> <image-type> …
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose image <UUID>
# composer-cli compose image <UUID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <UUID-image-name.type>: <size> MB
$ <UUID-image-name.type>: <size> MB
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
fips-mode-setup --check
$ fips-mode-setup --check FIPS mode is enabled.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 10 章 复制链接链接已复制到粘贴板!
10.1. 复制链接链接已复制到粘贴板!
10.2. 复制链接链接已复制到粘贴板!
mkdir cloudinitiso cd cloudinitiso
$ mkdir cloudinitiso $ cd cloudinitiso
Copy to Clipboard Copied! Toggle word wrap Toggle overflow instance-id: citest local-hostname: vmname
instance-id: citest local-hostname: vmname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 11 章 复制链接链接已复制到粘贴板!
11.1. 复制链接链接已复制到粘贴板!
[[containers]] source = "registry.access.redhat.com/ubi9/ubi:latest" name = "local-name" tls-verify = true
[[containers]]
source = "registry.access.redhat.com/ubi9/ubi:latest"
name = "local-name"
tls-verify = true
11.2. 复制链接链接已复制到粘贴板!
systemctl restart osbuild-worker@*
$ systemctl restart osbuild-worker@*
[containers] auth_file_path = "/etc/osbuild-worker/containers-auth.json"
[containers]
auth_file_path = "/etc/osbuild-worker/containers-auth.json"
11.3. 复制链接链接已复制到粘贴板!
provider = "container_provider" [settings] tls_verify = false username = "admin" password = "your_password"
provider = "container_provider" [settings] tls_verify = false username = "admin" password = "your_password"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli blueprints push blueprint.toml
# composer-cli blueprints push blueprint.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose start simple-container container "quay.io:8080/osbuild/repository" registry-config.toml
# composer-cli compose start simple-container container "quay.io:8080/osbuild/repository" registry-config.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 注意
You can see details about the container you created, such as: - last modified - image size - the `manifest ID`, that you can copy to the clipboard.
You can see details about the container you created, such as: - last modified - image size - the `manifest ID`, that you can copy to the clipboard.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4. 复制链接链接已复制到粘贴板!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli blueprints push blueprint-image.toml
# composer-cli blueprints push blueprint-image.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli start compose image qcow2
# composer-cli start compose image qcow2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 注意
composer-cli compose status
# composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose image UUID
# composer-cli compose image UUID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
podman run -it registry.access.redhat.com/ubi9:8080/osbuild/repository /bin/bash/
# podman run -it registry.access.redhat.com/ubi9:8080/osbuild/repository /bin/bash/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow type -a nginx
# type -a nginx
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 12 章 复制链接链接已复制到粘贴板!
12.1. 复制链接链接已复制到粘贴板!
12.1.1. 复制链接链接已复制到粘贴板!
yum install python3 python3-pip
# yum install python3 python3-pip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pip3 install awscli
# pip3 install awscli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws configure
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BUCKET=bucketname aws s3 mb s3://$BUCKET
$ BUCKET=bucketname $ aws s3 mb s3://$BUCKET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
$ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json
$ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.1.2. 复制链接链接已复制到粘贴板!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose start blueprint-name image-type image-key configuration-file.toml
# composer-cli compose start blueprint-name image-type image-key configuration-file.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 注意
composer-cli compose status
# composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.1.3. 复制链接链接已复制到粘贴板!
- 注意
- 注意
chmod 400 <_your-instance-name.pem_>
$ chmod 400 <_your-instance-name.pem_>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh -i <_your-instance-name.pem_> ec2-user@<_your-instance-IP-address_>
$ ssh -i <_your-instance-name.pem_> ec2-user@<_your-instance-IP-address_>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2. 复制链接链接已复制到粘贴板!
12.2.1. 复制链接链接已复制到粘贴板!
*rpm --import https://packages.microsoft.com/keys/microsoft.asc*
# *rpm --import https://packages.microsoft.com/keys/microsoft.asc*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpm
# yum install -y https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install azure-cli
# yum install azure-cli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意*az login*
$ *az login*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意az storage account keys list --resource-group <resource_group_name> --account-name <storage_account_name>
$ az storage account keys list --resource-group <resource_group_name> --account-name <storage_account_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意az resource list
$ az resource list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az storage container create --account-name <storage_account_name>\ --account-key <key1_value> --name <storage_account_name>
$ az storage container create --account-name <storage_account_name>\ --account-key <key1_value> --name <storage_account_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2.2. 复制链接链接已复制到粘贴板!
az storage blob upload --account-name <_account_name_> --container-name <_container_name_> --file <_image_-disk.vhd> --name <_image_-disk.vhd> --type page
$ az storage blob upload --account-name <_account_name_> --container-name <_container_name_> --file <_image_-disk.vhd> --name <_image_-disk.vhd> --type page ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az image create --resource-group <_resource_group_name_> --name <_image_>-disk.vhd --os-type linux --location <_location_> --source https://$<_account_name_>.blob.core.windows.net/<_container_name_>/<_image_>-disk.vhd
$ az image create --resource-group <_resource_group_name_> --name <_image_>-disk.vhd --os-type linux --location <_location_> --source https://$<_account_name_>.blob.core.windows.net/<_container_name_>/<_image_>-disk.vhd - Running ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意
az vm create --resource-group <_resource_group_name_> --location <_location_> --name <_vm_name_> --image <_image_>-disk.vhd --admin-username azure-user --generate-ssh-keys
$ az vm create --resource-group <_resource_group_name_> --location <_location_> --name <_vm_name_> --image <_image_>-disk.vhd --admin-username azure-user --generate-ssh-keys - Running ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2.3. 复制链接链接已复制到粘贴板!
12.2.4. 复制链接链接已复制到粘贴板!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow govc import.vmdk ./composer-api.vmdk foldername
$ govc import.vmdk ./composer-api.vmdk foldername
Copy to Clipboard Copied! Toggle word wrap Toggle overflow govc import.ova ./composer-api.ova foldername
$ govc import.ova ./composer-api.ova foldername
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow govc vm.power -on vmname
govc vm.power -on vmname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow govc vm.ip vmname
govc vm.ip vmname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@<_ip_address_of_the_vm_>
$ ssh admin@<_ip_address_of_the_vm_>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意
12.2.5. 复制链接链接已复制到粘贴板!
- 注意
rpm -qa | grep firefox
$ rpm -qa | grep firefox
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3. 复制链接链接已复制到粘贴板!
12.3.1. 复制链接链接已复制到粘贴板!
12.3.1.1. 复制链接链接已复制到粘贴板!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 注意
sudo base64 -w 0 cee-gcp-nasa-476a1fa485b7.json
$ sudo base64 -w 0 cee-gcp-nasa-476a1fa485b7.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo composer-cli compose start BLUEPRINT-NAME gce IMAGE_KEY gcp-config.toml
$ sudo composer-cli compose start BLUEPRINT-NAME gce IMAGE_KEY gcp-config.toml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
sudo composer-cli compose status
$ sudo composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3.1.2. 复制链接链接已复制到粘贴板!
- 注意
12.3.1.2.1. 复制链接链接已复制到粘贴板!
base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"
$ base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3.1.2.2. 复制链接链接已复制到粘贴板!
[gcp] credentials = "PATH_TO_GCP_ACCOUNT_CREDENTIALS"
[gcp] credentials = "PATH_TO_GCP_ACCOUNT_CREDENTIALS"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4. 复制链接链接已复制到粘贴板!
12.4.1. 复制链接链接已复制到粘贴板!
12.5. 复制链接链接已复制到粘贴板!
12.5.1. 复制链接链接已复制到粘贴板!
composer-cli compose start blueprint_name openstack
# composer-cli compose start blueprint_name openstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose status
# composer-cli compose status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow composer-cli compose image UUID
# composer-cli compose image UUID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6. 复制链接链接已复制到粘贴板!
12.6.1. 复制链接链接已复制到粘贴板!
curl -O https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/73848/cn_zh/1557459863884/image_check
$ curl -O https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/73848/cn_zh/1557459863884/image_check
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod +x image_check
# chmod +x image_check
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./image_check
# ./image_check
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6.2. 复制链接链接已复制到粘贴板!
12.6.3. 复制链接链接已复制到粘贴板!
- 注意
12.6.4. 复制链接链接已复制到粘贴板!
- 注意