/fog-vsphere

Fog for vSphere

Primary LanguageRubyMIT LicenseMIT

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.

Installation

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

gem 'fog-vsphere'

And then execute:

bundle

Or install it yourself as:

gem install fog-vsphere

Upgrading

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.

Usage

To connect to your vSphere instance with Fog vSphere:

require 'fog/vsphere'

compute = Fog::Compute.new(
  provider: :vsphere,
  vsphere_username: 'username',
  vsphere_password: 'password',
  vsphere_server: 'server.example.com',
  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
compute.list_datacenters
#=> [{id: 'datacenter-1', name: 'DC1', path: ['DC1'], status: 'gray'},
#=>  {id: 'datacenter-2', name: 'DC2', path: ['DC2'], status: 'gray'}]

# Get datacenter by name
compute.get_datacenter('DC1')
#=> {name: 'DC1', status: 'gray', path: ['DC1']}

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

# List a VM's SCSI controllers
compute.list_vm_scsi_controllers('ab589f9a-af35-428e-9690-9b96587d86f3')
#=> [<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.

Contributing

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 CONTRIBUTING.md file