CONFIGURATIONMANAGEMENT WITH CHEF Wednesday, November 16th, 2011 Charles Johnson
WHO’S THIS GUY?• Systems Engineer• Operations Junkie• Currently managing hundreds of nodes across multiple data centers, cloud providers, and projects with Chef• Not a Rubyist• @mr_chip
SYSTEMS IS A HARD PROBLEM.• Provisioning! • Tools!• Authentication! • Mail!• Monitoring! • SSH Keys!• Security! • Quality Assurance!• Networking! • Users! • Neckbeards!
SYSTEMS IS A PROBLEM THAT DOESN’T STAY SOLVED.• OS vendors and applications are constantly patching. VM Templates / snapshots / AMI images / shell scripts are out of date as soon as they’re created.• Errors are duplicated by copying & pasting running virtual machines.• Horizontal scaling introduces heterogenous clusters.• Noversioning, unit testing, build automation, or release controls.
SPECIFICALLY, CHEF.• Manage your servers by writing code, not by running commands.• Integratetightly with your applications, databases, LDAP directories, and more.• Automatically Conﬁgure infrastructure-aware applications
INFRASTRUCTURE AS CODE• Testable• Versioned• Repeatable• Scalable
GETTING STARTED WITH CHEF• Chef is inherently client-server• Weak Server / Strong Client - Server provides repository and security, client interprets and executes policy• Hosted: Manage 5 nodes free - Opscode.com• Install your own Chef Server via gem or apt• Chef is Ruby. Drop Ruby blocks into your recipes and they’ll just work.
INTERFACING WITH CHEF• knife - Chef command-line tool• shef - Like irb for Chef.• Cookbooks- Cookbooks.opscode.com• Repo - Github / SVN• WebUI - manage.opscode.com
WHAT YOU’LL NEED• Hosted Chef Account - http://manage.opsource.com• Cloud Provider account - AWS / Rackspace• Github account or other repo• Conﬁgured Chef Workstation (gem install chef)• Some cookbooks - http://cookbooks.opscode.com