Computing UNIX Nerd (started in 1986 with SunOS 3) Linux Geek (started in 1992 with 0.96α) Scripting Nerd Configuration Management addict Free and Open Source Software enthusiast HAM Operator (pa1ton) Plain text aficionado Programming Loves DNS · · · pup-v4.1-3
⇒ Widely used, master / slave Chef ⇒ Puppet lookalike, configured through Ruby Ansible ⇒ Easy to use, configured through yaml Salt Stack ⇒ master / slave Propellor ⇒ master / slave, configured through Haskell Juju ⇒ Ubuntu, designed for the cloud Capistrano ⇒ Scripting in Ruby Fabric ⇒ Python Library for CM (Only Python 2) Paver ⇒ Fabric alternative for Python 3 · · · pup-v4.1-5
by Luke Kanies Based on the principles of CFEngine Client / server model Own domain-specific language (DSL) Buzzword compliant Easy to learn Easy to use Safe, uses SSL with an own PKI Idempotent Convergent · · · pup-v4.1-6
Puppet Do I have enough knowledge of Puppet If not, do I have time to learn Puppet Do I have a generic enough setup Do I have multiple environments (OTAP) Do I have multiple OS’s to take care of · · · pup-v4.1-7
Has the SSL key store One or more clients: Nodes Asks configuration sets Sends back reports Node Node Node HTTPS Reports SVN / Git Puppet master pup-v4.1-9
for client Compiles a catalog for the client Sends the catalog to the client Checks current state Enforces wanted state Sends back a report Manifest Manifest Manifest Catalog Apply configuration Query status Enforce state Defined system state Compile pup-v4.1-10
sure NTP and DNS are working Install the Puppet master software Install the Puppet client software Create a repository in VCS Deploy a simple file, like /etc/motd Extend things · · · pup-v4.1-11
defined in manifests Classes can inherit other classes Classes contain the resource definitions Nodes can be subscribed to classes Module Class Resource(s) File(s) Template(s) Node Node Node pup-v4.1-13
Start of the configuration tree is the manifests directory (directory environments) site.pp example import "prod/nodes" import "dmz/nodes" import "test/nodes" This will be deprecated in favor of “directory environments” pup-v4.1-14
called nodes.pp nodes.pp example node default { include generic } node "mach1.acme.com" inherits default { class { issue: loc => "attic", room => "closet",} include logcheck } inherits will be deprecated in Puppet version 4.x pup-v4.1-15
check into this service example service { "rsyslog" : ensure => running, enable => true, hasstatus => true, require => Package["rsyslog"], } pup-v4.1-18
other central systems user example user { "tonk" : ensure => "present", uid => "1001", gid => "1001", comment => "Ton Kersten", home => "/home/tonk", shell => "/bin/zsh", } pup-v4.1-20
Vox Pupuli tools https://github.com/voxpupuli Separate code and data with Hiera https://puppetlabs.com/blog/separation-concerns-how-hiera-helps Puppet Open Source Projects https://puppetlabs.com/puppet/open-source-projects Example 42 modules and tools http://www.example42.com Geppetto IDE http://puppetlabs.github.io/geppetto pup-v4.1-21
http://docs.puppetlabs.com/guides/style_guide.html The Pro Puppet book http://www.apress.com/9781430260400 Puppet documentation on Puppet Labs http://docs.puppetlabs.com The Puppet Forge https://forge.puppetlabs.com IRC: #puppet on Freenode · · · pup-v4.1-22