
#创建虚拟机virt-install \--name rocky10 \--vcpu 2 \--memory 4096 \--disk path=/data/libvirt/images/rocky10.qcow2,size=40,bus=virtio \--cdrom /data/libvirt/iso/Rocky-10.0-x86_64-minimal.iso \--network bridge=br0 \--graphics vnc \--os-variant rocky10 \--noautoconsole


#模板虚拟机中安装cloud-init工具#cloud-init工具是实现自动化配置的工具yum install cloud-init cloud-utils-growpart#验证安装是否成功rpm -qa | grep cloud-init#查看版本cloud-init -v#启用cloud-init相关服务,不启动服务systemctl enable cloud-init-local.servicesystemctl enable cloud-init.service systemctl enable cloud-config.servicesystemctl enable cloud-final.service
#配置文件位于/etc/cloud目录,主配置文件为/etc/cloud/cloud.cfgvi /etc/cloud/cloud.cfgpreserve_hostname: false #避免克隆出的虚拟机有相同主机名:wq! #保存退出
#清除已有实例数据执行rm -rf /var/lib/cloud/*#清除ssh密钥rm -f /etc/ssh/ssh_host_*#清除缓存cloud-init clean#重置机器ID,这个配置特别适合需要批量部署相同配置但不同主机名的虚拟机场景。truncate -s 0 /etc/machine-id#网络配置保持DHCP模式

virsh list --all #查看虚拟机virsh shutdown rocky10 #关闭virsh destroy #或强制关闭(如果无法正常关机)

#清理模板虚拟机virt-sysprep -d rocky10#验证清理效果virt-cat -d rocky10 /etc/machine-id
qemu-img convert -O qcow2 -c /data/libvirt/images/rocky10.qcow2 /data/libvirt/images/rocky10_template.qcow2
#编辑创建新虚拟机的执行脚本vi create_vm_rocky10.sh#!/bin/bash#生成随机主机名和密码HOSTNAME="rocky10-vm-$(date +%s | md5sum | head -c 4)"#生成6位密码PASSWORD=$(openssl rand -base64 9 | tr -dc 'A-Za-z0-9!@#$%^&*' | head -c6)#创建cloud-init配置临时文件cat > /tmp/user-data-${HOSTNAME} <<EOF#cloud-confighostname: ${HOSTNAME}fqdn: ${HOSTNAME}manage_etc_hosts: truechpasswd: list: | root:${PASSWORD} expire: falsessh_pwauth: trueEOF#显示生成的密码(生产环境建议记录到安全位置)echo "VM ${HOSTNAME} 的 root 密码: ${PASSWORD}" | tee /tmp/vm_${HOSTNAME}_cred.txt#定义虚拟机模板镜像,40GBDISK_TEMPLATE=/data/libvirt/images/rocky10_template.qcow2#定义虚拟机磁盘镜像目录VM_DIR=/data/libvirt/images#拷贝模板镜像为新的虚拟机磁盘镜像cp $DISK_TEMPLATE $VM_DIR/${HOSTNAME}.qcow2#扩容到60GB,文件系统仍然是40GB,需要在虚拟机内部扩展分区#qemu-img resize $VM_DIR/${HOSTNAME}.qcow2 60G#启动虚拟机virt-install \ --name ${HOSTNAME} \ --memory 2048 \ --vcpus 2 \ --disk path=$VM_DIR/${HOSTNAME}.qcow2,size=40,bus=virtio \ --import \ --os-variant rocky10 \ --network bridge=br0 \ --graphics vnc \ --noautoconsole \ --cloud-init user-data=/tmp/user-data-${HOSTNAME}:wq! #保存退出chmod +x create_vm_rocky10.sh #添加执行权限sh create_vm_rocky10.sh #执行脚本创建新虚拟机







本文链接:https://www.kinber.cn/post/5289.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
