Откуда происходит название «default» при запуске бродячей коробки?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Есть ли способ установить это?
Откуда происходит название «default» при запуске бродячей коробки?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Есть ли способ установить это?
Ответы:
Несколько вариантов показались мне непонятными, поэтому я решил проверить все из них, чтобы точно узнать, что они делают.
Я использую VirtualBox 4.2.16-r86992 и Vagrant 1.3.3.
Я создал каталог с именем nametest
и побежал
vagrant init precise64 http://files.vagrantup.com/precise64.box
генерировать Vagrantfile по умолчанию. Затем я открыл графический интерфейс VirtualBox, чтобы увидеть, какие имена будут отображаться в ящиках, которые я создаю.
Vagrantfile по умолчанию
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
Имя графического интерфейса VirtualBox: "nametest_default_1386347922"
Комментарии: имя по умолчанию имеет формат DIRECTORY_default_TIMESTAMP.
Определить ВМ
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "foohost"
end
Имя графического интерфейса VirtualBox: "nametest_foohost_1386347922"
Комментарии: Если вы явно определяете виртуальную машину, используемое имя заменяет маркер «default». Это имя бродячих выходов на консоли. Упрощение на основе zook
ввода (комментатор)
Установить имя провайдера
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.provider :virtualbox do |vb|
vb.name = "foohost"
end
end
Название графического интерфейса VirtualBox: "foohost"
Комментарии: Если вы установите name
атрибут в блоке конфигурации провайдера, это имя станет полным именем, отображаемым в графическом интерфейсе VirtualBox.
Комбинированный пример: определение виртуальной машины и установка имени провайдера
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "foohost"
config.vm.provider :virtualbox do |vb|
vb.name = "barhost"
end
end
VirtualBox GUI Имя: "Бархост"
Комментарии: Если вы используете оба метода одновременно, значение, назначенное name
в блоке конфигурации провайдера, побеждает. Упрощение на основе zook
ввода (комментатор)
Set hostname
(БОНУС)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Комментарии: Устанавливает имя хоста внутри виртуальной машины. Это будет вывод hostname
команды в ВМ, а также то, что видно в приглашении vagrant@<hostname>
, здесь это будет выглядетьvagrant@buzbar
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.hostname = "buzbar"
config.vm.define "foohost"
config.vm.provider :virtualbox do |vb|
vb.name = "barhost"
end
end
Так и есть. Теперь вы знаете 3 различных варианта, которые вы можете установить, и их эффекты. Я полагаю, это вопрос предпочтений на данный момент? (Я новичок в Vagrant, поэтому пока не могу говорить о лучших практиках.)
VBoxManage list vms
в командной строке.
define VM
имя метода используется в стандартном выводе и журналах Vagrant, а set provider name
имя используется для управления коробкой с провайдером. Так что оба актуальны.
do... end
блок, если он пуст. config.vm.define "foohost"
работает просто отлично.
Bringing machine 'default' up with 'virtualbox' provider...
vagrant up
Именно так я назначил имена отдельным виртуальным машинам. Измените YOURNAMEHERE
на желаемое имя.
Содержимое Vagrantfile:
Vagrant.configure("2") do |config|
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "precise32"
# The url from where the 'config.vm.box' box will be fetched if it
# doesn't already exist on the user's system.
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.define :YOURNAMEHERE do |t|
end
end
Терминальный выход:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
config.vm.define :app_name
работает тоже.
config.vm.define YOURNAMEHERE do |t| end
Если вы хотите изменить что-то еще вместо «default», просто добавьте эти дополнительные строки в ваш Vagrantfile:
config.vm.define "tendo" do |tendo|
end
Где «тендо» будет именем, которое будет отображаться вместо имени по умолчанию
Я определяю имя, определяя его внутри VagrantFile, а также задаю имя хоста, поэтому мне нравится видеть имя моего проекта, когда он выполняет команды Linux независимо от операционной системы моего устройства. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
Да, для провайдера Virtualbox сделайте что-то вроде этого:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
ее восстановление, она все еще называется по умолчанию.
Вы можете изменить имя машины по умолчанию, изменив значение config.vm.define
.
Вот простой Vagrantfile, который использует getopts и позволяет вам динамически менять имя:
# -*- mode: ruby -*-
require 'getoptlong'
opts = GetoptLong.new(
[ '--vm-name', GetoptLong::OPTIONAL_ARGUMENT ],
)
vm_name = ENV['VM_NAME'] || 'default'
begin
opts.each do |opt, arg|
case opt
when '--vm-name'
vm_name = arg
end
end
rescue
end
Vagrant.configure(2) do |config|
config.vm.define vm_name
config.vm.provider "virtualbox" do |vbox, override|
override.vm.box = "ubuntu/wily64"
# ...
end
# ...
end
Таким образом, чтобы использовать другое имя, вы можете запустить, например:
vagrant --vm-name=my_name up --no-provision
Примечание: --vm-name
параметр должен быть указан перед up
командой.
или:
VM_NAME=my_name vagrant up --no-provision
Если ваш бродячий файл используют многие люди, возможно, вы захотите установить имя динамически . Ниже приведен пример того, как это сделать, используя имя пользователя с вашего компьютера HOST в качестве имени поля и имени хоста:
require 'etc'
vagrant_name = "yourProjectName-" + Etc.getlogin
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.hostname = vagrant_name
config.vm.provider "virtualbox" do |v|
v.name = vagrant_name
end
end