我正在尝试为VM设置主机名.在这里我的Vagrantfile:
Vagrant::Config.run do |config|
config.vm.box = "opensuse-12.3-32"
config.vm.define :web do |web_config|
web_config.vm.hostname "web.my.net"
web_config.vm.forward_port 80, 7080
web_config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet"
puppet.module_path = "puppet/modules"
puppet.manifest_file = "base.pp"
end
end
end
Run Code Online (Sandbox Code Playgroud)
但它会导致以下错误:
/home/coder/vagrant/opensuse/Vagrantfile:40:in `block (2 levels) in <top (required)>': undefined method `hostname' for #<VagrantPlugins::Kernel_V1::VMConfig:0x00000002748fb8> (NoMethodError)
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/config/v1/loader.rb:37:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/config/v1/loader.rb:37:in `load'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/config/loader.rb:104:in `block (2 levels) in load'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/config/loader.rb:98:in `each'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/config/loader.rb:98:in `block in load'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/config/loader.rb:95:in `each'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/config/loader.rb:95:in `load'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/environment.rb:335:in `machine'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/plugin/v2/command.rb:134:in `block in with_target_vms'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/plugin/v2/command.rb:167:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/plugin/v2/command.rb:167:in `block in with_target_vms'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/plugin/v2/command.rb:166:in `map'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/plugin/v2/command.rb:166:in `with_target_vms'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/plugins/commands/status/command.rb:16:in `execute'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/cli.rb:38:in `execute'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/lib/vagrant/environment.rb:484:in `cli'
from /opt/vagrant/embedded/gems/gems/vagrant-1.3.1/bin/vagrant:96:in `<top (required)>'
from /opt/vagrant/bin/../embedded/gems/bin/vagrant:23:in `load'
from /opt/vagrant/bin/../embedded/gems/bin/vagrant:23:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu 12.10下使用Vagrant 1.3.1.(64位)和OpenSuSe 12.3(32位)作为VM.
nel*_*nda 34
您所拥有的是您的代码与您正在使用的Vagrant API版本之间的不匹配.
config.vm.host_name.config.vm.hostname.Ter*_*ang 14
根据问题#1974,设置主机名你应该使用=>config.vm.hostname = "web.my.net"
所以块应该看起来像
config.vm.define :web do |web_config|
web_config.vm.hostname = "web.my.net"
web_config.vm.forward_port 80, 7080
web_config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet"
puppet.module_path = "puppet/modules"
puppet.manifest_file = "base.pp"
end
end
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用下面的代码生成一些随机主机名
config.vm.hostname = "devops#{rand(01..99)}.vagrant.vm}"
Run Code Online (Sandbox Code Playgroud)
编辑Vagrantfile:
config.vm.hostname = "WhateverHostNameYouWant"
Run Code Online (Sandbox Code Playgroud)
例如:
Vagrant.configure(2) do |config|
config.vm.box = "bento/ubuntu-16.04"
config.vm.hostname = "vhost1.local"
config.vm.network "private_network", ip: "192.168.50.4"
end
Run Code Online (Sandbox Code Playgroud)