Watch along with the video at https://www.youtube.com/watch?v=ag-bI5lr55s
Luke Kanies, CEO and Founder of Puppet Labs, talks on "Making Puppet More Hackable" at PuppetCamp Europe '11, Amsterdam, Netherlands. Learn more: http://www.puppetlabs.com
25. I wanted to tell
The Story of Why
Friday, May 13, 2011
26. A bit of history:
Cfengine
Friday, May 13, 2011
27. I had no control
• Stuckwith whatever
application logic it shipped
with
• Core
components were
mandatory
Friday, May 13, 2011
28. Do Not Question
• Why is this file here?
• What requires this package?
• What will happen if I change
this file?
• Do these classes conflict?
Friday, May 13, 2011
31. Easily extensible,
everywhere
A quick count shows 10 kinds of
extensibility
Friday, May 13, 2011
32. The Puppet world
• Facts
• Resources
• Catalogs
• Edges
• Events
Friday, May 13, 2011
33. Questions can be asked
of every artifact
• Is this file being managed?
• What happens if I restart this service?
• Who requires this package?
• Did my service restart?
• Were there any failures?
Friday, May 13, 2011
34. Data > Code
• Caching
• Validation
• Implementation Independence
• Integration
Friday, May 13, 2011
35. "Exec[createrepo-PM-RHEL5-noarch]"
The Graph
Matters
"Yumrepo[PM-RHEL5-x86_64]"
"Package[postgresql-server]"
"Postgres::Role[puppet]"
"Package[thttpd]"
"File[/var/www/thttpd/html/yum-PM-RHEL5-x86_64]" "File[/var/www/thttpd/html/yum-PM-RHEL5-noarch]"
"Exec[rsync-rpmdir-PM-RHEL5-x86_64]" "Exec[rsync-rpmdir-PM-RHEL5-noarch]"
"Exec[createrepo-PM-RHEL5-x86_64]"
"Yumrepo[PM-RHEL5-noarch]"
Friday, May 13, 2011
37. AFAIK, Puppet is the
only tool that provides:
• A complete list of every resource managed in your
entire infrastructure
• A complete list of every dependency in your entire
infrastructure
• A complete list of every single change that’s ever
happened in your entire infrastructure
• With full run simulation and inspection
...all in a queryable, storable, cacheable way
Friday, May 13, 2011
38. Progress?
•Declarative
•Code runs on
Cfengine client
•Implicit •Imperative
dependencies •Code runs on
Chef client
•Implicit
dependencies
•Declarative
Puppet •Only data on clients, no code
•Explicit dependencies
Friday, May 13, 2011
39. How do we talk about
this? Market this?
Friday, May 13, 2011
50. Other application world-
views exist
• Only update catalogs during maintenance
windows
• Push catalog updates
• Send fact updates 10x as often as puppet runs
• Combine multiple catalogs on the client side
and run them together
• Compile catalogs for hundreds of hosts and
compare them
• Manually view catalog diffs before deploying
Friday, May 13, 2011
51. It doesn’t make sense
to extend the core apps
with this logic
Friday, May 13, 2011
52. And doing it yourself is
too hard with current
tools
Friday, May 13, 2011
53. So we should expose
everything and let you
build what you want
Friday, May 13, 2011