This document provides an overview of using Chef to manage server environments. It describes Chef as a client-server system that uses declarative recipes to define the desired end state of a server rather than specifying step-by-step configuration processes. Key concepts covered include cookbooks, recipes, attributes, data bags, the Chef server, Chef client, Ohai, and Knife. The document also discusses development tools like Berkshelf and Vagrant, and outlines the typical development cycle of creating a cookbook, developing and testing it, uploading the recipe to the Chef server, and executing it on client servers.
3. DevOps
(Development / Operations)
Combines disciplines of
software development /
QA with system
administration
4. Building/Deploying
Manually
Build scripts
I want to tell this computer how it should be set up, and
let it do the rest
5. Chef
Client/Server system for managing configuration
Declarative Recipes define end state instead of
construction process
Idempotent - re-running script only causes changes to
execute
6. No scripts - recipes
Cookbooks - modules for adding support for software
Recipes - contained by cookbooks, define server
configuration, templates, etc
Attributes - configurable variables consumed by
recipes
Recipes provide defaults, can be overridden by server,
role, or environment
Some generated automatically
Data Bags - hold arbitrary configuration data
7. Parts and pieces
Chef Server - holds cookbooks and configuration for
your organization
Chef Client - installed on servers via bootstrap process
to execute recipes, solo and client flavors
Ohai - discovery utility that extracts automatic attributes
from servers
Knife - command line tool for managing chef
8. Managing/Orchestration
Chef Solo - One server, no management, cookbooks go
on server
Hosted Chef - Opscode-provided server, fine-grained
permission controls
Chef Server - Self-hosted chef management server
Chef supports git, but git repo and servers dont talk
9. Development cycle
Create cookbook
Develop/Test
Upload recipe to chef server
Execute on client servers
10. Blend Server Layout
/Sites
.conf - all apache vhost configs symlink here
[sitename]
conf - apache and other configs
htdocs - web app, usually apache root dir
logs - apache and other logs
deploy - deploy scripts
11. Development tools
Berkshelf - code gen and dependency management
Vagrant - automated testing environments