Звідки походить назва "за замовчуванням" під час запуску бродячого вікна?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Чи є спосіб це встановити?
Звідки походить назва "за замовчуванням" під час запуску бродячого вікна?
$ 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 за замовчуванням. Потім я відкрив GUI 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
Ім'я GUI VirtualBox: "nametest_foohost_1386347922"
Коментарі: Якщо ви чітко визначаєте VM, ім'я, яке використовується, замінює маркер "за замовчуванням". Це ім'я бродячих виходів на консолі. Спрощення на основі zook
введення 's (commenter)
Встановити ім'я постачальника
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)
Набір hostname
(BONUS)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Коментарі: Це встановлює ім'я хоста всередині VM. Це було б результатом 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
Якщо ви хочете змінити що-небудь інше замість "за замовчуванням", просто додайте ці додаткові рядки у свій Vagrantfile:
config.vm.define "tendo" do |tendo|
end
Де "tendo" буде ім'ям, яке з'явиться замість типового
Я вказую ім'я, визначаючи всередині 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