VirtualBox 虚拟机批量克隆

  • 虽然在virtual box中可以选中虚拟机,右键克隆,但是如果一下要复制多个虚拟机的话,还是有点麻烦
  • 下面使用python与VBoxManage.exe进行复制虚拟机
  • 准备工作
    • 将VirtualBox的安装目录加入到windows的系统环境变量里,比如我的VirtualBox安装在C:\Program Files\Oracle\VirtualBox,那么将该路径添加到系统环境变量Path中,当然,你不添加到系统环境变量里,直接使用VBoxManage.exe的全路径也可以,但是推荐添加到Path中,省的写一堆的路径
  • 代码思路
    • 一个csv配置文件,配置要克隆的虚拟机名称和克隆后的虚拟机名称
    • 使用python执行VBoxManager的命令,将虚拟机完全复制
    • 我这么干完全是因为在学某些框架的集群的时候,要一堆的虚拟机,如果使用Vbox的克隆功能,得逐个操作
  • csv 文件
# centos192.168.10.215 是已有的虚拟机名称
# hadoop1.21_192.168.10.215 是给克隆出来的虚拟机名称
centos192.168.10.215,hadoop1.21_192.168.10.215
  • python 代码
import os
import csv


def read(file):
    config_ = []
    with open(file, encoding='utf8') as f:
        f_csv = csv.reader(f)
        # headers = next(f_csv)
        for row in f_csv:
            config_.append(row)
    return config_

# 更改虚拟介质大小VBoxManage modifyhd windowsxp-disk.vdi --resize 40000
# 克隆虚拟机介质VBoxManage clonehd <空格> 虚拟机硬盘路径 <空格> 生成的新虚拟机硬盘路径

# http://11623520.blog.163.com/blog/static/1977961201339113714444/
# 创建虚拟机VBoxManage createvm --name "pde" --ostype "Debian_64" --register --basefolder /home/hto/data/vmos/
# 创建虚拟磁盘 vboxmanage createhd --filename "/data/vbox/ubuntu/system.vdi" --size 40000
# 设置内存和网卡模式 VBoxManage modifyvm "pde" --memory 1024 --acpi on  --nic1 bridged
# 设置ide通道 vboxmanage storagectl "ubuntu" --name "IDE Controller" --add ide --bootable on
# 将磁盘挂载到ide通道 vboxmanage storageattach "ubuntu" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium "/data/vbox/ubuntu/system.vdi"
# 将iso文件挂载到ide接口 vboxmanage storageattach "ubuntu" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /data/share/systemiso/ubuntu-10.04-server-i386.iso
# C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonevm centos192.168.10.215 --mode all --name centoscopy --register
def clone_vm(clone_str):
    os.system(clone_str)
vbox_manager_path = "VBoxManage"
read = read("./vbox.csv")
# 查看VirtualBox的安装路径是否添加到PATH中
getenv = os.getenv("PATH")
print(getenv)
for r in read:
    clone_str =vbox_manager_path + " clonevm " + r[0] + " --mode all --name " + r[1] + " --register"
    print(clone_str)
    os.system(clone_str)


exit(0)  
  • VBoxManage clonevm 虚拟机名称 --snapshot 该虚拟机快照名称 --options link --name 新的虚拟机名称 --register ,链接复制,上面的是完全复制,VBoxManage的Clonevm 指令

你可能感兴趣的:(VirtualBox 虚拟机批量克隆)