"Forging Great Modules: Standards, Tools and Patterns" by Ryan Coleman, Product Owner, Puppet Labs.
Presentation Overview: Your entire datacenter doesn't need to be lovingly hand-crafted Puppet manifests. Focus your time and energy on the specific, business enabling challenges. Puppet Labs runs the Puppet Forge, a community-driven collection of modules that let you do anything from build an entire OpenStack PaaS to provide you with an awesome new resource type. Come learn what the Forge is all about, where it's headed and how to build the next great module that will live amongst the 1300+ contributed by your peers.
Ryan will cover the following and a little more.
- What the Puppet Forge is and what you'll find there.
- Module Design Patterns (e.g., parameter naming & puppet-lint)
- Module Testing Frameworks and Practical Examples (e.g., rspec-puppet)
- Iterative Development Tools and Practices
- Forge Publishing Workflows (e.g., versioning & github)
Speaker Bio: Ryan is a product owner at Puppet Labs, responsible for the Puppet Forge. He used Puppet at Penn State to keep up with demands in Penn State's central infrastructure teams before joining Puppet Labs as a professional services engineer. He has tackled building services like Shibboleth, MIT Kerberos, Samba and Zimbra across distributed environments on top of IBM's GPFS file system and would love to chat with you about solving problems with Puppet.
26. puppetconf.com #puppetconf
Tools built with the Forge API
• Geppetto IDE
• librarian-puppet
• `puppet module`
• R10K
• MaestroDev Blacksmith
Friday, August 23, 13
27. Email me or talk to
me about the API!
ryan@puppetlabs.com
Friday, August 23, 13
64. puppetconf.com #puppetconf
Answer these questions
• What technology does your module
manage?
• What does it intend to do?
• How does it do it? (impact on the system)
• How should one use it?
Friday, August 23, 13
75. puppetconf.com #puppetconf
Semantic Versioning
• Based on Major.Minor.Patch scheme
• X.0.0 Major version for breaking change
• 0.X.0 Minor version for new non-
breaking functionality
• 0.0.X Patch version for backwards
compatible bug fixes
Friday, August 23, 13
78. puppetconf.com #puppetconf
Why put Hiera in modules?
• Eliminate the params.pp pattern
• Allow for swappable data sets
• Introspect data in ruby code
• ??? <--- we need your help
Friday, August 23, 13