Friday 2:35 p.m.–3:05 p.m.

Puppet Modules: Apps for Ops

Justin Bronn

Audience level:
Systems Administration


Puppet modules provide reusable operations ("ops") code in a manner analogous to Django apps. This talk explores the Puppet ecosystem through the eyes of a typical Python developer, and demonstrates how to use Puppet modules effectively to deploy and secure Python web applications.


Long gone are the days of simple websites -- what were once simple CGI or PHP scripts are now an amalgamation of Python packages, databases, caching layers, and task queues. The cognitive load of all these different technologies strains even the most seasoned Python developer, encouraging bad practices that may end in disaster (or downtime). Configuration management tools allow you to treat your infrastructure as code: it can be revision-controlled, packaged, and reused. While Python-based configuration management tools are nascent, they still lack the maturity and features provided by the Ruby-based solutions like Puppet and Chef. Unfortunately, these tools present a steep learning curve to Python developers unfamiliar with the dark arts of server administration, virtualization, and Ruby. Puppet provides a DSL for expressing system configuration that is popular among system administrators and developers. Puppet modules are containers for related configuration code, and are combined for the specific needs of your application. This presentation shows the Python developer best practices when using, writing, and testing Puppet modules. Moreover, releases from the Puppet Forge (a PyPI for modules) are recommended for managing Python, popular web servers, databases, and web frameworks.