Thursday, May 24, 2012

Plugging into Azure with the Azure Plugin Library

Richard Astbury's Blog - Introducing the Azure Plugin Library

An open source library of plugins installed with a command line tool (a package manager). Once a plugin is installed, it can be easily packaged with an Azure deployment to install application dependencies on a Web or Worker role.
Watch a screen cast demonstration
One of the key strengths of Windows Azure, is the Platform as a Service offering. Why would you want to patch an operating system, manage the deployment of your application, and check the health of your infrastructure? It’s better left to someone else (Microsoft) so you can focus on your application. However, the pitfall is when your application depends on something extra being installed or configured on the machine.
There are a few ways for installing 3rd party components on an Azure instance. This blog post has a good summary of the options.
In summary, start-up tasks are the best mechanism available for installing dependencies, which is fine for something straight forward, but for more complicated components (like MongoDB for example) there is quite a bit of work involved in scripting out the installation. Projects like AzureRunMe help with this, but ideally you want something that just works, without you having to write a lot of script.
Azure Plugin Library
The Azure Plugin Library exploits an undocumented feature of the Azure SDK, whereby modules referenced in the Service Definition file are bundled with your application in a package, which is uploaded and deployed to the Azure instances. The SDK uses this mechanism to set up Remote Desktop, Connect, WebDeploy and Diagnostics, however, additional plugins can be added by copying the files to the “Windows Azure SDK\v1.6\bin\plugins” folder.
Azure Plugin Library
What is a plugin?
A plugin comprises of configuration, scripts and binaries that are packaged with your Azure deployment, and executed on the Azure Web or Worker Role.
These plugins will typically alter the configuration of the Azure instance or install a dependency.
The Windows Azure SDK ships with five plugins:
  • Connect
  • Diagnostics
  • RemoteAccess
  • RemoteForwarder
  • WebDeploy
Plugins are installed in this directory:
C:\Program Files\Windows Azure SDK\v1.x\bin\plugins
This project aims to extend the capability of the SDK by providing a wide range plugins with a community maintained library, and a command line installer.
What plugins are available?
The Azure Plugin Library is maintained in a GitHub repository. You can browse and download the plugins directly from the respository, using the links below, or alternatively use the command line tool.
The fact that this is built on an undocumented feature of the Azure SDK concerns me a little, but I still think this is pretty cool. Got to love plugins/extensions/not-having-to-reinvent-the-wheels!

No comments: