VMware vSphere® provider for the Fog cloud services library
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:
bundle
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 = 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.
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