it-swarm.com.de

Wie ändert man den Vagrant-Standardnamen?

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?

203
Kyle Kelley

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.

  1. 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.

  2. 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)

  3. 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)

  4. 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.

Final Code

    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.)

313
odigity

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)
57
nikhil

Wenn Sie anstelle von 'default' etwas anderes ändern möchten, fügen Sie Ihrer Vagrantfile einfach diese zusätzlichen Zeilen hinzu:

Ändern Sie den Namen der Basebox, wenn Sie "vagrant status" verwenden.

 config.vm.define "tendo" do |tendo|
  end

Wobei "tendo" der Name ist, der anstelle von default angezeigt wird

15
Arbab Nazar

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
5
cmur2

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"
4
muratgozel

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
3
kenorb

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
0
Anton Sluchak