Puppet is an IT automation language that has traditionally been used to configure individual nodes. Puppet’s declarative language and dependency model is also suitable for describing entire application stacks on top of public cloud offerings.
This post will explain how Puppet can be used to model resources through Google Compute Engine’s API in order to describe application stacks as reusable and composable configuration files.
Google Compute Engine (GCE) is a service offering from Google that allows users to provision virtual machine instances that run on Google’s infrastructure. The one thing that really stands out about this service compared to similar offerings is how fast it is. Machine instances generally take seconds, not minutes, to spin up.
The GCE API allows users to create all of the resources needed to dynamically model application stacks, including: virtual machine instances, networks, firewalls, and persistent disks. It also allows you to specify a lot of the characteristics of a virtual machine instance like the image that should be used, and how much memory and CPU to allocate to that instance.
What this API can’t do is tell a machine how it should be configured. There is no way to say: “Use this image as a starting place, and then configure yourself to be a mysql database.” This is where Puppet comes in. It can be used with GCE in order to configure the roles that should be assigned to created instances. Puppet can also be used to perform ongoing management of those instances.
This blog will take the concept one step further, explaining not only how Puppet can be used to assign roles to compute instances, but also how Puppet can be used to model the management of all of the compute objects in GCE that are used to create an application stack.
This week’s Module of the Week is a guest post from Carlos Sanchez from MaestroDev.
|Purpose||Manage Apache Maven installation and download artifacts from Maven repositories|
The maven module allows Puppet users to install and configure Apache Maven, the build and project management tool, as well as easily use dependencies from Maven repositories.
If you use Maven repositories to store the artifacts resulting from your development process, whether you use Maven, Ivy, Gradle or any other tool capable of pushing builds to Maven repositories, this module defines a new maven type that will let you deploy those artifacts into any Puppet managed server. For instance, you can deploy WAR files directly from your Maven repository by just using their groupId, artifactId and version, bridging development and provisioning without any extra steps or packaging like RPMs or debs.
The maven type allows you to easily provision servers during development by using SNAPSHOT versions—using the latest build for provisioning. Together with a CI tool, this enables you to always keep your development servers up to date.
Puppet Enterprise can be used to do anything from automating repetitive tasks to managing large, complex infrastructure, but it can also solve real problems in small doses. We’ve compiled a list of awesome things that you can do—or do better, faster, stronger—with 10 nodes or less of Puppet Enterprise.
|Purpose||Manage PostgreSQL servers, databases, and users|
|Module||Previously inkling/postgresql, now puppetlabs/postgresql|
|Puppet Version||2.7+ & PE 2.0+|
|Platforms||Tested on RHEL5, RHEL6, Debian6, Ubuntu 10.04|
PostgreSQL is a powerful, high-performance, free, open-source relational database server. It hasn’t always enjoyed quite as much popularity as its cousin, MySQL; MySQL is enormously popular, as evidenced by its inclusion in the ubiquitous LAMP (Linux-Apache-MySQL-PHP) web development stack. However, these days there seems to be some increasing momentum behind PostgreSQL in many circles. At Puppet Labs, we are starting to use it more heavily—in fact, it’s a prerequisite for our new PuppetDB product.
With that in mind, it seemed important for us to make sure that there was a Puppet module out that made PostgreSQL as easy to manage with Puppet as MySQL is. We searched around on the Puppet Forge to see if anyone had undertaken this yet, and found several useful Postgres modules—but it was important to us that the module API would be familiar to users of the puppetlabs/mysql module.
We were particularly impressed with the functionality offered by the inkling/puppet-postgresql module, developed by Kenn Knowles of Inkling Systems, so we reached out to Kenn to see if he’d be amenable to us helping to refactor the module to leverage his existing functionality with an API similar to the puppetlabs/msyql module. He was, so, we did!
So here’s why you should check out the new 0.2.0 release of the inkling/postgresql module:
My name is Mateusz Lenik, I study at Technical University in Wrocław, Poland. For the past two months, I’ve been working on expanding features of the Ruby DSL for Puppet. I’m a Ruby programmer and I was looking for Google Summer of Code projects in Ruby, which is how I came to Puppet Labs. My […]
Purpose Manage the Windows Registry Module puppetlabs/registry Puppet Version Puppet 2.7+, Puppet Enterprise 2.5+ Platforms 32 and 64-bit versions of Windows 2003 and later The puppetlabs/registry module allows Puppet users to manage the Windows Registry. On Windows operating systems, the registry is a database used to store configuration data for applications, drivers, and the operating […]
Purpose Configures OpenStack Module puppetlabs/openstack Puppet Version 2.7.14+, Puppet Enterprise 2.5+ Platforms Ubuntu 12.04 (Precise), Debian 6 (Wheezy) In April, we announced Puppet’s support for OpenStack, a popular open source project that can be used to build private clouds. At that time, we posted the first OpenStack configuration module on Puppet Forge, which enabled you […]
Purpose Manage MySQL clients, servers, and databases Module puppetlabs/mysql Puppet Version 2.6+ Platforms RedHat, CentOS, Ubuntu, Debian, FreeBSD One of the most common first big tasks users are interested in using Puppet for is a MySQL deployment. The puppetlabs/mysql module provides users with the tools needed to quickly manage everything from a MySQL client to […]
Puppet provides a lot of very useful data about itself and your infrastructure, collected in the Puppet Data Library. Every Puppet run on a client creates a report including every action taken during the run, log output, and metrics on the performance of the run. As we discovered in Part I, there are a broad […]
Purpose Installs vCenter 5 on Windows and manages vCenter resources. Module puppetlabs/vcenter Puppet Version 2.7+ Platforms Windows 2008R2 64bit VMware vCenter is a software application that provides central management of vSphere environments. It’s an essential component for managing large numbers of VMware virtual machines and the fleet of ESX systems supporting those hosts. As a […]
Purpose Razor Provisioning Software Module puppetlabs/razor Puppet Version 2.7+ Platforms Ubuntu Precise Razor is next generation provisioning software that handles bare metal hardware and virtual server provisioning with inventory discovery and tagging, rule-based policy management, and extensible broker plugin integration. The usage of Razor for provisioning is discussed briefly in this blog, and additional information […]
The following is a guest post by Reid Vandewiele, a system administrator at the Portland State University Computer Action Team (PDX CAT). Reid, William Van Hevelingen, Spencer Krum and other CATs are big contributors to various modules on the Puppet Forge and also host a few of their own. They are active members of the Puppet community and can usually be found on IRC under the monikers marut, blkperl and nibalizer, respectively. Thanks guys for the awesome guest post!
|Purpose||Provides amanda server and client configuration|
|Platforms||Debian, Solaris, FreeBSD, SuSE|
The Advanced Maryland Automatic Network Disk Archiver, or Amanda for short, is a network backup solution in the same class as Bacula. Proponents tout its smart automatic planner, use of native tools to perform data dumps, ability to recover data from tape in the absence of the tool itself, and the available commercial support through Zmanda. A venerable bastion of free and open source software, Amanda has been around since 1991 and is still actively maintained with the most recent stable version having been released on February 12, 2012.
Let’s Puppetize that!
PuppetDB is the next-generation open source storage service for Puppet-produced data. Today, this includes catalogs and facts, and will be extended in the near future. The initial release provides a drop-in replacement for both storeconfigs and inventory service. We’ve designed PuppetDB to empower Puppet deployments, and built it from the ground up with performance in […]
We’re taking a brief break from your regularly scheduled module of the week goodness with a mini series to discuss some of the elements that go into writing great Puppet modules. I’ll try to sum it up in a few sentences: Your module should be immediately useful to me after I install it. Documentation should […]
Purpose Standard library for creating Puppet modules Module puppetlabs/stdlib Puppet Version 2.6+ Platforms Redhat, Debian, Solaris, Mac OS X, Windows Welcome back to the module of the week! Previously we covered facter-dot-d. This week we’re switching our focus to the puppetlabs/stdlib data functions: getvar, loadyaml, and merge. The data functions provide the ability to dynamically […]