Woher kommt der Name "Standard" beim Starten einer Vagabundbox?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Gibt es eine Möglichkeit, dies einzustellen?
Woher kommt der Name "Standard" beim Starten einer Vagabundbox?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Gibt es eine Möglichkeit, dies einzustellen?
Antworten:
Ich fand die verschiedenen Optionen verwirrend und beschloss, alle zu testen, um genau zu sehen, was sie tun.
Ich verwende VirtualBox 4.2.16-r86992 und Vagrant 1.3.3.
Ich habe ein Verzeichnis namens erstellt nametest
und ausgeführt
vagrant init precise64 http://files.vagrantup.com/precise64.box
um eine Standard-Vagrant-Datei zu generieren. Dann öffnete ich die VirtualBox-GUI, damit ich sehen konnte, unter welchen Namen die von mir erstellten Felder angezeigt werden.
Standard Vagrantfile
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
Name der VirtualBox- Benutzeroberfläche : "nametest_default_1386347922"
Kommentare: Der Name hat standardmäßig das Format DIRECTORY_default_TIMESTAMP.
VM definieren
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "foohost"
end
Name der VirtualBox- Benutzeroberfläche : "nametest_foohost_1386347922"
Kommentare: Wenn Sie eine VM explizit definieren, ersetzt der verwendete Name das Token 'Standard'. Dies ist der Name vagrant Ausgaben auf der Konsole. Vereinfachung basierend auf zook
der Eingabe (Kommentator)
Stellen Sie den Anbieternamen ein
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
Name der VirtualBox- Benutzeroberfläche : "foohost"
Kommentare: Wenn Sie das name
Attribut in einem Anbieterkonfigurationsblock festlegen , wird dieser Name zum gesamten Namen, der in der VirtualBox-GUI angezeigt wird.
Kombiniertes Beispiel: Definieren Sie den VM-and-Set-Providernamen
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
Name der VirtualBox- Benutzeroberfläche : "barhost"
Kommentare: Wenn Sie beide Methoden gleichzeitig verwenden, name
gewinnt der im Anbieterkonfigurationsblock zugewiesene Wert . Vereinfachung basierend auf zook
der Eingabe (Kommentator)
Set hostname
(BONUS)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Kommentare: Hiermit wird der Hostname in der VM festgelegt. Dies wäre die Ausgabe des hostname
Befehls in der VM, und dies ist auch das, was in der Eingabeaufforderung angezeigt vagrant@<hostname>
wird. Hier sieht es so ausvagrant@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
Da ist es also. Sie kennen jetzt 3 verschiedene Optionen, die Sie einstellen können, und deren Auswirkungen. Ich denke, es ist an dieser Stelle eine Frage der Präferenz? (Ich bin neu bei Vagrant, daher kann ich noch nicht mit Best Practices sprechen.)
VBoxManage list vms
in der Befehlszeile verwendet werden.
define VM
Methodenname in Vagrant stdout und Protokollen verwendet wird, während der set provider name
Name für die Verwaltung der Box mit dem Anbieter verwendet wird. Beides ist also relevant.
do... end
Block nicht wirklich , wenn er leer ist. config.vm.define "foohost"
funktioniert gut.
Bringing machine 'default' up with 'virtualbox' provider...
wenn Sie ausführenvagrant up
Auf diese Weise habe ich einzelnen VMs Namen zugewiesen. Ändern Sie YOURNAMEHERE
Ihren gewünschten Namen.
Inhalt von 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
Terminalausgang:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
config.vm.define :app_name
funktioniert also auch einfach .
config.vm.define YOURNAMEHERE do |t| end
Wenn Sie etwas anderes als "Standard" ändern möchten, fügen Sie einfach diese zusätzlichen Zeilen zu Ihrer Vagrant-Datei hinzu:
config.vm.define "tendo" do |tendo|
end
Wobei "tendo" der Name ist, der anstelle der Standardeinstellung angezeigt wird
Ich gebe den Namen durch Definieren in der VagrantFile an und gebe auch den Hostnamen an, damit ich den Namen meines Projekts sehen kann, während ich Linux-Befehle unabhängig vom Betriebssystem meines Geräts ausführe. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
Ja, für Virtualbox-Anbieter gehen Sie wie folgt vor:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
indem ich sie wieder hochgefahren habe , wird sie immer noch als Standard bezeichnet.
Sie können den Standard-Computernamen ändern, indem Sie den Wert von ändern config.vm.define
.
Hier ist die einfache Vagrant-Datei, die getopts verwendet und es Ihnen ermöglicht, den Namen dynamisch zu ändern:
# -*- 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
Um einen anderen Namen zu verwenden, können Sie beispielsweise Folgendes ausführen:
vagrant --vm-name=my_name up --no-provision
Hinweis: Der --vm-name
Parameter muss vor dem up
Befehl angegeben werden.
oder:
VM_NAME=my_name vagrant up --no-provision
Falls viele Personen Ihre Vagabunddatei verwenden, möchten Sie den Namen möglicherweise dynamisch festlegen . Im Folgenden finden Sie ein Beispiel für die Verwendung des Benutzernamens Ihres HOST-Computers als Name der Box und des Hostnamens:
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