Раскрутите несколько ящиков Vagrant и SSH в них

У меня есть 3 бродячих коробки

vagrant box list

hashicorp/precise32 (virtualbox, 1.0.0)
hashicorp/precise64 (vmware_fusion, 1.1.0)
laravel/homestead   (virtualbox, 0.4.2)

когда я делаю vagrant up, а также vagrant sshЯ продолжал входить в hashicorp/precise32 машина.

Как мне раскрутить эти 3 коробки одновременно?

Как мне SSH в каждом из них?

3 ответа

Решение

бродячий до

раскрутит все бродячие ящики, которые вы перечислили в своем бродячем файле.

Тогда просто ssh в них - один за другим.

Вы можете включить все три машины в один и тот же vagrantfile и выполнить один vagrant внутри каталога, который вызовет все машины. Вот пример виртуальной коробки, вам, возможно, придется отредактировать это и добавить блок провайдера vmware, чтобы добавить свой компьютер laravel.

# -*- mode: ruby -*-

# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = '2'

# declare the machine config in a hash
HOST_CONFIG = { 
  'ubuntu_32' => 'hashicorp/precise32',
  'ubuntu_64' => 'hashicorp/previse64',
  'laravel' => 'laravel/homestead'
}

# create the vms
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  HOST_CONFIG.each do |hostname, basebox|
    config.vm.define hostname do |hname|
      hname.vm.box = basebox
      hname.vm.provider 'virtualbox' do |v|
        v.name = hostname
      end
    end
  end
end

После того, как машины работают, внутри одного и того же каталога вы можете использовать имена блоков, которые вы указали в хэше, для ssh в каждом блоке.

пример:

vagrant ssh ubuntu_32

перенесет вас в окно hashicorp/ точный32.

Важная часть в vagrantfile, которая позволяет вам использовать имя

config.vm.define hostname do |hname|

блок ниже прикрепляет имя к машине внутри virtualbox

 hname.vm.provider 'virtualbox' do |v|
    v.name = hostname
 end

Это присвоит данное имя подключенному компьютеру (vm). Чтобы заставить машину vmware получить имя, вам, вероятно, придется обернуть это внутри if-else

if hostname == 'ubuntu_64'
  hname.vm.provider 'vmware_fusion' do |v|
    v.name = hostname
  end
else
  hname.vm.provider 'virtualbox' do |v|
    v.name = hostname
  end
end

Сначала вы должны создать среды Vagrant для каждого из блоков в папке с тремя проектами:

vagrant init hashicorp/precise32
vagrant init hashicorp/previse64
vagrant init laravel/homestead

Теперь вы можете использовать vagrant up и vagrant ssh в папке проектов. Команда vagrant global-status покажет вам статус вашей машины.

Другие вопросы по тегам