将多个Vagrant盒子和SSH连接到它们中

时间:2016-08-11 17:54:41

标签: vagrant vagrantfile

我有3个流浪盒

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

当我vagrant upvagrant ssh时,我一直登录hashicorp/precise32机器。

如何同时旋转这3个盒子?

如何通过SSH连接到每个人?

3 个答案:

答案 0 :(得分:0)

首先,您必须为三个项目文件夹中的每个框创建Vagrant环境:

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

现在,您可以在项目文件夹中使用 vagrant up vagrant ssh 。命令 vagrant global-status 显示您的机器状态。

答案 1 :(得分:0)

流浪汉

会启动您在 Vagrantfile 中列出的所有流浪盒。

然后,只需简单地ssh进入它们 - 一个接一个。

答案 2 :(得分:0)

您可以将所有三台计算机都包含在同一个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 / precise32框。

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