Как изменить имя машины по умолчанию "по умолчанию"?

Откуда появляется имя "по умолчанию" при запуске брандмауэра?

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

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

Ответ 1

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

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

Я создал каталог под названием nametest и запустил

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

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

  • Default 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.

  • Определить 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"

    Комментарии. Если вы явно определяете виртуальную машину, используемое имя заменяет токен 'default'. Это выходы бродячие на консоли. Упрощение на основе входа zook (commenter)

  • Установить имя поставщика

    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 Имя: "foohost"

    Комментарии. Если вы установите атрибут name в блоке конфигурации поставщика, это имя станет целым именем, отображаемым в графическом интерфейсе VirtualBox.

    Комбинированный пример: Определить имя поставщика и указать имя поставщика

    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"

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

  • Установите hostname (БОНУС)

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

    Комментарии: Это устанавливает имя хоста внутри виртуальной машины. Это будет вывод команды hostname в виртуальной машине, а также это то, что видно в приглашении типа [email protected]<hostname>, здесь оно будет выглядеть как [email protected]

Конечный код

    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, поэтому пока не могу поговорить с лучшими практиками.)

Ответ 2

Так я назначил имена отдельным виртуальным машинам. Измените 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 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)

Ответ 3

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

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

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

Если "tendo" будет именем, которое будет отображаться вместо стандартного

Ответ 4

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

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

Ответ 5

Вы можете изменить имя брандмауэра по умолчанию, изменив значение 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 должен быть указан до команды up.

или

VM_NAME=my_name vagrant up --no-provision