๐ญ Puppet is a tirefire
Configuration management for people who enjoy pain

Puppet: Because manually configuring 1000 servers is for peasants, but debugging a single manifest for 8 hours is totally reasonable.
๐ฅ Greatest Hits
$ puppet help help help help help
Error: Puppet help only takes two (optional) arguments: a subcommand and
an action
Error: Try 'puppet help help help' for usage
๐ฏ The Dependency Dance
# This should work...
class myapp {
package { 'important-package':
ensure => present,
before => Service['myapp'],
}
service { 'myapp':
ensure => running,
require => Package['important-package'],
}
}
# Dependency cycle detected. Good luck!
๐ The Puppet Wayโข
- Write a simple manifest
- Run
puppet apply
- Watch it fail spectacularly
- Add 47 dependency arrows
- Still fails, but now with more circular dependencies
- Rewrite everything in Ansible
- Miss the good old days of
ssh server && sudo thing
"What you wrote vs. what Puppet heard"
What you wrote:
file { '/etc/config':
content => 'production settings',
}
What Puppet heard:
file { '/etc/config':
content => 'test settings from 3 runs ago',
mode => '000',
owner => 'nobody',
}
๐ก Pro Tips
- Always remember: Puppet knows better than you
- If it's not converging, you're not doing it the Puppet Wayโข
- When in doubt, add more
notify =>
arrows - "It works on my laptop" is not a valid Puppet strategy
- The catalog will definitely compile this time. Definitely.
- Puppet runs every 30 minutes whether you need it or not
- Hiera is totally intuitive once you read the documentation 47 times
"Puppet: Making simple tasks complicated since 2005"
โ Everyone who's tried to deploy a file with specific permissions