vagrant: могу ли я «бродить» только по одной машине из многомашинной установки

могу ли я vagrant up использовать только одну машину из многомашинной установки?

or

как я могу иметь разные настройки для разработки, например. local, test и production? у меня должны быть разные Vagrantfiles?

пример Vagrantfile (взято со страницы Multi-Machine Doc)

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

person Philipp Kyeck    schedule 18.02.2015    source источник


Ответы (1)


  1. Чтобы запустить нужную машину, просто позвоните vagrant up machine_name. В вашей конфигурации это может быть vagrant up web.

Установив autostart: false в конфигурации машины, вы заблокируете автозапуск машины в vagrant up вызове. Подробнее о конфигурации vagrant с несколькими компьютерами здесь.

2. Есть много способов иметь разные настройки в 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

б. Укажите другой параметр для сценария предоставления:

  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

в. Если вы используете марионетку в качестве поставщика, вы также можете определить пользовательский факт, который будет указывать, является ли машина local, test или prod.

person kkamilpl    schedule 18.02.2015