构建定制化系统

本文将介绍如何构建定制化系统,使用命令和浏览器创建系统镜像

Image Builder介绍


Image Builder可以创建RHEL定制系统,通过模板定义文件构建自己需要的系统镜像,Image Builder可以通过Composer-cli命令行工具来构建镜像,也可以通过web console使用图形化界面操作。
Image Builder以系统服务lorax-composer运行,可以通过Image Builder构建出多种格式的系统镜像,比如iso,tar,img,vmdk等。

安装Image Builder


首先添加RHEL8的DNF软件源

wget -O /etc/yum.repos.d/rhel-9-beta.repo https://mirrors.tuna.tsinghua.edu.cn/redhat/rhel/rhel-8-beta/rhel-8-beta.repo

通过vim修改源文件

:%s/enabled=0/enabled=1/g
$ dnf clean all
$ dnf makecache

修改/etc/selinux/config为disabled

$ yum install lorax-composer composer-cli cockpit-composer bash-completion

配置开机启动

$ systemctl enable lorax-composer.socket
$ systemctl enable cockpit.socket

配置防火墙

$ firewall-cmd --add-service=cockpit && firewall-cmd --add-service=cockpit --permanent

加载命令行补全

$ source  /etc/bash\_completion.d/composer-cli

现在composer-cli命令行工具就可以使用了

使用imagebuilder命令构建镜像


imagebuilder的工作流如下:

  • 构建模板blueprint定义文件
  • 修改定义文件
  • 重新导入blueprint文件
  • 使用blueprint构建镜像
  • 导出镜像文件

1.创建模板blueprint定义文件

name = "BLUEPRINT-NAME"
description = "LONG FORM DESCRIPTION TEXT"
version = "0.0.1"
modules = []
groups = []
[[packages]]
name = "package-name"
version = "package-version"
[[customizations.user]]
name = "USER-NAME"
description = "USER-DESCRIPTION"
password = "PASSWORD-HASH"
key = "ssh-rsa (...) key-name"
home = "/home/USER-NAME/"
shell = "/usr/bin/bash"
groups = ["users", "wheel"]
uid = NUMBER
gid = NUMBER
[[customizations.kernel]]
append = "nosmt=force"

blueprint是以TOML格式定义的,可以有许多定制选项,imagebuilder会根据blueprint中的定义来构建系统。
2.将模板文件保存为BLUEPRINT-NAME.toml
3.使用命令行工具导入blueprint

$ composer-cli blueprints push BLUEPRINT-NAME.toml

4.查看已导入的blueprint

$ composer-cli blueprints list

5.检查组件依赖

$ composer-cli blueprints depsolve BLUEPRINT-NAME

6.检查blueprint内容

$ composer-cli blueprints show BLUEPRINT-NAME

7.列出支持的输出类型

$ composer-cli compose types

8.开始构建

$ composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE

IMAGE-TYPE为支持的输出类型
9.查看构建进度

$ composer-cli compose status

10.构建完成后导出镜像

$ composer-cli compose image UUID

镜像存放路径为/var/lib/lorax/composer/results/UUID/

其他命令:
导出blueprint

$ composer-cli blueprints save BLUEPRINT-NAME

删除blueprint

$ composer-cli compose delete BLUEPRINT-NAME

取消正在进行中的构建

$ composer-cli compose cancel COMPOSE-UUID

删除已完成的构建

$ composer-cli compose delete COMPOSE-UUID

Image Builder web console


因为imagebuilder是以服务运行,因此默认可以通过本地浏览器访问
https://localhost:9090/
通过web页面的可视化操作可以达到通过命令操作同样的效果。


Image Builder on Red Hat Enterprise Linux 8
13 声望
1 粉丝
0 条评论
推荐阅读
git 同步上下游代码
当我们fork了一份上游代码后经过一段时间想将fork的分支提交到master的某一分支可以通过以下命令完成假设已经设置好origin和upstream了此时更新上游master到fork分支

hhhan阅读 547

使用kubeasz部署高可用kubernetes集群
本实验采用kubeasz作为kubernetes环境部署工具,它是一个基于二进制方式部署和利用ansible-playbook实现自动化来快速部署高可用kubernetes集群的工具,详细介绍请查看kubeasz官方。本实验用到的所有虚拟机默认软...

李朝阳4阅读 728

计算机如何表示整数
在计算机中,任何的数据都是用二进制: 0 和 1 来表示。整数也不例外。生活中的 10,在 8 个字节的整数中表示为 00001010。但是这样子只能表示正数和零。怎么表示负数呢?于是有了符号位的概念。在 8 个字节的整...

kang2阅读 3.2k评论 7

linux中用户登录加载配置文件的过程
shell的类型(站在用户登录登录的角度)登录式shell正常通过某终端登录su - USERNAMEsu -l USERNAME非登录式shellsu USERNAME图形终端下打开命令窗口自动执行的shell脚本用户登录时相关的bash配置文件全局配置文件/...

Dabric阅读 5.3k评论 3

在Linux上查看活跃线程数与连接数
现如今,有两种常见的软件资源几乎成了Java后端程序的标配,即线程池与连接池,但这些池化资源非常的重要,一旦不够用了,就会导致程序阻塞、性能低下,所以有时我们需要看看它们的使用情况,以判断这里是否是瓶颈。

扣钉日记3阅读 990

封面图
9个超有用的 Linux Touch 命令实例讲解
touch 命令用于创建空文件,也用于更改 Linux 系统中现有文件的时间戳。这里更改时间戳意味着更新文件和目录的访问和修改时间。命令语法touch {options} {file}语法选项1) 创建一个空文件touch 命令创建一个空文...

鸠摩智首席音效师1阅读 1.7k

百万并发场景中倒排索引与位图计算的实践
Promise时效控单系统作为时效域的控制系统,在用户下单前、下单后等多个节点均提供服务,是用户下单黄金链路上的重要节点;控单系统主要逻辑是针对用户请求从规则库中找出符合条件的最优规则,并将该规则的时效控...

京东云开发者1阅读 463

封面图
13 声望
1 粉丝
宣传栏