风起漂泊 发表于 2018-8-24 08:45:51

使用shell一键克隆虚拟机

  说明:此脚本是通过快照技术快速的一键克隆虚拟机,脚本只限于CentOS和Redhat。
  输入数字后会创建一个以标号标识的虚拟机。
  代码如下:
  #!/bin/bash
  # exit code:
  #    65 -> user input nothing
  #    66 -> user input is not a number
  #    67 -> user input out of range
  #    68 -> vm disk image exists
  IMG_DIR=/var/lib/libvirt/images
  BASEVM=rh7_template
  ###BASEVM为后端的img文件名,此文件名根据自己需求更改!!!
  ROOM=sed-n "1p" /etc/hostname |sed -r 's/(room)({1,})(.*)/\2/'
  if [ $ROOM -le 9 ];then
  ROOM=0$ROOM
  fi
  IP=sed-n "1p" /etc/hostname |   sed -r 's/(.*)(+)(.*)/\2/'
  read -p "Enter VM number: " VMNUM
  if [ $VMNUM -le 9 ];then
  VMNUM=0$VMNUM
  fi
  if [ -z "${VMNUM}" ]; then
  echo "You must input a number."
  exit 65
  elif [ $(echo ${VMNUM}*1 | bc) = 0 ]; then
  echo "You must input a number."
  exit 66
  elif [ ${VMNUM} -lt 1 -o ${VMNUM} -gt 99 ]; then
  echo "Input out of range"
  exit 67
  fi
  NEWVM=rh7_node${VMNUM}
  if [ -e $IMG_DIR/${NEWVM}.img ]; then
  echo "File exists."
  exit 68
  fi
  echo -en "Creating Virtual Machine disk image......\t"
  qemu-img create -f qcow2 -b $IMG_DIR/.${BASEVM}.img $IMG_DIR/${NEWVM}.img &> /dev/null
  echo -e "\e\e[0m"
  #virsh dumpxml ${BASEVM} > /tmp/myvm.xml
  cat /var/lib/libvirt/images/.rhel7.xml > /tmp/myvm.xml
  ###rhel7.xml此文件需要存在!!!
  sed -i "/${BASEVM}/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
  sed -i "/uuid/s/.*/$(uuidgen)/" /tmp/myvm.xml
  sed -i "/${BASEVM}.img/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
  sed -i "/mac /s/a1/${ROOM}/" /tmp/myvm.xml
  sed -i "/mac /s/a2/${IP}/" /tmp/myvm.xml
  sed -i "/mac /s/a3/${VMNUM}/" /tmp/myvm.xml
  sed -i "/mac /s/b1/${ROOM}/" /tmp/myvm.xml
  sed -i "/mac /s/b2/${IP}/" /tmp/myvm.xml
  sed -i "/mac /s/b3/${VMNUM}/" /tmp/myvm.xml
  sed -i "/mac /s/c1/${ROOM}/" /tmp/myvm.xml
  sed -i "/mac /s/c2/${IP}/" /tmp/myvm.xml
  sed -i "/mac /s/c3/${VMNUM}/" /tmp/myvm.xml
  sed -i "/mac /s/d1/${ROOM}/" /tmp/myvm.xml
  sed -i "/mac /s/d2/${IP}/" /tmp/myvm.xml
  sed -i "/mac /s/d3/${VMNUM}/" /tmp/myvm.xml
  echo -en "Defining new virtual machine......\t\t"
  virsh define /tmp/myvm.xml &> /dev/null
  echo -e "\e\e[0m"

页: [1]
查看完整版本: 使用shell一键克隆虚拟机