Как изменить имя машины Vagrant 'default'?
откуда взялось название "default"при запуске окна vagrant?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
есть ли способ установить это?
7 ответов
я нашел несколько вариантов запутанными, поэтому я решил проверить их все, чтобы увидеть, что именно они делают.
я использую 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
имя GUI VirtualBox: "nametest_default_1386347922"
комментарии: по умолчанию используется формат DIRECTORY_default_TIMESTAMP.
-
определить VM
Vagrant.configure('2') do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.define "foohost" end
имя GUI VirtualBox: "nametest_foohost_1386347922"
комментарии: если вы явно определяете виртуальную машину, используемое имя заменяет маркер "по умолчанию". Это имя залетный выходы на консоли. Упрощение на основе
zook
's (комментатор) вход -
Установить Имя Поставщика
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
имя GUI VirtualBox: "foohost"
комментарии: если вы выберите
name
атрибут в блоке конфигурации поставщика Это имя станет полным именем, отображаемым в GUI VirtualBox.в сочетании Пример: определите имя поставщика VM-and - Set
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
имя GUI VirtualBox: "barhost"
комментарии: если вы используете оба метода одновременно, значение, присвоенное
name
в блоке конфигурации поставщика выигрывает. Упрощение на основеzook
's (комментатор) вход -
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, поэтому пока не могу говорить о лучших практиках.)
таким образом я назначил имена отдельным виртуальным машинам. Изменить 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)
Если вы хотите изменить что-либо еще вместо "default", просто добавьте эти дополнительные строки в свой Vagrantfile:
измените имя basebox при использовании "статус бродяги"
config.vm.define "tendo" do |tendo|
end
где "tendo" будет именем, которое появится вместо default
Да, для поставщика Virtualbox сделайте что-то вроде этого:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
вы можете изменить имя машины по умолчанию vagrant, изменив значение 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
параметр должен быть указан до
указать имя определение внутри VagrantFile а также указать хоста поэтому мне нравится видеть имя моего проекта при выполнении команд Linux независимо от ОС моего устройства. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
в случае, если есть много людей, использующих ваш файл vagrant-вы можете захотеть динамически задавать имя. Ниже приведен пример, как это сделать, используя имя пользователя хоста как имя поля и имя:
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