Jak zmienić "domyślną" nazwę maszyny?

Skąd pochodzi nazwa 'default' podczas uruchamiania skrzyni vagrant?

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Czy jest jakiś sposób, aby to ustawić?
Author: kenorb, 2013-07-24

7 answers

Okazało się, że wiele opcji jest mylących, więc postanowiłem przetestować je wszystkie, aby zobaczyć, co dokładnie 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

Aby wygenerować domyślny plik Vagrantfile. Następnie otworzyłem interfejs graficzny VirtualBox, aby zobaczyć, jakie nazwy pudełka, które tworzę, pojawią się jako.

  1. Default Vagrantfile

    Vagrant.configure('2') do |config|
        config.vm.box = "precise64"
        config.vm.box_url = "http://files.vagrantup.com/precise64.box"
    end
    

    Nazwa interfejsu graficznego VirtualBox: "nametest_default_1386347922"

    Komentarze: nazwa domyślna to format DIRECTORY_default_TIMESTAMP.

  2. Define VM

    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 Nazwa: "nametest_foohost_1386347922"

    Komentarze: jeśli jawnie zdefiniujesz maszynę wirtualną, użyta nazwa zastępuje token "domyślny". To jest nazwavagrant wyjścia na konsoli. Uproszczenie na podstawie zook'S (commenter) input

  3. Zestaw Nazwa 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
    

    VirtualBox GUI Nazwa: "foohost"

    Komentarze: Jeśli ustawisz atrybut name w bloku konfiguracji dostawcy, nazwa ta stanie się całą nazwą wyświetlaną w interfejsie graficznym VirtualBox.

    przykład łączony: Define VM - and-Set Provider Name

    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 Nazwa: "barhost"

    Komentarze: Jeśli używasz obu metod jednocześnie, wartość przypisany do name w bloku konfiguracji dostawcy wygrywa. Uproszczenie na podstawie zook'S (commenter) input

  4. Set hostname (BONUS)

    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
      config.vm.hostname = "buzbar"
    end
    

    Komentarze: ustawia nazwę hosta wewnątrz maszyny wirtualnej. Będzie to wynik polecenia hostname W maszynie wirtualnej, a także to, co jest widoczne w wierszu zachęty, jak vagrant@<hostname>, tutaj będzie wyglądać vagrant@buzbar

Kod Końcowy

    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

No i proszę. Teraz znasz 3 różne opcje, które możesz set i efekty jakie mają. To chyba kwestia preferencji? (Jestem nowy w Vagrant, więc nie mogę jeszcze rozmawiać z najlepszymi praktykami.)
 360
Author: odigity,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-14 12:11:50

W ten sposób przypisałem nazwy poszczególnym maszynom wirtualnym. Zmień YOURNAMEHERE na żądaną nazwę.

Zawartość 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 terminala:

$ vagrant status
Current machine states:

YOURNAMEHERE             not created (virtualbox)
 60
Author: nikhil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-25 17:06:11

Jeśli chcesz zmienić cokolwiek innego zamiast 'default', dodaj te dodatkowe linie do swojego pliku Vagrantfile:

Zmień nazwę baseboxa, gdy używasz "Vagrant status"

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

Gdzie "tendo" będzie nazwą, która pojawi się zamiast domyślnej

 17
Author: Arbab Nazar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-12 07:38:00

Określam nazwę przez definiując wewnątrz VagrantFile, a także określam nazwę hosta, więc cieszę się, że widzę nazwę mojego projektu podczas wykonywania poleceń Linuksa niezależnie od systemu operacyjnego mojego urządzenia. ✌️

config.vm.define "abc"
config.vm.hostname = "abc"
 15
Author: muratgozel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-30 11:13:18

Tak, dla dostawcy Virtualbox zrób coś takiego:

Vagrant.configure("2") do |config|
    # ...other options...
    config.vm.provider "virtualbox" do |p|
        p.name = "something-else"
    end
end
 6
Author: cmur2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-24 22:45:20

Możesz zmienić domyślną nazwę maszyny Vagrant zmieniając wartość config.vm.define.

Oto prosty plik Vagrantfile, który używa 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: przed poleceniem up Należy podać parametr --vm-name.

Lub:

VM_NAME=my_name vagrant up --no-provision
 6
Author: kenorb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-07 08:59:02

W przypadku, gdy jest wiele osób używających Twojego pliku vagrant - możesz chcieć ustawić dynamicznie nazwę. Poniżej znajduje się przykład jak to zrobić używając nazwy użytkownika z komputera HOST jako nazwy pola 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
 2
Author: Anton Sluchak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-04 07:10:10