Gem Version

This is a Vagrant 1.5+ plugin that add an OpenNebula provider to Vagrant.


  • Boot OpenNebula instances
  • SSH into instances
  • Provision the instances with any built-in Vagrant provisioner
  • Minimal synced folder support via rsync


$ vagrant plugin install opennebula-provider
$ vagrant up --provider=opennebula


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

  config.vm.provider :opennebula do |one, override|
    one.endpoint = 'http://opennebula.server:2633/RPC2'
    one.username = 'YOUR NAME'
    one.password = 'YOUR PASSWORD'
    one.template_id = 123
    one.title = 'my-vm'


  • endpoint - OpenNebula RPC endpoint (like '')
  • username - OpenNebula username
  • password - OpenNebula password
  • template_id - OpenNebula template id
  • template_name - OpenNebula template name
  • title - OpenNebula instance name
  • memory - An instance memory in MB
  • cpu - An instance cpus
  • vcpu - An instance virtual cpus
  • disk_size - Disk size, in MB, for templates with ONLY one disk
  • user_variables - An instance specified variables (like 'CPU_MODEL = [ MODEL = host-passthrough ]')

You can use template_name parameters instead template_id to define template by name and if there are multiple templates with the same name will be used the most recent.

You can use ONE_USER, ONE_PASSWORD, ONE_XMLRPC (or ONE_ENDPOINT) environment variables instead of defining it in Vagrantfile. However, Vagrantfile's provider config has more priority.


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request