SlideShare a Scribd company logo
1 of 24
Download to read offline
© Martin Alfke - 2014
Module (Re)writing the
Smart Way
Martin Alfke	

<martin.alfke@buero20.org>	

!
Puppet Camp Paris 2014
© Martin Alfke - 2014
About Me
• Freelancer - Berlin/Germany	

• Automation and Cfg Mgmt	

• PCP 2013	

• Module Contributor	

• PuppetLabs Partner
Martin Alfke - at home
© Martin Alfke - 2014
What is this talk about?
The story of finding a module,
learning that it is not useful for
you, rethink and rewrite new
shared, public module from
scratch use it in your private
roles and profiles and maintain it
for other users.
Martin Alfke - SFO -Vesuvio Cafe
© Martin Alfke - 2014
What else?
Why contributing is better than
building a golden porcelain tower in
the dark of your closet.	

or	

The Puppet community way of
getting a task done.
Martin Alfke - Berlin - Hotel du Rome
© Martin Alfke - 2014
The Task
Yes, we will have that task
finished by yesterday !
http://www.mid-day.com/articles/day-29-in-bigg-boss-6-its-vrijesh-vs-major-sidhu/187949
© Martin Alfke - 2014
How to start?
We build a Puppet module !!	

!
But … how should we start?
http://designtaxi.com/article/101902/How-To-Start/
© Martin Alfke - 2014
The Lone Warrior Way
Martin Alfke - Lassen County, California
© Martin Alfke - 2014
Coding Puppet …
class webserver13 {	
package { 'apache2': ensure => present, }	
file { '/etc/apache2/sites-enabled/000-default':	
ensure => absent,	
}	
file { '/etc/apache2/sites-available/10_webserver13':	
ensure => file,	
source => 'puppet:///modules/webserver13/10_webserver13',	
}	
file { '/etc/apache2/mods-enabled/alias.conf':	
ensure => link,	
target => '/etc/apache2/mods-available/alias.conf',	
}	
file { '/etc/apache2/mods_enabled/alias.load':	
ensure => link,	
target => '/etc/apache2/mods-available/alias.load',	
}	
...	
}
© Martin Alfke - 2014
Documentation / Bugfixes
Who is doing reviews?	

 	

 	

 	

 ☞	

 	

 YOU	

Who does documentation?	

 	

 	

 ☞	

 	

 YOU	

Who will support you?	

	

 	

 	

 ☞	

 	

 YOU
http://lonewarriorswa.com/
© Martin Alfke - 2014
Features? Changes?
poor lonesome cowboy	

I’m a poor lonesome cowboy	

I'm a long long way from home	

And this poor lonesome cowboy	

Has got a long long way to roam	

Over mountains over prairies	

From dawn till day is done	

My horse and me keep riding	

Into the setting sun	

http://smellslikescreenspirit.com/2009/12/warner-bros-2010-preview/Poor lonesome cowboy - Pat Woods
© Martin Alfke - 2014
The Smart Way
Is there something available?	

DevOps means to understand and
reuse foreign code.	

Use Puppet as a framework.
http://www.thindifference.com/2011/02/11/what-is-the-best-way-to-brand-the-middle/
© Martin Alfke - 2014
You are not alone
There are:	

- companies using the same technology	

- developers using the same framework	

- sites which collect informations	

- people talking about their solution
http://clivehicksjenkins.wordpress.com/
© Martin Alfke - 2014
Sources
puppetlabs.com
github.com
http://en.wikipedia.org/wiki/File:Microsoft-Staff-1978.jpg
© Martin Alfke - 2014
Found the solution?
Give feedback	

Cooperate / Fix bugs / Improve
http://www.positoons.de/leistungen/character-design-info/eierlegende-wollmilchsau/
© Martin Alfke - 2014
Reusing Modules
class webserver13 {	
class { ‘::apache’:	
default_vhost => false,	
default_mods => false,	
}	
include ::apache::mod::alias	
...	
}
© Martin Alfke - 2014
Reality?
We were checking for a module for
cloud management	

We found one	

We talked to upstream: 	

“Oh, …, yes, …, this module, …, ahem,
…, do yourself a favour, …, rewrite it”	

or	

What if you found nothing?
http://technorati.com/entertainment/celebrity/article/the-12-steps-of-reality-tv/
© Martin Alfke - 2014
Start Writing Public Code
Start a shareable, parameterised
generic module	

Always keep in mind separation of code
and data	

Let others decide which data source
they want to use.	

Do never put private data in your repo	

Start using public repo immediately	

Take care on proper license (AGPL,
GPL,…)
http://www.security-faqs.com/why-your-company-
should-issue-open-source-security-packages.html
© Martin Alfke - 2014
Combine Public/Private
Use your public module like any other
(e.g. puppetlabs apache)	

Add data only to your private
(wrapper) module	

Search for “Puppet Roles and Profiles”
to understand this separation
http://www.internetmarketinginc.com/blog/share-or-not-share-
thats-the-question-going-public-with-private-information/
© Martin Alfke - 2014
Responsibility
Be a responsive upstream	

Always remember that other people
might want to solve similar problems
(not identical)	

Make your code run on different
platforms	

Build a community around your module	

Review Pull Requests in time
http://ryaneller.com/guest-post/guest-post-friday-the-power-of-responsibility/
© Martin Alfke - 2014
Improvement
Take your time to implement or
merge improvements	

Write test	

Write good documentation and
usage examples	

Write more tests	

Use your code
© Martin Alfke - 2014
Summary - 1
Work smart, not hard	

Write good documentation, examples and
tests	

Write blog posts (mention your module
and company)	

Be a responsive and responsible upstream	

Review other users contribution	

Allow access if contributors code quality
fits your requirements
Martin Alfke - SFO
© Martin Alfke - 2014
Summary - 2
Never refactor	

Restart prevents old bugs in new
module	

There will always come more
requirements	

Parameters, parameters, parameters	

Let other users decide for their
preferred data source	

Use a proper open source license
Martin Alfke - SFO
© Martin Alfke - 2014
Summary - 3
K.I.S.S	

(Keep it simple and stupid)	

“perfection is achieved, not when there
is nothing more to add, but when there
is nothing left to take away.”	

(Antoine de Saint-Exupéry)
Martin Alfke - SFO
© Martin Alfke - 2014

More Related Content

Similar to Puppet Camp Paris 2014: Module Rewriting The Smart Way

Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Eugenio Minardi
 
Bridging the gap between business and technology - Behaviour Driven Developme...
Bridging the gap between business and technology - Behaviour Driven Developme...Bridging the gap between business and technology - Behaviour Driven Developme...
Bridging the gap between business and technology - Behaviour Driven Developme...Eugenio Minardi
 
FAKE (F# Make) & Automation
FAKE (F# Make) & AutomationFAKE (F# Make) & Automation
FAKE (F# Make) & AutomationSergey Tihon
 
Technologies, Places, Business Models for Open Design @ Pixelversity, Helsink...
Technologies, Places, Business Models for Open Design @ Pixelversity, Helsink...Technologies, Places, Business Models for Open Design @ Pixelversity, Helsink...
Technologies, Places, Business Models for Open Design @ Pixelversity, Helsink...Massimo Menichinelli
 
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattlegarrett honeycutt
 
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicagogarrett honeycutt
 
From Flash to HTML5 in a flash: your ultimate guide to converting legacy e-le...
From Flash to HTML5 in a flash: your ultimate guide to converting legacy e-le...From Flash to HTML5 in a flash: your ultimate guide to converting legacy e-le...
From Flash to HTML5 in a flash: your ultimate guide to converting legacy e-le...Litmos Heroes
 
Go_ Building Web Applications ( PDFDrive.com ).pdf
Go_ Building Web Applications ( PDFDrive.com ).pdfGo_ Building Web Applications ( PDFDrive.com ).pdf
Go_ Building Web Applications ( PDFDrive.com ).pdfRicardoSousa631355
 
Research & planning: Digital technology and ICT used
Research & planning: Digital technology and ICT usedResearch & planning: Digital technology and ICT used
Research & planning: Digital technology and ICT usedKatiey_x
 
The Art of Writing Efficient Software
The Art of Writing Efficient SoftwareThe Art of Writing Efficient Software
The Art of Writing Efficient SoftwareRalf Holly
 
Cf objective2014 software-craftsmanship
Cf objective2014   software-craftsmanshipCf objective2014   software-craftsmanship
Cf objective2014 software-craftsmanshipKev McCabe
 
Cf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanshipCf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanshipColdFusionConference
 
Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...Eugenio Minardi
 
CloudFoundry-summit-2015-a-look-back
CloudFoundry-summit-2015-a-look-backCloudFoundry-summit-2015-a-look-back
CloudFoundry-summit-2015-a-look-backKrishna-Kumar
 
Webinar - Manage user, groups, packages in windows using puppet
Webinar - Manage user, groups, packages in windows using puppetWebinar - Manage user, groups, packages in windows using puppet
Webinar - Manage user, groups, packages in windows using puppetOlinData
 
Drupal 8 Desacoplar la lógica de negocio del framework
Drupal 8 Desacoplar la lógica de negocio del frameworkDrupal 8 Desacoplar la lógica de negocio del framework
Drupal 8 Desacoplar la lógica de negocio del frameworkManuel López Torrent
 
xAPI for Training Managers
xAPI for Training ManagersxAPI for Training Managers
xAPI for Training ManagersAndrew Downes
 
NRWConf - Workshop Mobile Apps
NRWConf - Workshop Mobile AppsNRWConf - Workshop Mobile Apps
NRWConf - Workshop Mobile AppsPeter Hecker
 

Similar to Puppet Camp Paris 2014: Module Rewriting The Smart Way (20)

Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)
 
Bridging the gap between business and technology - Behaviour Driven Developme...
Bridging the gap between business and technology - Behaviour Driven Developme...Bridging the gap between business and technology - Behaviour Driven Developme...
Bridging the gap between business and technology - Behaviour Driven Developme...
 
FAKE (F# Make) & Automation
FAKE (F# Make) & AutomationFAKE (F# Make) & Automation
FAKE (F# Make) & Automation
 
Technologies, Places, Business Models for Open Design @ Pixelversity, Helsink...
Technologies, Places, Business Models for Open Design @ Pixelversity, Helsink...Technologies, Places, Business Models for Open Design @ Pixelversity, Helsink...
Technologies, Places, Business Models for Open Design @ Pixelversity, Helsink...
 
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
 
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
 
From Flash to HTML5 in a flash: your ultimate guide to converting legacy e-le...
From Flash to HTML5 in a flash: your ultimate guide to converting legacy e-le...From Flash to HTML5 in a flash: your ultimate guide to converting legacy e-le...
From Flash to HTML5 in a flash: your ultimate guide to converting legacy e-le...
 
Go_ Building Web Applications ( PDFDrive.com ).pdf
Go_ Building Web Applications ( PDFDrive.com ).pdfGo_ Building Web Applications ( PDFDrive.com ).pdf
Go_ Building Web Applications ( PDFDrive.com ).pdf
 
Research & planning: Digital technology and ICT used
Research & planning: Digital technology and ICT usedResearch & planning: Digital technology and ICT used
Research & planning: Digital technology and ICT used
 
The Art of Writing Efficient Software
The Art of Writing Efficient SoftwareThe Art of Writing Efficient Software
The Art of Writing Efficient Software
 
Cf objective2014 software-craftsmanship
Cf objective2014   software-craftsmanshipCf objective2014   software-craftsmanship
Cf objective2014 software-craftsmanship
 
Cf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanshipCf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanship
 
Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...
 
Resume
ResumeResume
Resume
 
Omnibus to the future!
Omnibus to the future!Omnibus to the future!
Omnibus to the future!
 
CloudFoundry-summit-2015-a-look-back
CloudFoundry-summit-2015-a-look-backCloudFoundry-summit-2015-a-look-back
CloudFoundry-summit-2015-a-look-back
 
Webinar - Manage user, groups, packages in windows using puppet
Webinar - Manage user, groups, packages in windows using puppetWebinar - Manage user, groups, packages in windows using puppet
Webinar - Manage user, groups, packages in windows using puppet
 
Drupal 8 Desacoplar la lógica de negocio del framework
Drupal 8 Desacoplar la lógica de negocio del frameworkDrupal 8 Desacoplar la lógica de negocio del framework
Drupal 8 Desacoplar la lógica de negocio del framework
 
xAPI for Training Managers
xAPI for Training ManagersxAPI for Training Managers
xAPI for Training Managers
 
NRWConf - Workshop Mobile Apps
NRWConf - Workshop Mobile AppsNRWConf - Workshop Mobile Apps
NRWConf - Workshop Mobile Apps
 

More from Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyamlPuppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscodePuppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping groundPuppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyPuppet
 

More from Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

Puppet Camp Paris 2014: Module Rewriting The Smart Way

  • 1. © Martin Alfke - 2014 Module (Re)writing the Smart Way Martin Alfke <martin.alfke@buero20.org> ! Puppet Camp Paris 2014
  • 2. © Martin Alfke - 2014 About Me • Freelancer - Berlin/Germany • Automation and Cfg Mgmt • PCP 2013 • Module Contributor • PuppetLabs Partner Martin Alfke - at home
  • 3. © Martin Alfke - 2014 What is this talk about? The story of finding a module, learning that it is not useful for you, rethink and rewrite new shared, public module from scratch use it in your private roles and profiles and maintain it for other users. Martin Alfke - SFO -Vesuvio Cafe
  • 4. © Martin Alfke - 2014 What else? Why contributing is better than building a golden porcelain tower in the dark of your closet. or The Puppet community way of getting a task done. Martin Alfke - Berlin - Hotel du Rome
  • 5. © Martin Alfke - 2014 The Task Yes, we will have that task finished by yesterday ! http://www.mid-day.com/articles/day-29-in-bigg-boss-6-its-vrijesh-vs-major-sidhu/187949
  • 6. © Martin Alfke - 2014 How to start? We build a Puppet module !! ! But … how should we start? http://designtaxi.com/article/101902/How-To-Start/
  • 7. © Martin Alfke - 2014 The Lone Warrior Way Martin Alfke - Lassen County, California
  • 8. © Martin Alfke - 2014 Coding Puppet … class webserver13 { package { 'apache2': ensure => present, } file { '/etc/apache2/sites-enabled/000-default': ensure => absent, } file { '/etc/apache2/sites-available/10_webserver13': ensure => file, source => 'puppet:///modules/webserver13/10_webserver13', } file { '/etc/apache2/mods-enabled/alias.conf': ensure => link, target => '/etc/apache2/mods-available/alias.conf', } file { '/etc/apache2/mods_enabled/alias.load': ensure => link, target => '/etc/apache2/mods-available/alias.load', } ... }
  • 9. © Martin Alfke - 2014 Documentation / Bugfixes Who is doing reviews? ☞ YOU Who does documentation? ☞ YOU Who will support you? ☞ YOU http://lonewarriorswa.com/
  • 10. © Martin Alfke - 2014 Features? Changes? poor lonesome cowboy I’m a poor lonesome cowboy I'm a long long way from home And this poor lonesome cowboy Has got a long long way to roam Over mountains over prairies From dawn till day is done My horse and me keep riding Into the setting sun http://smellslikescreenspirit.com/2009/12/warner-bros-2010-preview/Poor lonesome cowboy - Pat Woods
  • 11. © Martin Alfke - 2014 The Smart Way Is there something available? DevOps means to understand and reuse foreign code. Use Puppet as a framework. http://www.thindifference.com/2011/02/11/what-is-the-best-way-to-brand-the-middle/
  • 12. © Martin Alfke - 2014 You are not alone There are: - companies using the same technology - developers using the same framework - sites which collect informations - people talking about their solution http://clivehicksjenkins.wordpress.com/
  • 13. © Martin Alfke - 2014 Sources puppetlabs.com github.com http://en.wikipedia.org/wiki/File:Microsoft-Staff-1978.jpg
  • 14. © Martin Alfke - 2014 Found the solution? Give feedback Cooperate / Fix bugs / Improve http://www.positoons.de/leistungen/character-design-info/eierlegende-wollmilchsau/
  • 15. © Martin Alfke - 2014 Reusing Modules class webserver13 { class { ‘::apache’: default_vhost => false, default_mods => false, } include ::apache::mod::alias ... }
  • 16. © Martin Alfke - 2014 Reality? We were checking for a module for cloud management We found one We talked to upstream: “Oh, …, yes, …, this module, …, ahem, …, do yourself a favour, …, rewrite it” or What if you found nothing? http://technorati.com/entertainment/celebrity/article/the-12-steps-of-reality-tv/
  • 17. © Martin Alfke - 2014 Start Writing Public Code Start a shareable, parameterised generic module Always keep in mind separation of code and data Let others decide which data source they want to use. Do never put private data in your repo Start using public repo immediately Take care on proper license (AGPL, GPL,…) http://www.security-faqs.com/why-your-company- should-issue-open-source-security-packages.html
  • 18. © Martin Alfke - 2014 Combine Public/Private Use your public module like any other (e.g. puppetlabs apache) Add data only to your private (wrapper) module Search for “Puppet Roles and Profiles” to understand this separation http://www.internetmarketinginc.com/blog/share-or-not-share- thats-the-question-going-public-with-private-information/
  • 19. © Martin Alfke - 2014 Responsibility Be a responsive upstream Always remember that other people might want to solve similar problems (not identical) Make your code run on different platforms Build a community around your module Review Pull Requests in time http://ryaneller.com/guest-post/guest-post-friday-the-power-of-responsibility/
  • 20. © Martin Alfke - 2014 Improvement Take your time to implement or merge improvements Write test Write good documentation and usage examples Write more tests Use your code
  • 21. © Martin Alfke - 2014 Summary - 1 Work smart, not hard Write good documentation, examples and tests Write blog posts (mention your module and company) Be a responsive and responsible upstream Review other users contribution Allow access if contributors code quality fits your requirements Martin Alfke - SFO
  • 22. © Martin Alfke - 2014 Summary - 2 Never refactor Restart prevents old bugs in new module There will always come more requirements Parameters, parameters, parameters Let other users decide for their preferred data source Use a proper open source license Martin Alfke - SFO
  • 23. © Martin Alfke - 2014 Summary - 3 K.I.S.S (Keep it simple and stupid) “perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.” (Antoine de Saint-Exupéry) Martin Alfke - SFO
  • 24. © Martin Alfke - 2014