Fog vSphere

VMware vSphere® provider for the Fog cloud services library

Gem Version Build Status Test Coverage Code Climate

The VMware vSphere® provider allows you to use the abstractions of the Fog cloud services library to communicate with vSphere.


To use this gem in your application, add this line to your Gemfile:

gem 'fog-vsphere'

And then execute:


Or install it yourself as:

gem install fog-vsphere


In version 3.0.0 we have changed the namespacing of Compute service. Fog::Compute::Vsphere became Fog::Vsphere::Compute as recommended by fog-core. We hope we are not causing any issues as Fog::Compute[:vsphere] is only public API.


To connect to your vSphere instance with Fog vSphere:

require 'fog/vsphere'

compute =
  provider: :vsphere,
  vsphere_username: 'username',
  vsphere_password: 'password',
  vsphere_server: '',
  vsphere_expected_pubkey_hash: '0123456789abcdef0123456789abcdef',
  vsphere_ssl: true,
  vsphere_rev: '6.0'

From there you can create, destroy, list, and modify most things related to vSphere. Some examples include:

# continued from previous example

# List datacenters
#=> [{id: 'datacenter-1', name: 'DC1', path: ['DC1'], status: 'gray'},
#=>  {id: 'datacenter-2', name: 'DC2', path: ['DC2'], status: 'gray'}]

# Get datacenter by name
#=> {name: 'DC1', status: 'gray', path: ['DC1']}

# List virtual machines
#=> [{'id'   => 'ab589f9a-af35-428e-9690-9b96587d86f3',
#=>   'name' => 'TestVM',
#=>   'uuid' => 'fc51eb7a-fa50-4d96-bd16-63972b49f52f',
#=> ...

# List a VM's SCSI controllers
#=> [<Fog::Vsphere::Compute::SCSIController
#=>   shared_bus='noSharing',
#=>   type='VirtualLsiLogicController',
#=>   unit_number=7,
#=>   key=1000,
#=>   server_id=nil
#=>  >]

There is a lot more you can do as well! We are working on providing better documentation right now. For now, you can look at the RubyDocs, browse what's available with Pry, and view the documentation for Fog. We hope to have much more documentation and plenty of examples soon.


To contribute to this project, add an issue or pull request. For more info on what that means or how to do it, see this guide from GitHub. For more details see file