27

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

しかし、それは次のエラーにつながります:

/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>'

Ubuntu 12.10 で Vagrant 1.3.1 を使用しています。(64 ビット) および VM としての OpenSuSe 12.3 (32 ビット)。

4

4 に答える 4

37

コードと使用している Vagrant API のバージョンが一致していません。

  • Vagrant API v1 の場合はconfig.vm.host_name.
  • Vagrant API v2 の場合はconfig.vm.hostname.
于 2014-01-31T21:14:01.187 に答える
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

以下のコードを使用して、ランダムなホスト名を生成することもできます

config.vm.hostname = "devops#{rand(01..99)}.vagrant.vm}"
于 2013-09-09T21:27:36.383 に答える