double-z
4/6/2012 - 8:05 AM

gistfile1.txt

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