2016-06-27 2 views
0

Vagrant Multiple-VM Создание и ошибка конфигурации при выполнении команды "бродячие" или "бродяга SSH": Он кидает сообщение об ошибке:Vagrant Multiple-VM Создание и настройка ошибок

$ vagrant up 
/opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:113:in `block (2 levels) in load': private method `load' called for nil:NilClass (NoMethodError) 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:107:in `each' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:107:in `block in load' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:104:in `each' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/config/loader.rb:104:in `load' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/vagrantfile.rb:28:in `initialize' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:740:in `new' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:740:in `vagrantfile' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:486:in `host' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:208:in `block in action_runner' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/action/runner.rb:33:in `call' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/action/runner.rb:33:in `run' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:473:in `hook' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/lib/vagrant/environment.rb:722:in `unload' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/bin/vagrant:177:in `ensure in <main>' 
    from /opt/vagrant/embedded/gems/gems/vagrant-1.8.4/bin/vagrant:177:in `<main>' 

мой Vagrantfile является descripted ниже, он использует сценарии оболочки для установки и вращения машины марионеточного сервера и 2 узла с использованием виртуального бокса в качестве виртуальной машины и debian wheezy в качестве гостевой ОС. Машина Pizisioning дает некоторую неустойчивую ошибку для отладки, любезно разрешает проблему. FYI, все файлы, nodes.json, boostrap-master.sh, bootstrap-node.sh, site.pp лежат вдоль стороны "Vagrantfile"

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

# All Vagrant configuration is done below. The "2" in Vagrant.configure 
# configures the configuration version (we support older styles for 
# backwards compatibility). Please don't change it unless you know what 
# you're doing. 

##read vm and pupper configs from JSON files 
    nodes_config = (JSON.parse(File.read("nodes.json")))['nodes'] 

VAGRANTFILE_API_v2 = "2" 



Vagrant.configure("VAGRANTFILE_API_v2") do |config| 
    # The most common configuration options are documented and commented below. 
    # For a complete reference, please see the online documentation at 
    # https://docs.vagrantup.com. 

    # Every Vagrant development environment requires a box. You can search for 
    # boxes at https://atlas.hashicorp.com/search. 
    config.vm.box = "debian/wheezy64" 


    nodes_config.each do |node| 
    node_name = node[0] # name of node 
    node_values = node[1] # content of node 

    config.vm.define node_name do |config| 
     # configures all forwarding ports in JSON array 
     ports = node_values['ports'] 
     ports.each do |port| 
     config.vm.network :forwarded_port, 
      host: port[':host'], 
      guest: port[':guest'], 
      id: port[':id'] 
     end 

     config.vm.hostname = node_name 
     config.vm.network :private_network, ip: node_values[':ip'] 

     config.vm.provider :virtualbox do |vb| 
     vb.customize ["modifyvm", :id, "--memory", node_values[':memory']] 
     vb.customize ["modifyvm", :id, "--name", node_name] 
     end 

     config.vm.provision :shell, :path => node_values[':bootstrap'] 
    end 
    end 
end 




    # Disable automatic box update checking. If you disable this, then 
    # boxes will only be checked for updates when the user runs 
    # `vagrant box outdated`. This is not recommended. 
    # config.vm.box_check_update = false 

    # Create a forwarded port mapping which allows access to a specific port 
    # within the machine from a port on the host machine. In the example below, 
    # accessing "localhost:8080" will access port 80 on the guest machine. 
    # config.vm.network "forwarded_port", guest: 80, host: 8080, protocol:"tcp", auto_correct: true 
    # config.vm.network "forwarded_port", guest: 80, host: 8080, protocol:"udp", auto_correct: true 
    # config.vm.network "forwarded_port", guest: 80, host: 8080, protocol:"ssh", auto_correct: true 


    # Create a private network, which allows host-only access to the machine 
    # using a specific IP. 
    # config.vm.network "private_network", ip: "192.168.33.10" 

    # Create a public network, which generally matched to bridged network. 
    # Bridged networks make the machine appear as another physical device on 
    # your network. 
    # config.vm.network "public_network" 

    # Share an additional folder to the guest VM. The first argument is 
    # the path on the host to the actual folder. The second argument is 
    # the path on the guest to mount the folder. And the optional third 
    # argument is a set of non-required options. 

# config.vm.synced_folder "../data", "/vagrant_data" 

    # Provider-specific configuration so you can fine-tune various 
    # backing providers for Vagrant. These expose provider-specific options. 
    # Example for VirtualBox: 
    # 
    # config.vm.provider "virtualbox" do |vb| 
    # # Display the VirtualBox GUI when booting the machine 
    # vb.gui = true 
    # 
    # # Customize the amount of memory on the VM: 
    # vb.memory = "1024" 
    # end 
    # 
    # View the documentation for the provider you are using for more 
    # information on available options. 

    # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies 
    # such as FTP and Heroku are also available. See the documentation at 
    # https://docs.vagrantup.com/v2/push/atlas.html for more information. 
    # config.push.define "atlas" do |push| 
    # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" 
    # end 

    # Enable provisioning with a shell script. Additional provisioners such as 
    # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the 
    # documentation for more information about their specific syntax and use. 
    # config.vm.provision "shell", inline: <<-SHELL 
    # apt-get update 
    # apt-get install -y apache2 
    # SHELL 
#end 

Для более глубокого отладки журнала в режиме файл будет вставлен здесь http://paste.ubuntu.com/17970100/

+0

как вы JSon? он, кажется, жалуется на node_values ​​= node [1] –

+0

У вас может быть JSON-файл здесь [ссылка] (http://paste.ubuntu.com/17973509/) – aruns

ответ

1

не рассматривал все, но все приходит с

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

как вы объявляете переменную вам нужно вызвать

Vagrant.configure(VAGRANTFILE_API_v2) do |config| 

как вы пишете вы вызываете метод с аргументом _VAGRANTFILE_API_v2_, а не значение аргумента.

+0

Спасибо за этот указатель, он работал как шарм. – aruns

Смежные вопросы