Change the future

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

Chef: Automating web application infrastructure

Kate Heddleston

Audience level:
Systems Administration


This talk is going to focus on using Chef to create web application projects, specifically a python project with a Django framework. Chef is a configuration tool for managing infrastructure by allowing users to automatically and reproducibly configure installations on servers. This talk will cover what is Chef, why automated server configuration is important, and how Chef can be used personally.


What is the talk about and why is it important: Open source tools like Chef allow engineers who aren’t specialists in devops to create manageable infrastructure for their web development projects. Server configuration is an intermediate skill that gives engineers more control over their server environments, and Chef helps engineers learn these devops skills and repeatedly execute them. Infrastructure-as-a-service tools are great for developers and organizations who don’t want to manage their infrastructure, but as systems scale many engineers or engineering organizations want more control to improve scalability, lower costs, and customize processes. This talk is meant to help people understand Chef, why they would use an infrastructure management tool, and how to use Chef for server configuration.

Core points: In order to explain Chef server configuration in a way that addresses the python community, this talk will walk people through setting up a web server for a Django project. Getting started involves getting the starter code from git and understanding Chef syntax and core concepts. For example, Chef allows users to create “roles” that are a run_list of installations for the server they want to configure. For example, a web server role might have a run_list that includes gunicorn, nginx, and python among other things. A database server role might additionally include PostreSQL, which a generic web server might not need. Chef can also interact with hosting providers like Rackspace or EC2, which allows users to create and configure servers with one command. The talk will then go over what specifically should be in a python/Django web server configuration (python, gunicorn, build-essential, nginx, sudo, users, etc.). Finally, the conclusion will touch on other solutions for automatic server configuration like Puppet and Fabric

Generic outline of above points: What is chef? Why should the python community care about Chef? Why do people use chef? How to use chef and git Inside chef itself - recipes, cookbooks, knife, etc. Chef and hosting environments Granular look at what configuration should go into a python/Django web server Close and other tools people use for this (puppet, fabric for deployment)

Conclusion: Automated server configuration is important for the python community and developers at large because it’s an important tool for creating scalable systems. If developers understand how to setup projects and configure server installations, more projects will get created which will benefit the community as a whole. Additionally, understanding server configuration and how systems are created helps beginner developers become intermediate and advanced developers. The takeaways from this talk should be an understanding of Chef, why automated server configuration is important, and how Chef can be used personally.