如何为Vagrant机器获得更清晰的名称

时间:2014-01-28 15:40:55

标签: vagrant

我正在与Vagrant合作,它是虚拟化环境的绝佳工具。但我怀疑VirtualBox如何更改创建的VM的名称。

我有这个Vagrantfile配置

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

  config.vm.hostname = "ubuntu"

  config.vm.box = "ubuntu-12.04"

  config.vm.network :private_network, ip: "33.33.33.13"

  config.berkshelf.enabled = true

end 

当我运行vagrant时,virtualbox工具会使用不同的名称创建我的机器。

roberto@rcisla-pc:~/myface$ VBoxManage list vms
"myface_default_1390750040" {eed39077-32da-44e5-961f-2bb772a2bf31}

当我在Vagrantfile中配置了一个不同的名称时,为什么virtualbox会创建名为 myface_default_1390750040 的计算机,在本例中为ubuntu-12.04。

这是我的 myface 食谱结构

 .
    ├── attributes
    │   └── default.rb
    ├── Berksfile
    ├── Berksfile.lock
    ├── chefignore
    ├── definitions
    ├── files
    │   └── default
    ├── Gemfile
    ├── libraries
    ├── LICENSE
    ├── metadata.rb
    ├── providers
    ├── README.md
    ├── recipes
    │   └── default.rb
    ├── resources
    ├── templates
    │   └── default    │       
    ├── test
    │   └── integration
    │       └── default
    │           └── serverspec
    │               ├── default
    │               │   ├── test_spec.rb
    │               │   └── demo_spec.rb
    │               └── spec_helper.rb
    ├── Thorfile
    └── Vagrantfile

我不明白为什么VirtualBox取名相对于食谱而不取名为ubuntu-12.04

我正在使用

  • Vagrant 1.3.5
  • VirtualBox 4.3.5 r91406

2 个答案:

答案 0 :(得分:4)

您可以在vagrant文​​件中添加config.vm.define块。

E.g:

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.synced_folder ".", "/vagrant", type: "nfs"

  config.vm.define "{YOUR NICE NAME HERE}" do |web|

    web.vm.box       = "CentOs"
    web.vm.box_url   = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box"
    web.vm.hostname  = 'dev.local'

    web.vm.network :forwarded_port, guest: 90, host: 9090
    web.vm.network :private_network, ip: "22.22.22.11"

    web.vm.provision :puppet do |puppet|
      puppet.manifests_path = "puppet/manifests"
      puppet.manifest_file  = "web.pp"
      puppet.module_path    = "puppet/modules"
      puppet.options        = ["--verbose", "--hiera_config /vagrant/hiera.yaml", "--parser future"]
    end

  end

end

这样,当您在虚拟框中选中列表时,您将看到已定义的名称。但请记住,Vagrant将始终在VM的名称后面添加一个随机字符串,因为它需要在运行同一个流浪文件的多个vm时识别正确的机器。

答案 1 :(得分:0)

vagrant生成的默认VM计算机名称使用您的folder_name和时间戳FOLDER_default_TIMESTAMP。要在virtualbox上命名您的虚拟机,请将以下代码添加到vagrantfile

config.vm.provider :virtualbox do |vb|
   vb.name = 'myhost'
end

hostname设置控制ssh提示的显示方式:

config.vm.hostname = 'myhost'

要在virtualboxssh提示符上使用相同的名称,请添加以下代码:

config.vm.hostname = 'myhost'

config.vm.provider :virtualbox do |vb|
   vb.name = config.vm.hostname
end

我正在使用virtualbox 5.1.18vagrant 1.9.2