Skip to content

VirtualMachineService

Daniel Berger edited this page May 16, 2016 · 21 revisions

The VirtualMachineService class is likely to be used extensively, and it contains additional methods not inherited from ResourceBaseServiceClass, so we cover it in some detail here.

Getting Started

# Get your VirtualMachineService instance
vms = Azure::Armrest::VirtualMachineService.new(conf)

Common Methods

The VirtualMachineService class supports the common methods available to all ResourceBaseGroupService subclasses.

rg = 'some_resource_group'

vm = vms.get('some_vm', rg)
vms.list(rg).each{ |vm| p vm.name }
vms.list_all.each{ |vm| p vm.name }
vms.delete('some_vm', rg)

Instance View vs Model View

Unlike other resource types, there are two possible "views" for a virtual machine - instance view and model view. The difference is in the type of object and information they return. By default, the get method retrieves the model view since it includes information about the model that was submitted to Azure, and is similar to the output used for the create method. The instance view largely returns status information for the VM.

You have the option to pass a 3rd parameter to the get method, or to use an explicit method.

# Examples:

vms.get('some_vm', rg)            # => Gets model view
vms.get_model_view('some_vm', rg) # => Same as above

vms.get('some_vm', rg, false)        # => Gets instance view
vms.get_instance_view('some_vm', rg) # => Same as above

Series

The series method returns a list of VirtualMachineSize objects that contain information about available VM sizes that can be provisioned.

series = vms.series.first

p series.name
p series.number_of_cores
p series.os_disk_size_in_mb

Generalize

The generalize method is used when preparing to save a VM as an image.

Note that you must still run the sysprep command on the VM in question. In practice, you are more likely to pass the -generalize switch to the sysprep command than use this method, but it's here if you need it.

Capture

The capture method saves an already generalized and sysprep'ed image to the storage account associated with the VM. You can pass :vhdPrefix, :destinationContainerName and :overwriteVhds as options.

Note that the :destinationContainerName will actually be nested under "system/Microsoft.Compute/Images".

Deallocate

The deallocate methods stops and deallocates, but does not destroy, a virtual machine.

Power Operations

The start, stop and restart methods are all available as power operations for an Azure VM.

# Example:

vms.stop('some_vm', 'some_group')
vms.start('some_vm', 'some_group')
vms.restart('some_vm', 'some_group')

Note that all power operations are asynchronous. It is up to you to poll them if you need to check their status.

Additional Information