Last night I went to the Austin Devops meetup. Boyd Hemphill of Feedmagnet gave a really great overview of Chef (more on that in a sec). It was hosted by the folks at Copperegg. The meetup was great – there were people from Rackspace, Opscode, Basho and lots of other places. It was the first technical meetup that I’ve been to in Austin that wasn’t just a presentation of features/functions of a product. Like I said, really good presentation from Boyd.
An unexpected bonus for me:
one of the guys I talked to one of the other attendees, Brian, who participated in a MOOC last year! A MOOC is a massively online open course. If you’ve followed my blog for a while, you may remember when I participated in #CCK08 (which I think may have been the first MOOC ever). The guy I talked to participated in a machine learning course in Coursera. Coursera is a consortium of universities that are offering some of their courses as MOOCs. You don’t get credit from the university, but you get to learn from their professors (and also from you fellow students!).
After learning that Chef is built on Ruby, I’ve decided to join this Programming Languages MOOC in the fall. I started learning Ruby back when I was a build & release manager (I was finding my shell scripts for svn couldn’t do all the stuff I wanted them to do), so I’m going to see if the structure of a MOOC will work for me.
Here are my Chef notes from last night. PLEASE feel free to correct anything, this is all very new to me. Also, everyone recommended the Chef wiki and mailing lists as you are learning Chef. Boyd compared it to learning regex. Which gave me hope, cuz I’m pretty good at regex!
- Node: machine
Nodes have data (json array)
- Chef server: where the node data lives
Hosted chef is recommended (you get 5 nodes free), but you can also host your own server
- chef-client: acts on the node data. It checks in with the chef server, gets node data, and runs recipes
- knife: the chef cli
- recipes: scripts (ruby plus chef) that go and do stuff. Like install packages, replace config files, etc
- attribute: a piece of data about a node
- cookbooks: are made up of recipes and attributes. Boyd has cookbooks like “apache”, “nginx”, and “mysql”. They contain all the stuff he needs to run to set up one of those types of servers
- Role: From a physical standpoint, this is a collection of cookbooks. But from a logical standpoint, this is the name of the type of node those cookbooks will create. For example, webserver, dbserver, customer name, etc.
- Environment: contain nodes, cookbooks (and versions)
- idenpotent – means it comes back to the same state every time
- people back up their recipes (lots of people use github)