SlideShare a Scribd company logo
Modern Module
Development
Morgan Haskel | Puppet Labs
@KnittyNerd
Definitions
• ‘Module’ - code to install and configure a single
piece of software
• ‘Roles and Profiles’ - code to compose modules
in a more site-specific manner
How Did We Get Here?
• Before the forge
• Early forge
• Today
What Now?
• Deploying a new
technology != writing
a new module
• Start with the Puppet
Forge
• Check GitHub
Module Evaluation
Supported Modules
• Extensively tested
• Platform compatibility
• Widely used
• Actively maintained
Approved Modules
• Nominated by module authors or community
members
• Nominations reviewed by modules team
• Checked for functionality and following best
practices
• Evaluated against comparable modules
• Nominate a module you love today!
Module Scoring System
• Lint checking
• Puppet compatibility
• Metadata checking
• Community ratings
Does It Work For You?
• Check the module
documentation
• See if the module can
generate your
existing configuration
• How customizable is
it?
Other Checks
• Is the module actively maintained?
• Are issues and pull requests responded to?
• Can the module get you close to your
configuration?
• Does the module follow best practices?
Starting From Scratch
Write The Module You Want
• Writing generic
modules is hard
• Iterative development
helps
• You don’t have to do
it alone
Scoping, Scoping, Scoping
• Only manage a single
thing
• Avoid monolithic
modules
• Tighter scope ==
greater flexibility
Checking Your Work
• Unit and acceptance
tests for all new
modules
• Unit tests for most
new features
• Acceptance tests for
new big features
• Lower overhead
• Verify against catalog
• Test for compilation
• Exercise parameters
• More overhead
• Verify against running
system
• Full path test of software
• Check for config
correctness
Unit Tests
Acceptance
Tests
Danger Zone
Do not run acceptance
tests anywhere but on a
test system or virtual
machine.
Acceptance tests
occasionally have bugs
that can be very
destructive (rm -rf /)
Upkeep
• Test new code and
updates to existing code
• Regression tests are
important
Documentation
• Especially important
with shared code
• Don’t forget in code
comments
Life After Release
Module work isn’t done yet.
puppet-community
• GitHub organization
• Modules and tooling
maintained by and for the
Puppet community
• Reach out to @daenney and
@hirojin if you need more
information!
Development Toolkit
• Brand New Puppet Language Style Guide
• Consistency with ModuleSync
• #puppet-dev on freenode
Roles and Profiles
Putting It All Together
When in doubt, add
additional layers of
abstraction.
• Each node has a
single role
• Each role is
composed of one or
many profiles
• Each profile is
composed of other
profiles or modules
An Example
Modern Module Development
Modern Module Development
Improving the Ecosystem
Find and get involved in
a local Puppet User
Group!
Links!
• Nominate approved: https://tickets.puppetlabs.com/browse/
MODULES/component/12141
• Style Guide: https://docs.puppetlabs.com/guides/
style_guide.html
• ModuleSync: https://github.com/puppetlabs/modulesync
• puppet-community: http://puppet-community.github.io/
• Roles and Profiles: http://www.craigdunn.org/2012/05/239/
• Puppet User Group: http://puppetlabs.com/community/PUG
Questions?

More Related Content

What's hot (20)

ZIP
Introduction To Continuous Integration
Christopher Read
 
PDF
Introduction to CICD
Knoldus Inc.
 
PDF
Continuous delivery - tools and techniques
Mike McGarr
 
PDF
Continuous Integration
drluckyspin
 
PPT
Continuous Integration and Builds
Bhavin Javia
 
PDF
Continuous integration
hugo lu
 
PPTX
#speakgell - Continuous Integration in iconnect360
Derek Chan
 
PPSX
Continuous Integration - Oracle Database Objects
Prabhu Ramasamy
 
PDF
Seminar continuous delivery 19092013
Joris De Winne
 
PDF
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha
 
PDF
Continuous Integration 101
John Ferguson Smart Limited
 
PDF
Continuous Integration (CI) - An effective development practice
Dao Ngoc Kien
 
PDF
Why source control your Oracle Database?
Red Gate Software
 
PPTX
Continuous delivery applied
Mike McGarr
 
PPTX
Continous integration with jenkins
vodQA
 
PDF
Using Docker for Testing
Mukta Aphale
 
PDF
WSO2 IoTS Device Manufacturer Guide
hugo lu
 
PDF
Continuous integration using Jenkins and Sonar
Pascal Larocque
 
PDF
Devops, Secops, Opsec, DevSec *ops *.* ?
Kris Buytaert
 
PPTX
Alm with tfs 2013
MSDEVMTL
 
Introduction To Continuous Integration
Christopher Read
 
Introduction to CICD
Knoldus Inc.
 
Continuous delivery - tools and techniques
Mike McGarr
 
Continuous Integration
drluckyspin
 
Continuous Integration and Builds
Bhavin Javia
 
Continuous integration
hugo lu
 
#speakgell - Continuous Integration in iconnect360
Derek Chan
 
Continuous Integration - Oracle Database Objects
Prabhu Ramasamy
 
Seminar continuous delivery 19092013
Joris De Winne
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha
 
Continuous Integration 101
John Ferguson Smart Limited
 
Continuous Integration (CI) - An effective development practice
Dao Ngoc Kien
 
Why source control your Oracle Database?
Red Gate Software
 
Continuous delivery applied
Mike McGarr
 
Continous integration with jenkins
vodQA
 
Using Docker for Testing
Mukta Aphale
 
WSO2 IoTS Device Manufacturer Guide
hugo lu
 
Continuous integration using Jenkins and Sonar
Pascal Larocque
 
Devops, Secops, Opsec, DevSec *ops *.* ?
Kris Buytaert
 
Alm with tfs 2013
MSDEVMTL
 

Viewers also liked (12)

PDF
x banner hanuman 60x160cm
Anjaritha Aulia Rizky Parijadi
 
PDF
Hacking tips for public speaking & presentations
Giorgos Varvaris
 
PPTX
Goetz buyer persona
Sydney Goetz
 
PDF
Investment_Attraction_Strategy_2016-2019 (1)
Kwabena Ansah
 
PDF
Shammet_2016
Ashraf Mohammed Shammet
 
PPTX
PHPUnit
Rinat Khabibiev
 
PPT
Il Maquillage - Aspetti antropologici
1003155
 
DOCX
Sach_CV_4.22.2015
Sachin Jogal
 
PDF
Cirrus final thesis reduced
Adriana Enriquez
 
PPTX
портфоліо вчителя
Galburk
 
DOC
NEW CV MAHADEV
Mahadev Salunkhe
 
x banner hanuman 60x160cm
Anjaritha Aulia Rizky Parijadi
 
Hacking tips for public speaking & presentations
Giorgos Varvaris
 
Goetz buyer persona
Sydney Goetz
 
Investment_Attraction_Strategy_2016-2019 (1)
Kwabena Ansah
 
Il Maquillage - Aspetti antropologici
1003155
 
Sach_CV_4.22.2015
Sachin Jogal
 
Cirrus final thesis reduced
Adriana Enriquez
 
портфоліо вчителя
Galburk
 
NEW CV MAHADEV
Mahadev Salunkhe
 
Ad

Similar to Modern Module Development (20)

PDF
Open.source.innovation.20070624
Vu Hung Nguyen
 
PDF
KrishnaToolComparisionPPT.pdf
QA or the Highway
 
KEY
Continuous Integration In A PHP World
Idaf_1er
 
POTX
Functional Tests. PHP Unconf 2016
Vladislav Fedorischev
 
PPTX
Team Development on Force.com
Daniel Hoechst
 
PPT
Automated testing 101
Tabitha Chapman
 
PPTX
Vs11 overview
ravclarke
 
PDF
From silex to symfony and viceversa
Ronny López
 
PPTX
Generalization in Auto-Testing. How we put what we had into new Technological...
SQALab
 
PPTX
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
Vincent Biret
 
KEY
Portable infrastructure with puppet
lkanies
 
PPTX
Development Processes and Tooling
Bora Bilgin
 
PDF
Why your company loves to welcome change but sucks at accommodating it
Farooq Ali
 
PDF
CNUG TDD June 2014
Mayank Srivastava
 
PPTX
CPAN Curation
neilbowers
 
PDF
Continuous Integration: Improving Quality in Moodle
Dan Poltawski
 
PDF
Developing better PHP projects
Mohammad Emran Hasan
 
PPTX
Making software development processes to work for you
Ambientia
 
PPTX
Selenium digitalinfobytes-120829005812-phpapp02
Kdeepapal Mishra
 
PPTX
Basic Selenium Training
Dipesh Bhatewara
 
Open.source.innovation.20070624
Vu Hung Nguyen
 
KrishnaToolComparisionPPT.pdf
QA or the Highway
 
Continuous Integration In A PHP World
Idaf_1er
 
Functional Tests. PHP Unconf 2016
Vladislav Fedorischev
 
Team Development on Force.com
Daniel Hoechst
 
Automated testing 101
Tabitha Chapman
 
Vs11 overview
ravclarke
 
From silex to symfony and viceversa
Ronny López
 
Generalization in Auto-Testing. How we put what we had into new Technological...
SQALab
 
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
Vincent Biret
 
Portable infrastructure with puppet
lkanies
 
Development Processes and Tooling
Bora Bilgin
 
Why your company loves to welcome change but sucks at accommodating it
Farooq Ali
 
CNUG TDD June 2014
Mayank Srivastava
 
CPAN Curation
neilbowers
 
Continuous Integration: Improving Quality in Moodle
Dan Poltawski
 
Developing better PHP projects
Mohammad Emran Hasan
 
Making software development processes to work for you
Ambientia
 
Selenium digitalinfobytes-120829005812-phpapp02
Kdeepapal Mishra
 
Basic Selenium Training
Dipesh Bhatewara
 
Ad

Recently uploaded (20)

PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
July Patch Tuesday
Ivanti
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Biography of Daniel Podor.pdf
Daniel Podor
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
July Patch Tuesday
Ivanti
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 

Modern Module Development

  • 1. Modern Module Development Morgan Haskel | Puppet Labs @KnittyNerd
  • 2. Definitions • ‘Module’ - code to install and configure a single piece of software • ‘Roles and Profiles’ - code to compose modules in a more site-specific manner
  • 3. How Did We Get Here? • Before the forge • Early forge • Today
  • 4. What Now? • Deploying a new technology != writing a new module • Start with the Puppet Forge • Check GitHub
  • 6. Supported Modules • Extensively tested • Platform compatibility • Widely used • Actively maintained
  • 7. Approved Modules • Nominated by module authors or community members • Nominations reviewed by modules team • Checked for functionality and following best practices • Evaluated against comparable modules • Nominate a module you love today!
  • 8. Module Scoring System • Lint checking • Puppet compatibility • Metadata checking • Community ratings
  • 9. Does It Work For You? • Check the module documentation • See if the module can generate your existing configuration • How customizable is it?
  • 10. Other Checks • Is the module actively maintained? • Are issues and pull requests responded to? • Can the module get you close to your configuration? • Does the module follow best practices?
  • 12. Write The Module You Want • Writing generic modules is hard • Iterative development helps • You don’t have to do it alone
  • 13. Scoping, Scoping, Scoping • Only manage a single thing • Avoid monolithic modules • Tighter scope == greater flexibility
  • 14. Checking Your Work • Unit and acceptance tests for all new modules • Unit tests for most new features • Acceptance tests for new big features
  • 15. • Lower overhead • Verify against catalog • Test for compilation • Exercise parameters • More overhead • Verify against running system • Full path test of software • Check for config correctness Unit Tests Acceptance Tests
  • 16. Danger Zone Do not run acceptance tests anywhere but on a test system or virtual machine. Acceptance tests occasionally have bugs that can be very destructive (rm -rf /)
  • 17. Upkeep • Test new code and updates to existing code • Regression tests are important
  • 18. Documentation • Especially important with shared code • Don’t forget in code comments
  • 19. Life After Release Module work isn’t done yet.
  • 20. puppet-community • GitHub organization • Modules and tooling maintained by and for the Puppet community • Reach out to @daenney and @hirojin if you need more information!
  • 21. Development Toolkit • Brand New Puppet Language Style Guide • Consistency with ModuleSync • #puppet-dev on freenode
  • 23. Putting It All Together When in doubt, add additional layers of abstraction.
  • 24. • Each node has a single role • Each role is composed of one or many profiles • Each profile is composed of other profiles or modules
  • 28. Improving the Ecosystem Find and get involved in a local Puppet User Group!
  • 29. Links! • Nominate approved: https://tickets.puppetlabs.com/browse/ MODULES/component/12141 • Style Guide: https://docs.puppetlabs.com/guides/ style_guide.html • ModuleSync: https://github.com/puppetlabs/modulesync • puppet-community: http://puppet-community.github.io/ • Roles and Profiles: http://www.craigdunn.org/2012/05/239/ • Puppet User Group: http://puppetlabs.com/community/PUG