pve配置虚机模板(自动配置IP)

发布时间 2023-10-09 17:25:35作者: momingliu11

安装好Centos虚机系统,进行标准化配置,最后安装cloud-init,如下:

yum -y install qemu-guest-agent

yum -y install cloud-init

systemctl enable cloud-init-local.service
systemctl start cloud-init-local.service
systemctl enable cloud-init.service
systemctl start cloud-init.service
systemctl enable cloud-config.service
systemctl start cloud-config.service
systemctl enable cloud-final.service
systemctl start cloud-final.service

cloud-init init --local  #检查是否可用

 配置完成后关机,删除硬件网卡,添加 Cloud-Init 硬件,然后转换为模板

 qm set 1003 --ide2 local-lvm:cloudinit

 

 

 

通过模板克隆新的虚机,自动配置IP,脚本如下:

#!/bin/bash
#Function:Clone 1 vm from template
host='10.10.20.11'
vmname='vmtest02'
cpu_cores=8
memory_size=16384
ip='10.10.26.21'
vlanid=26
description='description'

#get vm max id
pve_id_max=`qm list |awk '{print $1}' |tail -n 1`
pve_vm_id=`expr $pve_id_max + 1`

#get cpu cores every cpu socket
cpu_cores_1=`expr $cpu_cores / 2`
storage=`echo $host |awk -F . '{print "dir-"$4}'`
ip_netmask="$ip/24"
gateway=`echo $ip |awk -F . '{print $1"."$2"."$3".254"}'`
vm_hostname="$vmname-$ip"

#clone vm from template(100)
qm clone 100 $pve_vm_id --name $vmname --full --format qcow2 --storage $storage

#configure vm cpu cors and memory size
if [ $cpu_cores -ne 4 -a $memory_size -ne 8192 ];then
  qm set $pve_vm_id --memory $memory_size --sockets 2 --cores $cpu_cores_1
fi

#configure vm description
if [ $description ];then 
  qm set $pve_vm_id --description=$description
fi


qm set $pve_vm_id -net0  e1000,bridge=vmbr1,firewall=1,tag=$vlanid
qm set $pve_vm_id  --ipconfig0 ip=$ip_netmask,gw=$gateway

echo 'Start and init vm for about 5 minutes...'
#删除clould-init硬件,修改虚机名称
qm start $pve_vm_id
sleep 300
qm stop $pve_vm_id
sleep 2
qm set $pve_vm_id --delete ide2
sleep 2
qm set $pve_vm_id --name $vm_hostname
qm start $pve_vm_id