p0deje / vagrant-vultr

Vultr provider for Vagrant
MIT License
46 stars 16 forks source link

"Method requires authentication, no API key present." #13

Open nopdotcom opened 5 years ago

nopdotcom commented 5 years ago

This appears to be a compatibility problem between the vultr 0.4.1 module and 0.3.5. If I hack 0.3.5 into the plugins directory, it works.

I get a traceback when I try to vagrant up --provider=vultr on the example.

$ vagrant up --provider=vultr
Bringing machine 'default' up with 'vultr' provider...
/Users/nop/.vagrant.d/gems/2.4.4/gems/vultr-0.4.1/lib/vultr.rb:866: warning: already initialized constant Vultr::APIKey
/Users/nop/.vagrant.d/gems/2.4.4/gems/vultr-0.4.1/lib/vultr.rb:866: warning: previous definition of APIKey was here
/Users/nop/.vagrant.d/gems/2.4.4/gems/vultr-0.4.1/lib/vultr.rb:866: warning: already initialized constant Vultr::APIKey
/Users/nop/.vagrant.d/gems/2.4.4/gems/vultr-0.4.1/lib/vultr.rb:866: warning: previous definition of APIKey was here
/Users/nop/.vagrant.d/gems/2.4.4/gems/vagrant-vultr-0.1.2/lib/vagrant-vultr/helpers/client.rb:139:in `request': API request failed: Method requires authentication, no API key present. (RuntimeError)
    from /Users/nop/.vagrant.d/gems/2.4.4/gems/vagrant-vultr-0.1.2/lib/vagrant-vultr/helpers/client.rb:49:in `create_server'
    from /Users/nop/.vagrant.d/gems/2.4.4/gems/vagrant-vultr-0.1.2/lib/vagrant-vultr/action/create.rb:35:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/warden.rb:34:in `call'
    from /Users/nop/.vagrant.d/gems/2.4.4/gems/vagrant-vultr-0.1.2/lib/vagrant-vultr/action/setup_ssh_key.rb:27:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/warden.rb:34:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/warden.rb:34:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/builder.rb:116:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/runner.rb:66:in `block in run'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/util/busy.rb:19:in `busy'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/runner.rb:66:in `run'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/builtin/call.rb:53:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/warden.rb:34:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/builtin/config_validate.rb:25:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/warden.rb:34:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/builder.rb:116:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/runner.rb:66:in `block in run'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/util/busy.rb:19:in `busy'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/action/runner.rb:66:in `run'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/machine.rb:239:in `action_raw'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/machine.rb:208:in `block in action'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/environment.rb:614:in `lock'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/machine.rb:194:in `call'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/machine.rb:194:in `action'
    from /opt/vagrant/embedded/gems/2.2.3/gems/vagrant-2.2.3/lib/vagrant/batch_action.rb:82:in `block (2 levels) in run'

Here's the Vagrantfile:

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

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

  config.vm.provider :vultr do |vultr, override|
    override.ssh.private_key_path = '~/.ssh/id_rsa'
    override.vm.box = 'vultr'
    override.vm.box_url = 'https://github.com/p0deje/vagrant-vultr/raw/master/box/vultr.box'
    vultr.token = 'NPXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'  #You can also use VULTR_TOKEN environment variable
    vultr.region = 'New Jersey'
    vultr.plan = '1024 MB RAM,25 GB SSD,1.00 TB BW'
    vultr.os = 'CoreOS Stable'
  end
end
nopdotcom commented 5 years ago

Alternatively, we could fix vultr.rb. https://github.com/tolbkni/vultr.rb/pull/13