Linux中快速创建测试用的Debian虚拟机
背景
有这样一个测试的场景,需要快速拉起一个Debian虚拟机用于测试、容器、K8s节点等用途。通过下载ISO的方式手动创建虚拟机太慢,需要创建用户格式化磁盘等等一系列操作,
耗时太长(20 min+)。
针对这个场景,clound-init项目提供了一套工具来模板化的创建虚拟机。恰好Debian也提供了Cloud
Image的下载,作为测试目的非常合适。
环境准备
- 确认你的操作系统启动了虚拟化支持已经内核中启用了KVM模块
- 安装qemu
- 安装libvirt
- 下载Debian generic cloud image 镜像
开始创建
准备Cloud-init配置文件
创建一个cloud-init.yaml文件作为配置,它会定义虚拟机的实例,这里给出一个最简单的配置,其他的配置项可以看这里
#cloud-config
users:
# whatever username you like
- name: test-user
# so our user can just sudo without any password
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
# content from $HOME/.ssh/id_rsa.pub on your host system
ssh_authorized_keys:
- ssh-rsa AAAA[...]
需要注意的是第一行的注释#cloud-config不可以删除,否则创建时不认配置
创建虚拟机实例
在终端里执行以下命令,替换掉其中的参数即可
VM_NAME="your-vm-name"
DISK_IMAGE_PATH="/path/to/disk-image.qcow2" # 创建磁盘镜像的路径
IMAGE="/path/to/debian-12-generic-amd64.qcow2" # 下载好的Debian镜像路径
VCPUS="4" # 虚拟机cpu数量
RAM_MB="4096" # 虚拟机内存大小
DISK_GB="60" # 虚拟机磁盘大小
CLOUD_CONFIG_PATH="/path/to/cloud-init.yaml" # cloud-init文件路径
sudo -E virt-install --connect="qemu:///system" --name $VM_NAME --memory $RAM_MB --vcpus $VCPUS --disk="path=${DISK_IMAGE_PATH},size=${DISK_GB},backing_store=${IMAGE}" --cloud-init user-data=$CLOUD_CONFIG_PATH --network bridge=br0 --os-variant="debian12"
运行之后等几分钟虚拟机实例就创建完成了
注意这里提供的配置只能用ssh key登陆,这是为了避免明文密码
如果安装完成后不能登入,可能是公钥配置错误或者配置文件第一行不是#cloud-config
评论
发表评论