22. r10k
• Installs Puppet modules using an standalone
list (Puppetfile)
• Creates and manages environments based
on Git branches
23. mod "puppetlabs/rabbitmq", "4.0.0"
mod "puppetlabs/stdlib"
mod "saz/memcached"
mod "thias/sysctl"
mod "morphlabs/debootstrap"
mod 'dyn_module',
:git => 'https://github.com/dyninc/Dyn-Puppet-Module.git',
:ref => 'd842f775c3671a73167ddf0e33cc89303ce807c0'
Enterprises & mainframes (centralized) —> distributed
Scripts tended to be too system specific, not portable
In 1994 Mark Burgess created CFEngine to help him admin Unix workstations at Oslo University
Configuration management policy made into code
Declarative: what, not how
Abstract: let the tool decide how to achieve the goal
Idempotent: yields the same results when invoked multiple times
Convergent: cooperating actors that over time bring the system into compliance
These ideas live on in Puppet, Ansible, and Chef
What do we get if we take this to its natural conclusion?
From http://www.slideshare.net/gmccance/cern-data-centre-evolution
Switch to mvim for examples
Catalog is a compiled representation of the desired system state
Agent supplies facts collected by Facter
Example facts
For us, that’s determined by a role fact
We use YAML files, but you could also use a database, etc.
Its only argument is the name of the node to be classified, and it returns a YAML document describing the node. Examples include Puppet Dashboard and Foreman