将虚机从vcenter导入到pve
  LZgegZagYcYq 2023年11月19日 28 0

 

#!/bin/bash
#脚本用来将vmware虚机通过ovftool导出到pve宿主机,然后再将其导入pve,可以设置pve虚机名称、OS类型、添加网卡配置mac地址,修改磁盘scsi改为ide,如果虚机之前在vmware中是开机状态,则将其开机

vms_path='/data1/scripts/vms.txt'   #vm csv
vms_ovf_path='/mnt/pve/dir-116/tmp_ovfbak/'   #vm ovf path

vc_username='la%40yx.dd'
vc_password='password'
pve_storage='dir-116'   #pve storage
#pve_vm_id=107   #pve vm id from

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

for line in $(cat $vms_path)
  do

    #export vmware vm to ovf
    vmname=`echo $line |awk -F , '{print $1}'`
    vmmac=`echo $line |awk -F , '{print $2}'`
    vlan=`echo $line |awk -F , '{print $3}'`
    vlanid=`echo $vlan | sed 's/VLAN//g'`
    os=`echo $line |awk -F , '{print $4}'`
    status=`echo $line |awk -F , '{print $5}'`
    description=`echo $line |awk -F , '{print $7}'`
    echo "exporting $vmname ..."
    /root/vmware-ovftool/ovftool  --noSSLVerify -dm=thin  --powerOffSource  vi://$vc_username:$vc_password@10.10.200.200/SH/vm/$vmname $vms_ovf_path
    sleep 2

    #import ovf vm to pve
    qm importovf $pve_vm_id $vms_ovf_path/$vmname/$vmname.ovf $pve_storage --format qcow2 
    sleep 2

    #configure netcard with mac and vlan id
    echo "Configuring vm name,mac,disk..."
    echo "pve vm id is: $pve_vm_id , mac is $vmmac , vlan id is $vlanid"
    vmname_new=`echo $vmname | sed 's/_/-/g'`
    qm set $pve_vm_id --name $vmname_new

    if [ $des ];then  
      qm set $pve_vm_id --description=$description
    fi

    qm set $pve_vm_id -net0  e1000=$vmmac,bridge=vmbr1,firewall=1,tag=$vlanid

    #configure vm os type
    os_windows=`echo $os |grep -i windows |wc -l`
    if [ $os_windows -eq 1 ];then
      qm set $pve_vm_id --ostype=win11
    else
      qm set $pve_vm_id --ostype=l26
    fi

    #change disk scsi to ide
    disk_num=`qm config $pve_vm_id |grep scsi |grep -v 'order=' |wc -l`
    if [ $disk_num -gt 0 ];then
      echo "find $disk_num disks with $vmname_new"
      for ((i=0;i<$disk_num;i++))
      do
        echo "changing disk $i scsi to ide..."
        scsi_id="scsi$i"
        qm set $pve_vm_id --delete $scsi_id  #dispatch scsi disk
        sleep 1
        disk_unused=`qm config $pve_vm_id |grep unused0 |awk '{print $2}'` #discover unused disk
        echo $disk_unused
        sleep 1
        qm set $pve_vm_id -ide$i $disk_unused #add unused disk to vm
      done
    #elif [ $disk_num -eq 1 ];then
    #  qm set $pve_vm_id --delete scsi0
    #  sleep 1
    #  disk_unused=`qm config 107 |grep unused0 |awk '{print $2}'`
    #  sleep 1
    #  qm set $pve_vm_id -ide0 $disk_unused
    else
      echo "Not find scsi disk with $vmname_new"
    fi
    sleep 2

    #check if start the vm
    if [ $status = 'PoweredOn' ];then
      echo "starting $vmname_new..."
      qm start $pve_vm_id
    fi

    pve_vm_id=`expr $pve_vm_id + 1`
    sleep 30
  done

cat vms.txt,内容如下:

虚机名称,虚机MAC,VLAN,OSid,虚机状态,宿主机IP,虚机备注

Dev-mq01_10.10.20.11,00:51:56:bf:cf:87,VLAN26,centos7_64Guest,PoweredOn,10.10.2.13,vm description
Dev-mq03_10.10.26.19,00:51:56:bf:13:6b,VLAN26,centos7_64Guest,PoweredOn,10.10.2.12,vm description

 

====================================================================================

qm命令参考:http://lihuaxi.xjx100.cn/news/1239580.html?action=onClick

qm list #查看虚机列表

qm config vmid #查看单个虚机信息

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
LZgegZagYcYq