Proxmox自动生成模板脚本

#!/bin/bash
# 初始化参数
INIT_ARGS=$@
# 模板压缩包名称
TEMP_TAR_NAME="pve-template-new.tar.gz"
# 模板镜像名称
TEMP_ISO_NAME="vzdump-qemu-100-2021_07_28-00_00_00.vma.zst"
# 模板机名称
TEMP_NAME="static-tomcat"
# 导入模板编号
IMPORT_ID="120"
# 克隆模板编号
CLONE_ID="100"
# 模板镜像下载地址
TEMP_ISO_URL="http://xxx.xxx.xxx/pve/$TEMP_TAR_NAME"

# 1. 拷贝模板到服务器
echo "**** 下载模板镜像 ****"
cd /root
wget $TEMP_ISO_URL || (echo -e "\033[31m下载模板镜像出错\033[0m" && exit 1)
tar xf $TEMP_TAR_NAME -O > $TEMP_ISO_NAME

# 2. 导入模板
echo "**** 导入模板镜像 ****"
echo "qmrestore $TEMP_ISO_NAME $IMPORT_ID"
cd /root
qmrestore $TEMP_ISO_NAME $IMPORT_ID || (echo -e "\033[31m导入模板镜像出错\033[0m" && exit 1)

# 3. 模板克隆
echo "**** 克隆模板镜像 ****"
echo "qm clone $IMPORT_ID $CLONE_ID --name $TEMP_NAME"
qm clone $IMPORT_ID $CLONE_ID --name $TEMP_NAME || (echo -e "\033[31m克隆模板镜像出错\033[0m" && exit 1)

# 4. 启动克隆机器
echo "**** 启动克隆机器 ****"
echo "qm start $CLONE_ID"
qm start $CLONE_ID
time=0
while [ $time -lt 6 ]
do
	sleep 10
	qm guest exec $CLONE_ID ip 1>/dev/null 2>&1
	if [ $? == 0 ]
	then
		break
	else
		echo -e "\033[33m等待中。。。\033[0m"		
		let time++
		if [ $time == 6 ]
		then
			echo -e "\033[31m等待克隆机器启动超时\033[0m"
			exit 1
		fi
	fi
done

# 5. 修改克隆机器IP
echo "**** 修改克隆机器IP ****"
echo "qm guest exec $CLONE_ID /bin/bash /opt/shell/init.sh $INIT_ARGS"
qm guest exec $CLONE_ID /bin/bash /opt/shell/init.sh $INIT_ARGS || (echo -e "\033[31m修改克隆机器IP出错\033[0m" && exit 1)

# 6. 关闭克隆机器(这里不能使用qm stop可能会导致配置丢失)
echo "**** 关闭克隆机器 ****"
echo "qm shutdown $CLONE_ID"
qm shutdown $CLONE_ID || (echo -e "\033[31m关闭克隆机器出错\033[0m" && exit 1)

# 7. 克隆机器转化成模板
echo "**** 克隆机器转模板 ****"
echo "qm template $CLONE_ID"
qm template $CLONE_ID || (echo -e "\033[31m克隆机器转模板出错\033[0m" && exit 1)

# 8. 删除原模板
echo "**** 删除原模板 ****"
echo "qm destroy $IMPORT_ID"
qm destroy $IMPORT_ID || (echo -e "\033[31m删除原模板出错\033[0m" && exit 1)
rm -f $TEMP_TAR_NAME
rm -f $TEMP_ISO_NAME

echo -e "\033[32m****** 模板初始化完成 ******\033[0m"