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 nametestund 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 zookder 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 nameAttribut 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, namegewinnt der im Anbieterkonfigurationsblock zugewiesene Wert . Vereinfachung basierend auf zookder 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 hostnameBefehls 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 vmsin der Befehlszeile verwendet werden.
define VMMethodenname in Vagrant stdout und Protokollen verwendet wird, während der set provider nameName für die Verwaltung der Box mit dem Anbieter verwendet wird. Beides ist also relevant.
do... endBlock 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 YOURNAMEHEREIhren 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_namefunktioniert 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 destroyindem 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-nameParameter muss vor dem upBefehl 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