cd kvmvirtual/virtual_create/
ll
createvm.sh 脚本文件

解释createvm.sh
#获取传递的参数“help,autostart,address:,port:,name”
options=$(getopt -l "help,autostart,address:,port:,name:" -o "h:a:p:n:" -a -- "$@")
#检测有无对应参数,没有则退出
if [ $? -ne 0 ];then
exit 1404
fi
#设置成数组
eval set -- "${options}"
#死循环:对“h:a:p:n”依次调用后,移位到没有参数的选项,检测不到参数后break退出
while true;do
case $1 in
-h|--help)
echo -e ${HELPINFO}
exit 0
;;
-a|--address)
ping -c3 $2 &>/dev/null
if [ $? -eq 0 ];then
echo "$2 该地址好像在网络中的另外一台终端中正在使用, 请尝试其他IP地址"
exit 1403
fi
NEW_MACHINES_ADDRESS=$2
;;
-p|--port)
ss -anptu | grep ":$2" &>/dev/null
if [ $? -eq 0 ];then
echo "$2 该端口正在使用中, 请更换端口继续"
exit 2403
fi
NEW_MACHINES_VNC=$2
;;
-n|--name)
virsh list --all | grep $2 &>/dev/null
if [ $? -eq 0 ];then
echo "$2 虚拟机已经存在, 请更换其他虚拟机名字"
exit 3403
fi
NEW_MACHINES_NAME=$2
;;
--)
shift
break
;;
esac
shift
done
#位置变量
VM_CONFIG_PATH="/etc/libvirt/qemu"
VM_IMAGE_PATH="/kvm/vdisks"
VM_IMAGE_MODIFY_PATH="/kvm/modify"
TEMPLATE_IMAGE_NAME="template.raw"
TEMPLATE_CONFIG_NAME="template.xml"
# 修改IP地址
qemu-img create -f qcow2 -b ${VM_IMAGE_PATH}/${TEMPLATE_IMAGE_NAME} ${VM_IMAGE_PATH}/${NEW_MACHINES_NAME}.qcow2
guestmount -a ${VM_IMAGE_PATH}/${NEW_MACHINES_NAME}.qcow2 -m /dev/centos/root ${VM_IMAGE_MODIFY_PATH}
sed -ri "s/^IPADDR.*/IPADDR=${NEW_MACHINES_ADDRESS}/" ${VM_IMAGE_MODIFY_PATH}/etc/sysconfig/network-scripts/ifcfg-eth0
sed -ri "s/template/${NEW_MACHINES_NAME}/" ${VM_IMAGE_MODIFY_PATH}/etc/hostname
guestunmount ${VM_IMAGE_MODIFY_PATH}
# 构建配置文件
cp ${VM_CONFIG_PATH}/{${TEMPLATE_CONFIG_NAME},${NEW_MACHINES_NAME}.xml}
sed -ri "s/NAME/${NEW_MACHINES_NAME}/" ${VM_CONFIG_PATH}/${NEW_MACHINES_NAME}.xml
sed -ri "s/VNCPORT/${NEW_MACHINES_VNC}/" ${VM_CONFIG_PATH}/${NEW_MACHINES_NAME}.xml
virsh define ${VM_CONFIG_PATH}/${NEW_MACHINES_NAME}.xml
virsh start ${NEW_MACHINES_NAME}
脚本中需准备test-createvm.qcow2,test-createvm.xml文件
TEMPLATE_IMAGE_NAME="template.raw"
TEMPLATE_CONFIG_NAME="template.xml"
#TEMPLATE_IMAGE_NAME="test-createvm.qcow2"
#TEMPLATE_CONFIG_NAME="test-createvm.xml"
cp /kvm/vdisks/{test-nat-network2.qcow2,test-createvm.qcow2}
cp /etc/libvirt/qemu/{test-nat-network.xml,test-createvm.xml}
可执行文件添加到命令
[root@localhost virtual_create]# cp createvm.sh /usr/local/bin/createvm
[root@localhost virtual_create]# chmod a+x /usr/local/bin/createvm
[root@localhost virtual_create]# createvm --help
用法: createvm [hapn]...
Create a virtual machine and create a fixed
IP address, vnc port, virtual machine name
-h, --help 获取帮助信息
-a, --address 设置IP地址
-p, --port 设置vnc端口
-n, --name 设置虚拟机名称
退出状态:
0 正常
1404 一般问题 (例如:没有对应的选项)
x403 严重问题 (例如:设置参数不正确)
去除唯一标识
vim /etc/libvirt/qemu/test-createvm.xml
NAME
uuid //删除,自动生成
mac //删除,自动生成
port=VNCPORT //port 自动获取
利用createvm脚本创建虚拟机
createvm -a 192.168.19.111 -p 5903 -n test-createvm-01

