我们前面演示了Ubuntu桌面版系统的图形化安装方式(准备搞OpenStack了,先装一台最新的Ubuntu 23.10),还有服务器版系统的图形化安装方式(没有图形界面,如何快速部署一个Ubuntu 24.10的Server虚拟机)。但对于有些用户,因为技术问题,并不能独立快速完成Ubuntu系统的部署,这时候就可以定制一个能够自动完成安装部署的系统镜像,让用户插上U盘就能自动执行部署操作,全程不用人工干预。就像下面这个视频展示的一样。
当然,VMware Workstation的性能毕竟有限,如果换成高端设备,部署过程就可以压缩到15分钟以内了,更加省时、省力。
那这个ISO安装镜像是如何定制的呢?
其实也很简单,只要结合自动安装配置参考手册(解锁Ubuntu高效部署!自动安装配置文件YAML全解析)和Ubuntu服务器版系统的图形化安装过程就行了(没有图形界面,如何快速部署一个Ubuntu 24.10的Server虚拟机)。
在语言选择界面,我们使用默认的【English】,这部分在自动配置脚本安装过程中就不涉及了。
然后是键盘布局选择,需要设置layout【English(US)】和variant【English(US)】。
这两个配置可以使用自动配置参数keyboard指定;因为美式键盘是默认参数,不指定也是可以的。
autoinstall:
keyboard:
layout: us
variant: ""
toggle: null
安装类型选择界面,我们使用默认的【Ubuntu Server】,最小化安装提示为拒绝登录。
这一步也可以使用自动配置参数指定;默认参数是安装源中列出的默认值,所以也可以不指定。为了保证安装效果,我这里指定了一下。
autoinstall:
source:
id: ubuntu-server
在网卡配置页面,我们之前使用了手工配置的静态IP地址,对于批量自动化安装来讲,不太适用。
所以,在使用自动配置参数network时,可以不指定配置,使用默认参数,即在名为eth*或en*的接口上使能DHCP。
我们不需要配置代理,这一步跟自动配置参数proxy的默认值一样,所以也可以不指定。
APT软件源默认使用Ubuntu官方的软件源。
如果有需要,可以选择手工修改为指定APT软件源,如https://mirrors.tuna.tsinghua.edu.cn/ubuntu/。在使用自动配置参数apt指定时,示例如下:
autoinstall:
apt:
preserve_sources_list: false
mirror-selection:
primary:
- uri: "https://mirrors.tuna.tsinghua.edu.cn/ubuntu/"
fallback: offline-install
geoip: true
接下来是比较重要的分区部分,因为Ubuntu默认的分区方式是使用一般的磁盘空间。
所以,在使用自动配置参数storage指定时,我们需要配置使用LVM卷组类型,并且分配所有磁盘空间,示例如下:
autoinstall:
storage:
layout:
name: lvm
sizing-policy: all
接下来,是配置一个非root用户。
需要注意的是,在使用自动配置参数identity指定时,密码不能使用明文,需要使用whois包中的mkpasswd或openssl passwd工具来生成加密密码。比如使用openssl passwd计算tt@2025.的加密密码。
root@tt:~# openssl passwd tt@2025.
$1$XdP.XBYr$yXkHTxen28g3t74wNJ6N40
然后我们将得到的密码和系统的主机名、用户名一块,写入到autoinstall配置中:
autoinstall:
identity:
hostname: ttserver
password: "$1$XdP.XBYr$yXkHTxen28g3t74wNJ6N40"
username: tt
Ubuntu服务器版系统默认没有安装OpenSSH服务器,需要手工选择。
对应的,在配置自动配置参数ssh指定时,我们可以指定安装SSH服务器,并直接指定使用密码认证。
autoinstall:
ssh:
install-server: true
allow-pw: true
在图形化安装过程中,完成上面的操作就可以等待系统安装完成了,最后一个操作是选择【Reboot Now】执行重启操作。对应的,自动配置参数shutdown的默认值是reboot,表示安装完成后,请求系统自动重新启动,所以我们就不用单独配置了。
除此之外,我们还可以指定一些额外参数。
比如,我们想在部署时指定系统的时区为【Asia/Shanghai】,同时禁用内核崩溃Dump转储,可以写入以下配置:
autoinstall:
kernel-crash-dumps:
enabled: false
timezone: "Asia/Shanghai"
又或者,我们想让系统默认安装一些软件包,比如wireguard,则可以写入以下配置:
autoinstall:
packages:
- wireguard
把前面这些自动配置参数整合到一起,就得到了自动配置所需的autoinstall.yaml文件了。
autoinstall:
version: 1
identity:
hostname: ttserver
password: "$1$XdP.XBYr$yXkHTxen28g3t74wNJ6N40"
username: tt
source:
id: ubuntu-server
storage:
layout:
name: lvm
sizing-policy: all
ssh:
install-server: true
allow-pw: true
packages:
- wireguard
kernel-crash-dumps:
enabled: false
timezone: "Asia/Shanghai"
需要注意,自动安装文件autoinstall.yaml使用YAML格式,对缩进格式要求极高,千万不要搞错了。
最后,将这个文件拷贝到安装镜像的根目录下,你就能跟我一样实现Ubuntu系统的自动化部署了。
**推荐阅读***
原文始发于微信公众号(铁军哥):插上U盘自动装系统?一文掌握Ubuntu服务器版自动安装镜像制作
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论