Woher kommt der Name "default", wenn eine Vagrantbox gestartet wird?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Gibt es eine Möglichkeit, dies einzustellen?
Ich fand die vielfältigen 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 erstellte ein Verzeichnis namens nametest
und lief
vagrant init precise64 http://files.vagrantup.com/precise64.box
um eine Standard-Vagrantfile zu generieren. Dann öffnete ich die VirtualBox-GUI, damit ich sehen konnte, unter welchen Namen die Boxen erscheinen würden, die ich erstellt habe.
Standard-Vagrantfile
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
VirtualBox-GUI-Name: "nametest_default_1386347922"
Comments: 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
VirtualBox-GUI-Name: "nametest_foohost_1386347922"
Comments: Wenn Sie eine VM explizit definieren, ersetzt der verwendete Name das Token 'default'. Dies ist der Name vagrant output auf der Konsole. Vereinfachung basierend auf der Eingabe von zook
(Kommentator)
Legen Sie den Anbieternamen fest
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-GUI-Name: "foohost"
Comments: Wenn Sie das Attribut name
in einem Provider-Konfigurationsblock festlegen, wird dieser Name zum gesamten Namen, der in der VirtualBox-GUI angezeigt wird.
Kombiniertes Beispiel:Definieren Sie VM -und- Legen Sie den Anbieternamen fest
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-GUI-Name: "barhost"
Comments: Wenn Sie beide Methoden gleichzeitig verwenden, gewinnt der im Konfigurationsblock des Providers name
zugewiesene Wert. Vereinfachung basierend auf der Eingabe von zook
(Kommentator)
Setze hostname
(BONUS)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Comments: Hiermit wird der Hostname in der VM festgelegt. Dies wäre die Ausgabe des Befehls hostname
in der VM. Dies ist auch das, was in der Eingabeaufforderung wie [email protected]<hostname>
sichtbar ist. Hier wird es wie [email protected]
aussehen.
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
Also da ist es. Sie kennen jetzt 3 verschiedene Optionen und deren Effekte. Ich denke, es ist eine Frage der Präferenz an diesem Punkt? (Ich bin neu bei Vagrant, daher kann ich noch nicht mit Best Practices sprechen.)
Auf diese Weise habe ich einzelnen VMs Namen zugewiesen. Ändern Sie YOURNAMEHERE
in 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)
Wenn Sie anstelle von 'default' etwas anderes ändern möchten, fügen Sie Ihrer Vagrantfile einfach diese zusätzlichen Zeilen hinzu:
config.vm.define "tendo" do |tendo|
end
Wobei "tendo" der Name ist, der anstelle von default angezeigt wird
Ja, für Virtualbox-Anbieter ist Folgendes zu tun:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
Ich gebe den Namen durch Definieren innerhalb der VagrantFile und auch den Hostnamen an. Ich genieße es, den Namen meines Projekts zu sehen, während ich Linux-Befehle unabhängig vom Betriebssystem meines Geräts ausführt. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
Sie können den Standardnamen des Vagabund-Computers ändern, indem Sie den Wert von config.vm.define
ändern.
Hier ist das einfache Vagrantfile, das getopts verwendet und den Namen dynamisch ändern kann:
# -*- 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 Parameter --vm-name
muss vor dem Befehl up
angegeben werden.
oder:
VM_NAME=my_name vagrant up --no-provision
Falls es viele Leute gibt, die Ihre Vagrant-Datei verwenden - möchten Sie vielleicht den Namen dynamisch einstellen . Das folgende Beispiel zeigt, wie Sie den Benutzernamen Ihres Host-Computers als Namen der Box und des Hostnamens verwenden:
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