如何使用 virtualbox 快速创建 100 个独特的 Ubuntu VM?

如何使用 virtualbox 快速创建 100 个独特的 Ubuntu VM?

我想通过命令行使用 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 中的一些巧妙的文本处理,可以轻松地将列表转换为配置部分。

相关内容