Future Approaches to Working with Modules Henrik Lindberg
Nov 28, 2014
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