vagrant:我可以从多机设置中仅“vagrant up”一台机器吗

vagrant: can I `vagrant up` just one machine from multi-machine setup

我可以 vagrant up 多机设置中只有一台机器吗?

我怎么能有不同的开发设置,例如localtestproduction?我必须有不同的 Vagrantfile 吗?

示例Vagrantfile(取自多机文档页面)

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
  1. 要启动所需的机器,只需调用 vagrant up machine_name。 在您的配置中,它可能是 vagrant up web.

通过在机器配置中设置 autostart: false,您可以阻止机器在 vagrant up 调用中自动启动。更多关于 vagrant 多机配置 here.

2.There 有很多方法可以在 vagrant 中进行不同的设置。

一个。用不同的配置脚本定义不同的机器:

  config.vm.define "m1", autostart: false do |m1|
    m1.vm.provision "shell" do |s|
        s.path = "path_to/m1_provision_script.sh"
    end
  end 
  config.vm.define "m2", autostart: false do |m2|
    m2.vm.provision "shell" do |s|
        s.path = "path_to/m2_provision_script.sh"
    end
  end

b。提供不同的参数来配置脚本:

  config.vm.define "m1", autostart: false do |m1|
    m1.vm.provision "shell" do |s|
        s.path = "path_to/provision_script.sh"
        s.args = "machine_1"
    end
  end 
  config.vm.define "m2", autostart: false do |m2|
    m2.vm.provision "shell" do |s|
        s.path = "path_to/provision_script.sh"
        s.args = "machine_2"
    end
  end

c。如果您使用 puppet 作为供应商,您还可以定义自定义事实,它将指示机器是 localtest 还是 prod.