我正在与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
我正在使用
答案 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'
要在virtualbox
和ssh
提示符上使用相同的名称,请添加以下代码:
config.vm.hostname = 'myhost'
config.vm.provider :virtualbox do |vb|
vb.name = config.vm.hostname
end
我正在使用virtualbox 5.1.18
和vagrant 1.9.2
。