Ravello PowerShell Module

The first time I heard about Ravello Systems and their solution was way back in August 2013. Through pointers in blogs posts by Duncan (here) and William (here), I found an early research paper which explained what the HVX platform was all about. Needless to say I was very interested !

When Ravello Systems announced a beta for their Inception solution in April 2015, I was game. After a 2 week trial, I took a subscription. In June 2015 they also announced free access for vExperts (1000 CPU hours per month). And to top it off, I witnessed an excellent presentation during Virtualization Field Day 5 in June 2015 in Boston.

rav-title

One aspect of the Ravello Systems solution that immediately captured my attention, was the availability of a REST API, that offers all the functionality that is available through their Web Gui, and more. While a Web Gui might be nice, for automation purposes that will not really work. That’s when I decided to start writing a Ravello PowerShell module based on the REST API.

The Ravello PowerShell module

For practical purposes I decided to start writing the module with PowerShell v4 (or higher) in mind. In the current version the Ravello module contains 65 cmdlets. The module should cover all the different options that are available in the REST API documentation, and some more!

Ravello-1

The core of the module is a helper function, that is called Invoke-RavRest. This function is not exported, since users of the module should not be using the function directly. The function uses the Invoke-RestMethod to call the Ravello REST interface. And the parameters are passed via the splatting technique.

Ravello-2

Writing functions against a REST API, and using JSON has some gotchas lurking under the cover. But I plan on doing a separate post on “The Making Off” 🙂

The Ravello PowerShell module can be downloaded from GitHub. Installation is straightforward:

  • create a Ravello folder in one of the locations defined in $env:PSModulePath
  • copy the .psm1, .psd1 and .xml files to that Ravello folder
  • you might have to “unblock” the .psm1 and .psd1 files. There is a cmdlet for that

Some Examples

Connecting

To connect and disconnect from the Ravello Systems you have 2 cmdlets.

When you’re located behind a Proxy, you can pass that URL along.

Uploading

There are cmdlets for uploading ISO files, Disk Images and VMs. These cmdlets assume the presence of the Ravello CLI VM Import Tool.

On the Import cmdlets, you can specify the location where the CLI was installed. The default is the folder C:\Ravello_cli.

Creating and Changing

There are New and Set cmdlets for all types of Ravello resources. You can now for example easily automate the creation of a Blueprint from an Application.

The following example shows how you easily change the size of a Disk Image

Synchronise with the Ravello Repo

With the Inception solution comes a great feature where users can share their Blueprints, VM Images and Disk images. Besides user contributions, Ravello Systems themselves also post to this repository.

A famous Blueprint in the Ravello Repo is the AutoLab, created by Alastair. To create an Application based on this Blueprint, you will first have to copy the Blueprint from the Ravello Repo to your personal Blueprint library. And then create an Application from that Blueprint. With the Ravello PowerShell module this can be fully automated (and scheduled).

The previous examples just scratch the surface of what is possible with the Ravello PowerShell module. We are planning a number of follow up posts with more advanced examples. So watch this space !

A Word of Warning !

This is the first public version of the module, so please test it thoroughly in a lab environment, before using it in a production like environment.

And please forward me your findings and suggestions.

Enjoy !

Leave a Reply

Your email address will not be published. Required fields are marked *

*
*

This site uses Akismet to reduce spam. Learn how your comment data is processed.