working with modules - henrik lindberg - puppetcamp europe '11

23
Future Approaches to Working with Modules Henrik Lindberg

Upload: puppet-labs

Post on 28-Nov-2014

3.230 views

Category:

Education


2 download

DESCRIPTION

Video at http://youtu.be/vSCrLZas6to Learn More: http://puppetlabs.com/puppet/puppet-enterprise/ Henrik Lindberg - Current and Future Approaches to Working with Modules PuppetCamp Europe 2011: Amsterdam, Netherlands

TRANSCRIPT

Page 1: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Future Approaches to Working with Modules

Henrik Lindberg

Page 2: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

The Vision

Page 3: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Starting out

Page 4: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Making Your Puppets

Page 5: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

First attempt at running

Page 6: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Testing

Syntax Error : got ‘:’ expected ‘}’on line 1

Page 7: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Avoiding Complexity is Natural

Page 8: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Simplicity through Denial

Page 9: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

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…

Page 10: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

A New Set of Issues

• What files goes where, and why• Manage dependencies• Collaboration within and between

organizations

Page 11: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Isn’t there an app for that?

Page 12: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Geppetto Project

• What is Geppetto?• Why did we create it?• What does it do?• How can I get it?• How can I contribute?

Page 13: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Geppetto Objectives

• Flatten the learning curve• Support Puppet best practices• Encourage sharing

Page 14: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

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.

Page 15: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Puppet Manifest Editor

• Syntax coloring– set your own preferences

• Integrated fast validation / error markers• Quick fixes• Templates– add your own

• Code completion

Page 16: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

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

Page 17: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Project Wizards

• New Puppet Module• Get Module from Forge• Empty (blank) Puppet project• Export Module for upload to Forge

Page 18: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

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)

Page 19: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Demo

Page 20: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

How to contribute

Page 21: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

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

Page 22: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

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

Page 23: Working with Modules - Henrik Lindberg - PuppetCamp Europe '11

Project Geppetto

Henrik Lindberg