With the recent announcement that Google Compute Engine is now Generally Available, we thought you might also like to know about the many popular open-source solutions for interacting with Google Compute Engine. And now that Compute Engine support is built right into the tool, it makes it that much easier for you to try it out in a known environment.

For programmatic access with popular programming languages, Google provides a general set of Client APIs for accessing Compute Engine, as well as other Google services. However, you may have code or applications written against another language API that makes updating to Google’s client APIs questionable. In that case, you may be interested in the following:
  • Ruby: The fog.io cloud API has had support for Compute Engine since version 1.11.0 back in May. Take a look at the Compute Engine docs to get started with Compute Engine and fog. It primarily supports instance operations such as create, destroy and bootstrap.
  • Python: The Apache libcloud API project has been receiving solid support and updates for Compute Engine since July. It supports a broad set of Compute Engine features including instances, disks, networks/firewalls, and load-balancer support. The handy getting-started demo gives a good code example of how to use libcloud and Compute Engine.
  • Java: The jclouds cloud API does have Compute Engine support in “labs”. See the jclouds-labs-google repository for work being done to provide Compute Engine support and to elevate the lab into jclouds-core.

But perhaps you’re looking for a tool to automate configuration management of your Compute Engine instances. Below is a list of configuration management tools that provide that capability:
  • PuppetLab’s Puppet: Puppet has been around since 2005 and has evolved from supporting on-premise and hosted-datacenter support to also managing public cloud infrastructure. With the release of Puppet Enterprise 3.1 last month, Puppet’s Cloud Provisioner tool now supports Compute Engine. If you’re more comfortable with Puppet’s domain-specific-language manifest files, you can also use the gce_compute module available at the forge. Savvy puppet users will also be pleased to see that the next version of facter will have extensive support for Compute Engine. Puppet’s roots are open-source and it continues to have a thriving open-source community.
  • Opscode’s Chef: Chef is another system that’s been around for many years with a strong open-source background and active community. Chef is an automation platform with a modular design that has been extended to support Compute Engine through its knife-google plugin. The plugin gives you the power to create new Compute Engine instances, bootstrap them into your Chef environment, and easily manage those instances and their installed software. Chef’s ohai node attribute discovery tool has also been updated to support Compute Engine instances. Opscode provides a hosted solution that can make managing your Chef environment easier and more care-free.
  • SaltStack: Continuing the vein of configuration management, one of the newer systems gaining in popularity is Salt. One of Salt’s main design goals was to provide a highly scalable and fast data collection and execution framework for system administration. Recently, its cloud provisioner system was extended to support Compute Engine instances and includes documentation for getting started.
  • AnsibleWorks’ Ansible: Ansible is the newest configuration management solution on this list and it also embraces a unique design approach. Ansible does not utilize a centralized configuration server nor does it require any agents running on the managed instances. Ansible instead relies on SSH to remotely execute scripts on the managed nodes. As of 1.4, announced recently, Ansible has wide support for Compute Engine features through an inventory plugin and set of new modules.

Branching out from pure configuration management systems, there are a number of other open-source projects that support Compute Engine.
  • CoreOS: CoreOS can best be described as a very thin Linux system that provides just enough “OS” to enable the use of Linux containers. CoreOS is combined with etcd, docker, and systemd to allow you to build cluster-like infrastructure on top of standard physical and virtual machines. Thank you to the fine folks at CoreOS for building an image to support Compute Engine.
  • Docker: Compute Engine v1 has opened the door for additional operating systems, as well as applications like Docker, which require kernel customizations. Docker is an application for running Linux containers and can now be run on your Compute Engine instances. To get started quickly with docker on Compute Engine, take a look at the installation instructions to get up and running with a few simple commands.
  • Packer: Packer is one of Mitchell Hashimoto’s projects and its goal is to create machine images across multiple platforms from a single configuration. Compute Engine support is under active development and once complete will allow you to easily create a custom Compute Engine image that you can use as the basis for spinning up your Compute Engine instances. Kelsey Hightower, a primary Packer contributor, is leading the effort for Compute Engine support and if you’d like to help, you can find his work over on github.
  • Vagrant: Vagrant, another of Mitchell’s projects, is primarily a development tool for easily describing and replicating work environments. It differs a bit from a pure configuration management solution because the primary use-case is to quickly spin up a work environment, make changes, and tear it down again when you’re done. Compute Engine support is enabled by a new custom “provider” and instances can be configured with Vagrant’s “provisioner” plugins. Many thanks to Mitchell for hosting a new vagrant-google repository to house the Compute Engine support for Vagrant.

Google is committed to helping support the open-source ecosystem and we welcome your help in improving and extending the tools listed above in addition to any tools you feel should be added to the list.

-Posted by Eric Johnson, Program Manager