Ubuntu 自动安装示例
自动安装 Ubuntu Linux 的能力对于必须定期将操作系统部署到新的物理或虚拟机的系统管理员来说非常有用。这些系统的自动配置可以节省数百个工时,并减少人为错误的可能性。安装 Ubuntu 的自动化涉及向操作系统提供所需的主机名、用户名和密码。
有了这些信息,Ubuntu 就可以自行安装,无需任何用户交互。安装完所有内容后,您可以首次启动 Ubuntu 并按照您的计划进行所有设置。
在本教程中,我们将向您展示几个 Ubuntu 自动安装配置的示例。这将包括生成一个可以自动安装 Ubuntu 的 ISO 文件,以及使用 KVM 将自动安装部署到新的虚拟机。
在本教程中您将学习:
如何生成用于自动安装的 cloud-init 文件
如何为 kvm 启动 Ubuntu 自动安装
如何生成 Ubuntu 自动安装 ISO 文件
Ubuntu 自动安装示例
下面我们将介绍自动安装 Ubuntu 的分步说明。根据您的情况和环境,您可能想要生成可自行安装的 Ubuntu ISO,或者仅部署虚拟机(在本示例中我们将使用 KVM)来自动安装 Ubuntu。在下面选择最适合您的方法。
注意
这些说明已经过测试和验证,可与 Ubuntu 20.04 配合使用。在其他版本的 Ubuntu 上执行这些步骤可能会取得不同程度的成功。
为 KVM 创建 Ubuntu 自动安装配置
对于这些步骤,我们将利用 Ubuntu 自动安装快速入门指南中的说明。
您需要做的第一件事是下载 Ubuntu 20.04。如果您已有 ISO 文件,则只需继续下一步即可。
下一步是安装下载的 Ubuntu ISO 文件。
$ sudo mount -r ~/Downloads/ubuntu-20.04-live-server-amd64.iso /mnt
接下来,创建并导航到一个新目录,我们将在其中托管我们在后续步骤中创建的 cloud-init 配置。
$ mkdir ~/www && cd ~/www
接下来,创建一个名为
user-data
的新文件,其中包含以下内容。执行整个块将为您生成文件。$ cat > user-data << 'EOF' #cloud-config autoinstall: version: 1 identity: hostname: ubuntu-server password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0" username: ubuntu EOF
上面的配置会将您的系统主机名设置为
ubuntu-server
,将您的用户名设置为ubuntu
,并将密码(上面代码中的加密哈希值)设置为ubuntu
。您还需要生成一个
元数据
文件,该文件可以简单地留空。$ touch meta-data
我们现在将使用 python3 创建一个非常基本的 Web 服务器,可以通过 http 为我们的 cloud-init 配置提供服务。
$ cd ~/www && python3 -m http.server 3003
创建一个要安装 Ubuntu 的目标磁盘。您可以将此文件放在任何您想要的位置,并根据您的需要调整大小。
$ truncate -s 20G image.img
接下来,我们可以运行Ubuntu自动安装。
$ kvm -no-reboot -m 1024 \ -drive file=image.img,format=raw,cache=none,if=virtio \ -cdrom ~/Downloads/ubuntu-20.04-live-server-amd64.iso \ -kernel /mnt/casper/vmlinuz \ -initrd /mnt/casper/initrd \ -append 'autoinstall ds=nocloud-net;s=http://_gateway:3003/'
安装完成后(需要几分钟),虚拟机将关闭。
最后,要运行新安装的 Ubuntu VM,您可以使用此命令启动它。
$ kvm -no-reboot -m 1024 \ -drive file=image.img,format=raw,cache=none,if=virtio
创建 Ubuntu 自动安装 ISO
对于这些步骤,我们将利用 Git Hub 上托管的 covertsh Ubuntu 自动安装生成器。这只是一个 Bash 脚本,可以帮助我们简化生成自动安装 ISO 的过程,从而使一切变得更加容易。
您需要做的第一件事是下载 Ubuntu 20.04。然后,从 Git Hub 下载必要的 Bash 脚本:
$ wget https://raw.githubusercontent.com/covertsh/ubuntu-autoinstall-generator/main/ubuntu-autoinstall-generator.sh
在继续操作之前,请确保您的系统具备必要的先决条件:
$ sudo apt update $ sudo apt install xorriso curl isolinux
接下来,创建一个名为
user-data
的新文件,其中包含以下内容。执行整个块将为您生成文件。$ cat > user-data << 'EOF' #cloud-config autoinstall: version: 1 identity: hostname: ubuntu-server password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0" username: ubuntu EOF
上面的配置会将您的系统主机名设置为
ubuntu-server
,将您的用户名设置为ubuntu
,并将密码(上面代码中的加密哈希值)设置为ubuntu
。您还需要生成一个
元数据
文件,该文件可以简单地留空。$ touch meta-data
现在您已准备好运行该脚本并创建 Ubuntu 自动安装 ISO 文件。执行以下命令,同时替换您自己的 ISO 文件、用户数据文件和元数据文件的路径。
$ chmod +x ubuntu-autoinstall-generator.sh $ bash ubuntu-autoinstall-generator.sh -s ~/Downloads/ubuntu-20.04-live-server-amd64.iso -a -k -u ~/user-data -m ~/meta-data -d ubuntu-autoinstall.iso
您的新自动安装 ISO 文件将命名为
ubuntu-autoinstall.iso
。现在剩下要做的就是使用 ISO 来安装 Ubuntu。它可以弹出到物理机中,也可以在 KVM、VirtualBox、VMware 等虚拟机上使用,操作系统将自动安装,无需用户交互。
结束语
在本教程中,我们了解了如何通过 Linux 系统上的两个不同示例创建 Ubuntu 自动安装配置。第一种方法涉及将 cloud-init 配置部署到 kvm 实例,第二种解决方案生成我们自己的 Ubuntu 自动安装 ISO,其中包含正确的配置文件。无论您的情况如何,这都应该允许您在没有用户交互的情况下安装 Ubuntu,减少浪费的时间和最终的成本。