启动多个 Vagrant box 并通过 SSH 连接到它们
Spin up multiple Vagrant boxes and SSH into them
我有 3 个 vagrant boxes
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 连接到它们中的每一个?
首先,您必须为三个项目文件夹中的每个框创建 Vagrant 环境:
vagrant init hashicorp/precise32
vagrant init hashicorp/previse64
vagrant init laravel/homestead
现在您可以在项目文件夹中使用 vagrant up 和 vagrant ssh。命令 vagrant global-status 显示你机器的状态。
流浪起来
将启动您在 Vagrantfile.
中列出的所有 vagrant boxes
然后,简单地 ssh
放入它们 - 一个接一个。
您可以将所有三台机器都包含在同一个 vagrantfile 中,并在目录中执行一个 vagrant up 操作,这将调出所有机器。这是一个 virtualbox 示例,您可能需要编辑它并添加一个 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
我有 3 个 vagrant boxes
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 连接到它们中的每一个?
首先,您必须为三个项目文件夹中的每个框创建 Vagrant 环境:
vagrant init hashicorp/precise32
vagrant init hashicorp/previse64
vagrant init laravel/homestead
现在您可以在项目文件夹中使用 vagrant up 和 vagrant ssh。命令 vagrant global-status 显示你机器的状态。
流浪起来
将启动您在 Vagrantfile.
中列出的所有 vagrant boxes然后,简单地 ssh
放入它们 - 一个接一个。
您可以将所有三台机器都包含在同一个 vagrantfile 中,并在目录中执行一个 vagrant up 操作,这将调出所有机器。这是一个 virtualbox 示例,您可能需要编辑它并添加一个 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