准备:已安装Centos8 的虚拟机两台host1、hosts2
换源
“无论遇到什么困难,请先把centos默认源替换掉”
阿里源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
任务一:虚拟化环境配置
安装KVM、QEMU、Libvirt
sudo yum install -y qemu-kvm libvirt virt-install virt-viewer libguestfs-tools
安装cocpkit
yum install cockpit
systemctl enable --now cockpit.socket
yum install -y cockpit-machines
验证cockpit安装

任务二:统一存储配置
安装、配置NFS
在host1主机上安装
sudo dnf install nfs-utils
sudo systemctl enable --now nfs-server
创建需要共享的文件夹
sudo mkdir -p /home/yish/share
编辑NFS共享导出配置文件
sudo vim /etc/exports
写入
/home/yish/share/ *(rw,sync,no_root_squash)
刷新并确认配置
sudo exportfs -ra
sudo exportfs -v
防火墙放行
sudo firewall-cmd --new-zone=nfs --permanent
sudo firewall-cmd --zone=nfs --add-service=nfs –permanent
sudo firewall-cmd --zone=nfs --add-source=0.0.0.0/0 --permanent
sudo firewall-cmd --reload
客户端挂载
在另一台客户端上创建挂载目录
sudo mkdir -p /home/yish/share
挂载
sudo mount -t nfs -o vers=4 192.168.173.142:/home/yish/share/ /home/yish/share/
至此使用tinycore.img在host1、2上分别创建vm1,vm2/vm3,vm4 即可完成:
1、 网络设置好以后,host1和host2的ip a命令运行结果截图

2、 运行vm1虚拟机后,virsh domifaddr vm1 命令的结果截图

任务三:网络配置
创建 isolated 网络
cat > isolated.xml << EOF
<network>
<name>isolated</name>
<forward mode='nat'/>
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.2' end='192.168.100.254'/>
</dhcp>
</ip>
</network>
EOF
创建 virsh net-define isolated.xml
启动 virsh net-start isolated
自启 virsh net-autostart isolated
任务四:虚拟机模板构建
在nfs共享的目录里(/home/yish/share)下载ubuntu镜像
wget --no-check-certificate https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
创建deploy-ubuntu文件夹
mkdir deploy-ubuntu
在nfs共享的目录里(/home/yish/share)执行,生成差分镜像
qemu-img create -f qcow2 -F qcow2 -o backing_file=/home/yish/focal-server-cloudimg-amd64.img deploy-ubuntu/ubuntu-diff.qcow2 注意替换路径
在deploy-ubuntu里生成文件
touch meta-data user-data
编辑定制文件
只要管user-data,以下只需要修改三个yish,第一个用户名,第二个用户名,第三个密码
#cloud-config
users:
- name: yish
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
shell: /bin/bash
lock_passwd: false
passwd: "$6$rounds=4096$u3YJPb9C$2KXxN6Y64l4kwgkRI1QyYUzZdUBzKobOtR/NEgTfSMu0Xz6bDp7A6GGR0ovXqYhViZCjs9nKoO8BPKpHzb05W."
ssh_pwauth: true
chpasswd:
list: |
yish:yish #用户名:密码
expire: false
生成定制镜像
genisoimage -output ubuntu-diff.qcow2.iso -volid cidata -joliet -rock user-data meta-data
任务五:自动化批量部署
创建create_vm.sh文件
touch create_vm.sh
以下为sh内容
#!/bin/bash
# 设置基础变量
VM_COUNT=4
BASE_IMAGE="/home/yish/focal-server-cloudimg-amd64.img" # 此处替换为下载的镜像的位置
WORK_DIR="/home/yish/deploy-ubuntu" # 此处替换为deploy-ubuntu所在位置
ISO_PATH="$WORK_DIR/ubuntu-diff.qcow2.iso"
NAT_NET="default"
ISOLATED_NET="isolated"
SOFTWARE_LIST=("httpd" "nginx" "mysql" "python3")
# 确保目录存在
mkdir -p "$WORK_DIR"
# 循环创建虚拟机
for i in $(seq 1 $VM_COUNT); do
VM_NAME="vm$i"
VM_DISK="$WORK_DIR/${VM_NAME}.qcow2"
IP="192.168.100.$((10 + i))" # 假设 isolated 网段为 192.168.100.0/24
echo "==> 创建 $VM_NAME ..."
# 创建差分磁盘,指定 backing file 格式
qemu-img create -f qcow2 -F qcow2 -b "$BASE_IMAGE" "$VM_DISK"
# 启动虚拟机
virt-install \
--name "$VM_NAME" \
--memory 2048 \
--vcpus 2 \
--disk path="$VM_DISK",format=qcow2 \
--disk path="$ISO_PATH",device=cdrom \
--os-type linux \
--os-variant ubuntu20.04 \
--network network="$NAT_NET",model=virtio \
--network network="$ISOLATED_NET",model=virtio \
--graphics none \
--import \
--noautoconsole
echo "$VM_NAME 部署完成,预设静态IP:$IP"
done
注意查看运行过程中是否产生报错ERROR!!!
运行脚本即可生成4台虚拟机
chmod 777 create_vm.sh
./create_vm.sh
6、 ovirt engine或cockpit管理界面内能看到两台主机的证据截图


7、 任务5自动部署的yaml文件内容及运行成功的证据截图

任务六:图形访问与快照验证
在虚拟机中的cockpit和novnc等可通过ai快速解决
快照:
virsh snapshot-create-as --domain vm1 snapshot1 "第一次快照"
先关机:
virsh shutdown vm1
然后回滚:
virsh snapshot-revert --domain vm1 snapshot1
virsh start vm1"
Comments NOTHING