我想通过命令行使用 virtualbox 创建 100 个 Ubuntu VM。每个 Ubuntu VM 都应具有自己唯一的 /etc/machine-id 值和网络适配器的唯一 mac 地址。有一个包含 100 个主机名(密码无关紧要)的文件,每个新的 Ubuntu VM 都应从此列表中分配一个名称。
如果我克隆 100 次现有 VM,则所有新克隆的 VM 都具有相同的 /etc/machine-id + 用户名 + mac 地址,并且我必须手动将所有内容更改为新的唯一地址 - 我不喜欢这样。
有任何想法吗?
答案1
.vbox
克隆并使用更改文件中的 ID sed
。例如,
sed -i -e "s/\(MACAddress=\"......\)....../\1$(openssl rand -hex 3)/" vm.vbox
sed -i -e "s/\(Machine uuid=\".........-....-....-....-\)............/\1$(openssl rand -hex 6)/" vm.vbox
您可以整理sed
并制作更完整的 UUID,但这是基本原则。为每个编写脚本.vbox
。
答案2
您可以使用 Vagrant 通过创建“多机”环境一次配置多台机器:https://www.vagrantup.com/docs/multi-machine
Vagrant 使用配置文件来定义环境和各个机器。添加其他机器很简单:
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: "echo Hello"
config.vm.define "web" do |web|
web.vm.box = "apache"
end
config.vm.define "db" do |db|
db.vm.box = "mysql"
end
end
通过 vscode 中的一些巧妙的文本处理,可以轻松地将列表转换为配置部分。