Как изменить имя машины Vagrant 'default'?
откуда взялось имя 'default' при запуске vagrant box?
$ 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
имя графического интерфейса 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
имя графического интерфейса VirtualBox: "nametest_foohost_1386347922"
комментарии: если вы явно определяете виртуальную машину, используемое имя заменяет токен "по умолчанию". Это имя залетный выходы на консоли. Упрощение на основе
zook
's (commenter) inputУстановить Имя Поставщика
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.в сочетании Пример: определить VM-и-установить имя поставщика
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: "barhost"
комментарии: если вы используете оба метода одновременно, значение, присвоенное
name
в блоке конфигурации поставщика выигрывает. Упрощение на основеzook
's (commenter) inputSet
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"
в случае, если есть много людей, использующих ваш бродячий файл - вы можете захотеть динамически задавать имя. Ниже приведен пример, как это сделать, используя имя пользователя хоста как имя поля и имя:
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