Как изменить имя машины Vagrant 'default'?

откуда взялось название "default"при запуске окна vagrant?

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...

есть ли способ установить это?

7 ответов


я нашел несколько вариантов запутанными, поэтому я решил проверить их все, чтобы увидеть, что именно они делают.

я использую VirtualBox 4.2.16-r86992 и Vagrant 1.3.3.

я создал каталог с именем nametest и побежал

vagrant init precise64 http://files.vagrantup.com/precise64.box

для создания файла Vagrantfile по умолчанию. Затем я открыл графический интерфейс VirtualBox, чтобы увидеть, какие имена будут отображаться в созданных мной полях.

  1. по умолчанию Файл Vagrantfile

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

    имя GUI VirtualBox: "nametest_default_1386347922"

    комментарии: по умолчанию используется формат DIRECTORY_default_TIMESTAMP.

  2. определить 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
    

    имя GUI VirtualBox: "nametest_foohost_1386347922"

    комментарии: если вы явно определяете виртуальную машину, используемое имя заменяет маркер "по умолчанию". Это имя залетный выходы на консоли. Упрощение на основе zook's (комментатор) вход

  3. Установить Имя Поставщика

    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
    

    имя GUI VirtualBox: "foohost"

    комментарии: если вы выберите name атрибут в блоке конфигурации поставщика Это имя станет полным именем, отображаемым в GUI VirtualBox.

    в сочетании Пример: определите имя поставщика VM-and - Set

    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
    

    имя GUI VirtualBox: "barhost"

    комментарии: если вы используете оба метода одновременно, значение, присвоенное name в блоке конфигурации поставщика выигрывает. Упрощение на основе zook's (комментатор) вход

  4. Set hostname (бонус)

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

    комментарии: установка имени узла внутри виртуальной машины. Это будет результат hostname команда в виртуальной машине, а также это то, что видно в командной строке, как vagrant@<hostname>, вот это будет выглядеть как vagrant@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

так вот оно что. Теперь вы знаете 3 различных варианта, которые вы можете установить, и эффекты, которые они имеют. Полагаю, сейчас это вопрос предпочтения? (Я новичок в Vagrant, поэтому пока не могу говорить о лучших практиках.)


таким образом я назначил имена отдельным виртуальным машинам. Изменить YOURNAMEHERE по вашему усмотрению.

содержание 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

терминал вывода:

$ vagrant status
Current machine states:

YOURNAMEHERE             not created (virtualbox)

Если вы хотите изменить что-либо еще вместо "default", просто добавьте эти дополнительные строки в свой Vagrantfile:

измените имя basebox при использовании "статус бродяги"

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

где "tendo" будет именем, которое появится вместо default


Да, для поставщика Virtualbox сделайте что-то вроде этого:

Vagrant.configure("2") do |config|
    # ...other options...
    config.vm.provider "virtualbox" do |p|
        p.name = "something-else"
    end
end

вы можете изменить имя машины по умолчанию vagrant, изменив значение config.vm.define.

вот простой Vagrantfile, который использует команде getopts и позволяет динамически изменять имя:

# -*- 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

таким образом, чтобы использовать другое имя, вы можете запустить например:

vagrant --vm-name=my_name up --no-provision

Примечание:--vm-name параметр должен быть указан до


указать имя определение внутри VagrantFile а также указать хоста поэтому мне нравится видеть имя моего проекта при выполнении команд Linux независимо от ОС моего устройства. ✌️

config.vm.define "abc"
config.vm.hostname = "abc"

в случае, если есть много людей, использующих ваш файл vagrant-вы можете захотеть динамически задавать имя. Ниже приведен пример, как это сделать, используя имя пользователя хоста как имя поля и имя:

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