单个Vagrantfile中的两个操作系统

问题描述 投票:0回答:1

是否可以在单个Vagrantfile中运行两个不同的操作系统?当我拥有以下Vagrantfile时,它将创建为debain10,我确实想要一个centos8 一个debian10。这是我正在使用的(失败的)Vagrantfile:

#-*-mode:ruby-*-
#vi:setft=ruby:

VAGRANTFILE_API_VERSION="2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Configure the CentOS Machines.
  config.vm.box = "generic/centos8"
  config.ssh.insert_key = false
  config.vm.synced_folder ".", "/vagrant", disabled: true
  config.vm.provider :virtualbox do |v|
    v.memory = 512
    v.linked_clone = true
    v.customize ["modifyvm", :id, "--nested-hw-virt", "on"]
  end

  # Ideally this should be a centos8 machine
  config.vm.define "centos8-server" do |config|
    config.vm.hostname = "centos8-server"
    config.vm.network :private_network, ip: "192.168.20.100"
  end

  # Ideally this should be a debian10 machine
  config.vm.box = "generic/debian10"
  config.vm.define "debian10-server" do |config|
    config.vm.hostname = "debian10-server"
    config.vm.network :private_network, ip: "192.168.20.200"
  end

  config.vm.provision "shell" do |s|
    ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip
    s.inline = <<-SHELL
      echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys
      echo #{ssh_pub_key} >> ~vagrant/.ssh/authorized_keys
    SHELL
  end

end

我想要这样做的原因是,我需要针对一组CentOS和Debian机器测试一个简单的剧本。我不确定这是否可行,因为在文档中没有明确显示它不受支持。在此之前,我已经运行了两个Vagrantfile,但是我很想看看是否可以在单个文件中实现。

vagrant vagrantfile
1个回答
0
投票

将源框定义重新定位到单个机器块下。通过示例查看此处(仅显示它更容易)-如果您愿意,我写了一个可能要修改的简单示例:

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # box 1 - centos
  config.vm.define "centos" do |centos|
    centos.vm.box = "centos/7"
    centos.vm.hostname = "centos"
    centos.vm.network :private_network, ip: "192.168.75.10"
    # setting name of vm to inspect in virtualbox
    centos.vm.provider :virtualbox do |vb|
      vb.name = "centos"
    end
  # box 2 - ubuntu
  end
  config.vm.define "ubuntu" do |ubuntu|
    ubuntu.vm.box = "ubuntu/trusty64"
    ubuntu.vm.hostname = "ubuntu"
    ubuntu.vm.network :private_network, ip: "192.168.75.11"
    # setting name of vm to inspect in virtualbox
    ubuntu.vm.provider :virtualbox do |vb|
      vb.name = "ubuntu"
    end
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.