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





评论

此博客中的热门博文

重开博客纪念

2021 Linux与微信