在 PVE 中使用 LXC 容器可以快速创建 Linux 环境,并且能轻松设置好 IP 和 SSH 密钥。但用虚拟机搭建 Linux 环境的时候,每次都得登录进去手动修改 SSH 密钥、IP 地址这些配置,有点麻烦。有没有办法让虚拟机用起来也能这么轻松呢?兄弟,有的!办法就是用 cloud-init 来自动配置。
cloud-init 简介
Cloud-init 是一种用于云实例自动化初始化的工具,它在系统启动时执行一系列任务,如设置主机名、安装软件包、运行脚本等。Cloud-init 通过读取用户数据、元数据和供应商数据来执行这些任务,这些数据可以通过 YAML 文件提供。
PVE 使用 cloud-init 要点
相比通常创建的虚拟机,想要使用 cloud-init,需要注意以下要点
- 获取 Cloud Images。Cloud Images 镜像已内置 Cloud-init 组件,无需额外安装。Cloud Images 具体介绍:
Cloud Images 下载地址。以下是常见发行版的 Cloud Images 下载地址:
国内镜像源下载举例。国外下载比较慢,国内用户可以通过国内镜像源下载 Cloud Images。以南京大学镜像站为例,镜像参考如下,可以按需要在镜像源找其他需要的镜像:
- debian:https://mirrors.nju.edu.cn/debian-cdimage/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
- ubuntu:https://mirrors.nju.edu.cn/ubuntu-cloud-images/releases/24.10/release/ubuntu-24.10-server-cloudimg-amd64.img
{/tabs-pane}
{tabs-pane label="虚拟机添加 cloud-init 设备"}
添加位置参考 pve-虚拟机-硬件-添加-CloudInit 设备
{/tabs-pane}
{tabs-pane label="cloud-init 设置"}
修改用户名、密码、IP、网关等信息后,点击重新生成镜像即可
{/tabs-pane}
完整操作记录
一、下载镜像
- 找到你需要的镜像链接
打开南京大学镜像站,找到符合要求的镜像,右键复制链接。
{/collapse-item}
打开 PVE 输入以下命令下载
点击右上角“Shell”,新窗口输入wget
+ 镜像链接即可下来镜像到 pve。wget https://mirrors.nju.edu.cn/debian-cdimage/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
wget <镜像链接>
{/collapse-item}
‘debian-12-genericcloud-amd64.qcow2’ saved [345833472/345833472]
说明下载完毕
二、新建虚拟机
点击右上角“创建虚拟机”各参数设置如下
三、导入镜像
PVE 中输入以下指令,将刚刚下载的镜像转换为虚拟硬盘
qm importdisk 404 debian-12-generic-amd64.qcow2 local-lvm
qm importdisk <vmid> <image-name> <storage> --format=<disk-format>
<vmid>
: 虚拟机的 ID。<image-name>
: 磁盘镜像的文件名,如果不在当前文件夹则需带上路径。<storage>
: 磁盘生成所在的存储名字。--format
: 指定磁盘映像的格式(例如 qcow2、vmdk)。
{/collapse-item}
见到 successfully imported disk 'local-lvm:vm-404-disk-0'
说明导入成功
- 进入虚拟机的硬件设置,可以看到,多了一个“未使用的磁盘”双击后添加即可
- 可以看到硬盘只有 3 GB,只需要选定硬盘后选择“磁盘操作”即可调整大小,可以按需增加大小。也可以等有需要再增加大小。
- 设置磁盘为系统盘,进入“选项-引导顺序”,勾选刚刚的硬盘,并拖动顺序到第一位
如下图所示
四、设置 cloud-init
- 添加 cloud-init 设备,进入虚拟机的“设备”,点击添加,添加“CloudInit 设备”
- 此时 Cloud-Init 可以点击了。点击进入,按需修改“用户名、密码、IP配置等信息”然后点击“重新生成镜像”即应用生效
五、启动虚拟机
- 点击“启动”即可启动虚拟机,然后点击“控制台”即可直接进入虚拟机控制界面,开机后会自动加载 Cloud-Init
看到上图信息,说明 Cloud-Init 运行完毕,可以输入用户名密码直接使用。 安装 QEMU Guest Agent,输入以下指令安装
apt update #如果 Cloud-Init 升级程序包为“是” 则无需该指令,直接运行安装指令即可 apt install qemu-guest-agent -y
关闭虚拟机
通过以下指令即可关闭虚拟机,为转换为模版做准备。poweroff
六、转化为模版
- 将虚拟机关闭之后,将虚拟机转换为模版
此时就有一个随时可以克隆快速使用的 linux 虚拟机了 - 克隆虚拟机,然后通过 cloud-init 即可快速初始化,快速创建虚拟机使用
链接克隆,不占用额外磁盘空间、但是IO性能较差、适合临时测试
完整克隆,完成复制硬盘,适合生产使用
评论 (1)