cfengine
declarative
runs continuously
language is "baroque"
supports classes
large number of action sequences
-----
puppet
config mgmt tool
client/server
state description
tries to be os independent
resources
a (semi)generic piece to be configured
file
mount
cron
service
user
Package
tries to be as specific as possibe
describe the resource
supports dependencies
classes
a composition of resources and other classes
function
when you want a collection of resources defined based on parameters
templates
used when you need to have a file content be based on parameters
works well with functions
currently used erb (embedded ruby)
control structure
case
if
?
as a tool
takes the manifests and tries to apply them in an os dependent way
translation of resources and providers
client/server
puppetmasterd
puppetd
client is running constantly
every 30 minutes asks server for latest manifests
server builds manifests into catalog
server ships catalog to client
client runs catalog (and pulls only the resource it needs as it needs)
builtin CA for managing security
Server is typically CA
real world
not running every 30 minutes
not running in an update mode
run once a night as a reporting structure
exception (always applies sudo)
dev and production trees
held together with subversion
applying true config mgmt to system state
only apply changes when ready
"test driven system administration"
we can do updates by hand and habe puppet verify
similar to bcfg2 in that respect
----
chef
"systems integration framework...manage your entire infrastructure...source code to describe how you want things...apply it to your servers"
why you need it
economics - do more with less
efficiency - the DRY idiom
scalability - accomodate infrastructure demands
how it works
write recipes to describe how you want things to be configured
recipes describe resources (packages, services, files, cron, etc)
recipes are easy to understand and written on top of ruby
chef solo
allows you run cookcooks in the absense of a chef server
grow to need a server
demo of cookbooks