RHEL 10 Image Builder:blueprint 构建 qcow2
This content is not available in your language yet.
Image Builder 在 RHEL 10 上是本地 API 服务:osbuild-composer 跑在 socket 后面,composer-cli 通过它推 blueprint、排 compose、取产物。本页在 390 上构建一个最小 qcow2。
在 PVE 390 rhel10-lab(RHEL 10.2)执行:
sudo dnf -y install osbuild-composer composer-clisudo systemctl enable --now osbuild-composer.socketsudo composer-cli status show输出:
API server status: Database version: 0 Database supported: true Schema version: 0 API version: 1E3 记录:plans/content-expansion/evidence/rhel/rhel-image-builder/run.json(6 步,含 compose 状态、镜像大小/sha256)。
先给结论:socket 服务 + CLI
Section titled “先给结论:socket 服务 + CLI”osbuild-composer.socket按需拉起服务,不需要手动systemctl start;composer-cli只是客户端,所有状态在 composer 的数据库里;- 构建在
/var/lib/osbuild-composer下,空间要留够; - 产物默认不自动下载,要
composer-cli compose image <uuid>。
blueprint
Section titled “blueprint”/tmp/rhel10-lab.toml:
name = "rhel10-lab"description = "RHEL 10.2 lab image"version = "0.0.1"
[[packages]]name = "bash"version = "*"
[[packages]]name = "coreutils"version = "*"
[[packages]]name = "openssh-server"version = "*"
[[packages]]name = "vim-minimal"version = "*"
[customizations.kernel]append = "quiet"推送:
sudo composer-cli blueprints push /tmp/rhel10-lab.tomlsudo composer-cli blueprints list# rhel10-labcompose
Section titled “compose”sudo composer-cli compose start rhel10-lab qcow2# Compose 83d6309b-fb9e-49ec-8d64-056d65dbb653 added to the queuesudo composer-cli compose listID Status Blueprint Version Type83d6309b-fb9e-49ec-8d64-056d65dbb653 FINISHED rhel10-lab 0.0.1 qcow2compose info 会列出解析后的依赖:NetworkManager、audit、aardvark-dns 等基础包都会自动带入,不是只装你写的 4 个包。
sudo mkdir -p /srv/imagescd /srv/imagessudo composer-cli compose image 83d6309b-fb9e-49ec-8d64-056d65dbb653sudo chown cloud-user:cloud-user *.qcow2$ stat -c '%s' *.qcow21058406400$ sha256sum *.qcow2c4229b471730ae31e83c8358781e4d7e46ba33782119d660cacfa56aac5c579d$ qemu-img info *.qcow2file format: qcow2virtual size: 10 GiB (10737418240 bytes)disk size: 0.986 GiBcompat: 1.11.06GB 文件对应 10G 虚拟磁盘;qcow2 是稀疏的,disk size 才是实际占用。
| 现象 | 原因 | 处置 |
|---|---|---|
composer-cli 连不上 | socket 没起 | systemctl enable --now osbuild-composer.socket |
| compose 一直 RUNNING | 仓库慢/依赖解析 | compose info 看日志、journalctl -u osbuild-composer |
Permission denied 读镜像 | 文件 root:root 0600 | chown 或 sudo 读取 |
| 磁盘不足 | /var/lib/osbuild-composer 满 | 清理旧 compose、扩盘 |
-
osbuild-composer.socketactive; - blueprint 名称/版本正确;
- compose 类型选对(qcow2/ami/vhd 等);
- compose 状态 FINISHED 再下载;
- 校验大小/sha256/qemu-img;
- 记录 blueprint 版本,便于复现。
未实测与边界
Section titled “未实测与边界”- 未把产物导入 PVE 启动验证(镜像无 cloud-init 用户,登录需另配);
- 未测试
%post/customizations(用户、服务、防火墙); - 未测试其他输出类型(ami/vhd/oci);
- 未测试离线/隔离网络下的 compose。