Automate All Things! Support for DevOps Tool Puppet Added to Windows Azure
Want to do DevOps automation in a Microsoft world? Typically that meant using Microsoft-provided tools like PowerShell and System Center instead of the popular open source tools that have been slow to support the full Microsoft product stack. That’s beginning to change as developers and system administrators can now use tools like Puppet to provision and manage resources in Windows Azure.
Microsoft Open Technologies (MS Open Tech) – a subsidiary focused on investing in open source – released a Puppet module and command line interface that lets users of this DevOps tool interact with Windows Azure virtual machines, networks, and databases. This module also opens up the door for users to apply any of the 1800+ community-defined Puppet configurations to Windows Azure environments. Why did they build this? A blog post about this release provided some perspective.
MS Open Tech engineers have undertaken this work through our focus on enhancing interoperability across popular DevOps tools. DevOps focuses on the management of the intersection between software development and IT operations. It emphasizes collaboration and integration between the increasingly agile software development team (where rapid change is necessary), and the operations team who are required to provide maximum up time (where change may impact reliability). DevOps seeks to enable these two groups to communicate and collaborate more effectively. The contribution of a Puppet Module for Windows Azure is an important step in ensuring that users of Puppet are able to leverage their skills in a Windows Azure environment.
This Puppet module supports both Windows and Linux virtual machines, and the CLI includes operations for creating, deleting, retrieving, stopping, and starting a VM. CLI users can also create and configure Windows Azure virtual networks and create and configure Windows Azure SQL databases. Access to the nearly 1,900 community manifests means that users can apply a wide range of configurations to Windows Azure VMs, including manipulating the IIS webserver, interacting with the Windows registry, managing NGINX on Linux, and more.
To be sure, Puppet has supported Windows since the 2.7.6 release in 2011. The Puppet Master – which stores the model-driven manifests that express a system’s state – must run on a Linux server, but the servers and workstations that host the Puppet agent can be running either Linux or Windows. In Puppet’s Master/Agent mode, agents pull manifests from the Puppet Master and apply them in order to enforce the desired machine state. Puppet is available via open source, and also sells a more full-featured Enterprise version. Both versions support cloud VM provisioning in AWS and Google Compute Engine, and it’s possible to run Enterprise Puppet itself in a variety of clouds, including Windows Azure.
Chef – Puppet’s chief competitor – has offered Windows Azure integration for over a year. However, its plugin for Windows Azure focuses solely on creating and managing cloud VMs. Nonetheless, Microsoft’s customers now have the opportunity to use two of the most widely used DevOps automation tools against Windows servers and the Windows Azure cloud. Other DevOps tools are starting to turn their attention to Redmond’s flagship operating system as well. Vagrant is a tool used by developers and system administrators to quickly spin up consistent development environments. While users could run Vagrant on Windows machines, the virtual guests themselves only run Linux OSes. In the release notes for Vagrant 1.4, there is a passing mention that Vagrant 1.5 may introduce Windows guests, thus letting Microsoft-oriented developers take advantage of this popular tool and growing ecosystem.