How to change Vagrant 'default' machine name?

configuration, vagrant, vagrantfile, virtualbox

Solution

I found the multiple options confusing, so I decided to test all of them to see exactly what they do.

I'm using VirtualBox 4.2.16-r86992 and Vagrant 1.3.3.

I created a directory called `nametest` and ran

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

to generate a default Vagrantfile. Then I opened the VirtualBox GUI so I could see what names the boxes I create would show up as.

Default 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: The name defaults to the format DIRECTORY_default_TIMESTAMP.

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

Comments: If you explicitly define a VM, the name used replaces the token 'default'. This is the name vagrant outputs on the console. Simplifying based on `zook`'s (commenter) input

Set Provider Name

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: If you set the `name` attribute in a provider configuration block, that name will become the entire name displayed in the VirtualBox GUI.

Combined Example: 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 Name: "barhost"

Comments: If you use both methods at the same time, the value assigned to `name` in the provider configuration block wins. Simplifying based on `zook`'s (commenter) input

Set `hostname` (BONUS)

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

Comments: This sets the hostname inside the VM. This would be the output of `hostname` command in the VM and also this is what's visible in the prompt like `vagrant@<hostname>`, here it will look like `vagrant@buzbar`

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

So there it is. You now know 3 different options you can set and the effects they have. I guess it's a matter of preference at this point? (I'm new to Vagrant, so I can't speak to best practices yet.)

Problem

Where does the name 'default' come from when launching a vagrant box? ``` $ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ``` Is there a way to set this?

Original source

Related problems