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 指令
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《深入理解Java虚拟机》笔记_第一遍 先取看完这本书(JVM)后必须掌握的部分。 第一部分 走近 Java 从传...
    xiaogmail阅读 5,198评论 1 34
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,792评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 留守儿童的确还是会有些许的不正常。从小到大和父母待的时间不超过2年,以前是看着人家有父母陪着,止不住的羡慕。现在是...
    九涩鹿阅读 361评论 0 0
  • 对于停工很久的设备而言,防锈是一项非常重要的工作。对于冶金起重机、门式起重机等起重机设备来说,久置的它们要如何进行...
    起重工厂店阅读 236评论 0 0