Future Approaches to Working with Modules
Henrik Lindberg
The Vision
Starting out
Making Your Puppets
First attempt at running
Testing
Syntax Error : got ‘:’ expected ‘}’on line 1
Avoiding Complexity is Natural
Simplicity through Denial
Best Practices
• Use modules from the beginning• Use version control• Use sound design principles– think in terms of reuse– separation of concerns– organize in terms of specificity:• puppet, common, generic, application, site, instance…
A New Set of Issues
• What files goes where, and why• Manage dependencies• Collaboration within and between
organizations
Isn’t there an app for that?
Geppetto Project
• What is Geppetto?• Why did we create it?• What does it do?• How can I get it?• How can I contribute?
Geppetto Objectives
• Flatten the learning curve• Support Puppet best practices• Encourage sharing
What is in Geppetto
• Puppet Manifest editor• Module meta data editor• Incremental builders– validates puppet manifests– validates cross references (functions, types, definitions)– validates modulefiles– keeps metadata in sync (files and checksums)
• Project wizards• Streamlined module publication/consumption
to/from the Puppet Forge.
Puppet Manifest Editor
• Syntax coloring– set your own preferences
• Integrated fast validation / error markers• Quick fixes• Templates– add your own
• Code completion
Incremental Builders
• Validates Puppet Manifests• Validates cross references – functions, types, definitions, classes, parameters– understands visibility as defined by dependencies
• Validates modulefiles• Keeps metadata in sync– files and checksums in metadata.json
Project Wizards
• New Puppet Module• Get Module from Forge• Empty (blank) Puppet project• Export Module for upload to Forge
Packaging
• All in one download, ready to use– integrated with svn and git
• As Eclipse plugins• Command line interface
(enhanced puppet module tool).• Open source (Apache, EPL)
Demo
How to contribute
Collaboration / Roadmap for the Forge
• Collaboration – within and between organizations using the same mechanisms.
• Support full set of use cases– get/update, install/use, repair/modify, share/contribute
• Support additional composition patterns– Group/lineup– Fragments– Private vs. Exported (everything is API)
• Improved dependency management– install a module, also get its dependencies– only gives you latest version (problem: stability)– no version ranges
• Use of git
Resources…
Geppettohttps://github.com/cloudsmith/[email protected]:cloudsmith/geppetto.git
Geppetto Eclipse Update site http://download.cloudsmith.com/geppetto/updates
Forgehttp://forge.puppetlabs.com/
Puppetlabshttp://www.puppetlabs.com
Project Geppetto
Henrik Lindberg