Skąd bierze się nazwa „domyślna” podczas uruchamiania włóczęgi?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Czy istnieje sposób, aby to ustawić?
Skąd bierze się nazwa „domyślna” podczas uruchamiania włóczęgi?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Czy istnieje sposób, aby to ustawić?
Odpowiedzi:
Stwierdziłem, że wiele opcji jest mylących, więc postanowiłem przetestować je wszystkie, aby zobaczyć dokładnie, co robią.
Używam VirtualBox 4.2.16-r86992 i Vagrant 1.3.3.
Utworzyłem katalog o nazwie nametest
i uruchomiłem
vagrant init precise64 http://files.vagrantup.com/precise64.box
wygenerować domyślny plik Vagrantfile. Następnie otworzyłem GUI VirtualBox, aby zobaczyć, jakie nazwy będą tworzyć pola, które utworzę.
Domyślny plik Vagrantfile
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
Nazwa GUI VirtualBox: „nametest_default_1386347922”
Komentarze: Domyślna nazwa to format DIRECTORY_default_TIMESTAMP.
Zdefiniuj maszynę wirtualną
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "foohost"
end
Nazwa GUI VirtualBox: „nametest_foohost_1386347922”
Komentarze: Jeśli jawnie zdefiniujesz maszynę wirtualną, zastosowana nazwa zastępuje token „default”. Jest to nazwa błędnych wyników na konsoli. Uproszczenie na podstawie zook
danych wejściowych (komentujących)
Ustaw nazwę dostawcy
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
Nazwa GUI VirtualBox: „foohost”
Komentarze: Jeśli ustawisz name
atrybut w bloku konfiguracji dostawcy, nazwa ta stanie się całą nazwą wyświetlaną w GUI VirtualBox.
Połączony przykład: Zdefiniuj maszynę wirtualną i ustaw nazwę dostawcy
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
Nazwa GUI VirtualBox: „barhost”
Komentarze: Jeśli używasz obu metod jednocześnie, wartość przypisana name
w bloku konfiguracji dostawcy wygrywa. Uproszczenie na podstawie zook
danych wejściowych (komentujących)
Zestaw hostname
(BONUS)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Komentarze: Ustawia nazwę hosta w maszynie wirtualnej. To będzie wynik hostname
polecenia w maszynie wirtualnej, a także to, co jest widoczne w wierszu polecenia vagrant@<hostname>
, tutaj będzie wyglądać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
Tak więc jest. Teraz znasz 3 różne opcje, które możesz ustawić, i ich efekty. Myślę, że w tym momencie jest to kwestia preferencji? (Jestem nowy w Vagrant, więc nie mogę jeszcze mówić o najlepszych praktykach.)
VBoxManage list vms
w wierszu polecenia.
define VM
nazwa metody jest używana w Vagrant stdout i logach, natomiast set provider name
nazwa służy do zarządzania polem z dostawcą. Więc oba są istotne.
do... end
bloku, jeśli jest pusty. config.vm.define "foohost"
działa dobrze.
Bringing machine 'default' up with 'virtualbox' provider...
po wykonaniuvagrant up
W ten sposób przypisałem nazwy do poszczególnych maszyn wirtualnych. Zmień YOURNAMEHERE
na żądane imię.
Zawartość pliku 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
Wyjście końcowe:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
config.vm.define :app_name
działa.
config.vm.define YOURNAMEHERE do |t| end
Jeśli chcesz zmienić cokolwiek innego zamiast „domyślnego”, po prostu dodaj te dodatkowe wiersze do pliku Vagrantfile:
config.vm.define "tendo" do |tendo|
end
Gdzie „tendo” będzie nazwą, która pojawi się zamiast domyślnej
Podaję nazwę, definiując wewnątrz pliku VagrantFile, a także nazwę hosta, więc cieszę się, widząc nazwę mojego projektu podczas wykonywania poleceń Linuksa niezależnie od systemu operacyjnego mojego urządzenia. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
Tak, dla dostawcy Virtualbox wykonaj coś takiego:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
a następnie przywróceniu go, nadal nazywa się domyślnym.
Możesz zmienić domyślną nazwę maszyny, zmieniając wartość config.vm.define
.
Oto prosty plik Vagrantfile, który wykorzystuje getopts i pozwala dynamicznie zmieniać nazwę:
# -*- 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
Aby użyć innej nazwy, możesz uruchomić na przykład:
vagrant --vm-name=my_name up --no-provision
Uwaga: --vm-name
parametr należy podać przed up
poleceniem.
lub:
VM_NAME=my_name vagrant up --no-provision
W przypadku, gdy wiele osób korzysta z twojego błędnego pliku - możesz ustawić nazwę dynamicznie . Poniżej znajduje się przykład, jak to zrobić, używając nazwy użytkownika z komputera HOST jako nazwy skrzynki i nazwy hosta:
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