SlideShare a Scribd company logo
© Martin Alfke - 2014
Module (Re)writing the
Smart Way
Martin Alfke	

<martin.alfke@buero20.org>	

!
Puppet Camp Berlin 2014
www.netways.de/puppetcamp
Check-In / Schedule
Please provide your name or a form of identification at the conference registration desk.
Location
© 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
© Martin Alfke - 2014
www.netways.de/puppetcamp
Check-In / Schedule
Please provide your name or a form of identification at the conference registration desk.
Location
© Martin Alfke - 2014
PuppetForge
© Martin Alfke - 2014
PuppetForge - ?
© Martin Alfke - 2014
PuppetForge - 2
© Martin Alfke - 2014
PuppetForge - yea
© Martin Alfke - 2014
GitHub - woo
© Martin Alfke - 2014
PuppetForge
© Martin Alfke - 2014
GitHub
© Martin Alfke - 2014
GitHub - Module must
haves
© Martin Alfke - 2014

More Related Content

Viewers also liked

Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
Puppet
 
State of Puppet Amsterdam
State of Puppet AmsterdamState of Puppet Amsterdam
State of Puppet Amsterdam
Puppet
 
Eclipse con 2012 - Frictionless operations with Puppet - Luke Kanies
Eclipse con 2012 - Frictionless operations with Puppet - Luke KaniesEclipse con 2012 - Frictionless operations with Puppet - Luke Kanies
Eclipse con 2012 - Frictionless operations with Puppet - Luke Kanies
Puppet
 
Whirr devdown
Whirr devdownWhirr devdown
Whirr devdown
Puppet
 
Puppet, now with google!
Puppet, now with google!Puppet, now with google!
Puppet, now with google!
Puppet
 
Presentation
PresentationPresentation
Presentation
Puppet
 
Puppet Camp London 2014: Keynote
Puppet Camp London 2014: KeynotePuppet Camp London 2014: Keynote
Puppet Camp London 2014: Keynote
Puppet
 
Writing and Publishing Puppet Modules
Writing and Publishing Puppet ModulesWriting and Publishing Puppet Modules
Writing and Publishing Puppet Modules
Puppet
 
Introduction to Marionette Collective
Introduction to Marionette CollectiveIntroduction to Marionette Collective
Introduction to Marionette Collective
Puppet
 
Intro to Systems Orchestration with MCollective
Intro to Systems Orchestration with MCollectiveIntro to Systems Orchestration with MCollective
Intro to Systems Orchestration with MCollective
Puppet
 
Puppet Camp Tokyo 2014: Keynote
Puppet Camp Tokyo 2014: KeynotePuppet Camp Tokyo 2014: Keynote
Puppet Camp Tokyo 2014: Keynote
Puppet
 
Puppet and Apache CloudStack
Puppet and Apache CloudStackPuppet and Apache CloudStack
Puppet and Apache CloudStack
Puppet
 
Nobody Has to Die Today: Keeping the Peace with the Other Meat Sacks - Puppet...
Nobody Has to Die Today: Keeping the Peace with the Other Meat Sacks - Puppet...Nobody Has to Die Today: Keeping the Peace with the Other Meat Sacks - Puppet...
Nobody Has to Die Today: Keeping the Peace with the Other Meat Sacks - Puppet...
Puppet
 
Stop Hiring Devops Experts (And Start Growing Them) - PuppetConf 2013
Stop Hiring Devops Experts (And Start Growing Them) - PuppetConf 2013Stop Hiring Devops Experts (And Start Growing Them) - PuppetConf 2013
Stop Hiring Devops Experts (And Start Growing Them) - PuppetConf 2013
Puppet
 
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Puppet
 
Puppet Camp London 2014: MCollective as an Integration Layer
Puppet Camp London 2014: MCollective as an Integration LayerPuppet Camp London 2014: MCollective as an Integration Layer
Puppet Camp London 2014: MCollective as an Integration Layer
Puppet
 

Viewers also liked (16)

Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of...
 
State of Puppet Amsterdam
State of Puppet AmsterdamState of Puppet Amsterdam
State of Puppet Amsterdam
 
Eclipse con 2012 - Frictionless operations with Puppet - Luke Kanies
Eclipse con 2012 - Frictionless operations with Puppet - Luke KaniesEclipse con 2012 - Frictionless operations with Puppet - Luke Kanies
Eclipse con 2012 - Frictionless operations with Puppet - Luke Kanies
 
Whirr devdown
Whirr devdownWhirr devdown
Whirr devdown
 
Puppet, now with google!
Puppet, now with google!Puppet, now with google!
Puppet, now with google!
 
Presentation
PresentationPresentation
Presentation
 
Puppet Camp London 2014: Keynote
Puppet Camp London 2014: KeynotePuppet Camp London 2014: Keynote
Puppet Camp London 2014: Keynote
 
Writing and Publishing Puppet Modules
Writing and Publishing Puppet ModulesWriting and Publishing Puppet Modules
Writing and Publishing Puppet Modules
 
Introduction to Marionette Collective
Introduction to Marionette CollectiveIntroduction to Marionette Collective
Introduction to Marionette Collective
 
Intro to Systems Orchestration with MCollective
Intro to Systems Orchestration with MCollectiveIntro to Systems Orchestration with MCollective
Intro to Systems Orchestration with MCollective
 
Puppet Camp Tokyo 2014: Keynote
Puppet Camp Tokyo 2014: KeynotePuppet Camp Tokyo 2014: Keynote
Puppet Camp Tokyo 2014: Keynote
 
Puppet and Apache CloudStack
Puppet and Apache CloudStackPuppet and Apache CloudStack
Puppet and Apache CloudStack
 
Nobody Has to Die Today: Keeping the Peace with the Other Meat Sacks - Puppet...
Nobody Has to Die Today: Keeping the Peace with the Other Meat Sacks - Puppet...Nobody Has to Die Today: Keeping the Peace with the Other Meat Sacks - Puppet...
Nobody Has to Die Today: Keeping the Peace with the Other Meat Sacks - Puppet...
 
Stop Hiring Devops Experts (And Start Growing Them) - PuppetConf 2013
Stop Hiring Devops Experts (And Start Growing Them) - PuppetConf 2013Stop Hiring Devops Experts (And Start Growing Them) - PuppetConf 2013
Stop Hiring Devops Experts (And Start Growing Them) - PuppetConf 2013
 
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
 
Puppet Camp London 2014: MCollective as an Integration Layer
Puppet Camp London 2014: MCollective as an Integration LayerPuppet Camp London 2014: MCollective as an Integration Layer
Puppet Camp London 2014: MCollective as an Integration Layer
 

Similar to Puppet Camp Berlin 2014: Module Rewriting the Smart Way

Puppet camp London 2014: Module Rewriting The Smart Way
Puppet camp London 2014: Module Rewriting The Smart WayPuppet camp London 2014: Module Rewriting The Smart Way
Puppet camp London 2014: Module Rewriting The Smart Way
Puppet
 
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
 
Navigating API Documentation: Tips from the Trenches
Navigating API Documentation: Tips from the Trenches Navigating API Documentation: Tips from the Trenches
Navigating API Documentation: Tips from the Trenches
Nordic APIs
 
FAKE (F# Make) & Automation
FAKE (F# Make) & AutomationFAKE (F# Make) & Automation
FAKE (F# Make) & Automation
Sergey Tihon
 
Mobile Wireframing with Indigo Studio
Mobile Wireframing with Indigo StudioMobile Wireframing with Indigo Studio
Mobile Wireframing with Indigo Studio
Stefan Ivanov
 
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
 
Cf objective2014 software-craftsmanship
Cf objective2014   software-craftsmanshipCf objective2014   software-craftsmanship
Cf objective2014 software-craftsmanship
Kev McCabe
 
Cf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanshipCf objective2014 software-craftsmanship
Cf objective2014 software-craftsmanship
ColdFusionConference
 
Steve Anavi - Smokio presentation Manufacturing meetup April 22, 2015
Steve Anavi - Smokio presentation Manufacturing meetup April 22, 2015Steve Anavi - Smokio presentation Manufacturing meetup April 22, 2015
Steve Anavi - Smokio presentation Manufacturing meetup April 22, 2015
Hardware Club
 
An introduction to papyrus
An introduction to papyrusAn introduction to papyrus
An introduction to papyrus
Charles Rivet
 
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
European Drupal Days
 
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
Eugenio Minardi
 
Getting involved in world class software engineering tips and tricks to join ...
Getting involved in world class software engineering tips and tricks to join ...Getting involved in world class software engineering tips and tricks to join ...
Getting involved in world class software engineering tips and tricks to join ...
Evans Ye
 
20120314 voipdrupal-hands-on-webinar
20120314 voipdrupal-hands-on-webinar20120314 voipdrupal-hands-on-webinar
20120314 voipdrupal-hands-on-webinar
FreeScholar
 
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
 
Resume
ResumeResume
Resume
Fred Bovy
 
OMA LwM2M Workshop - Joaquin Prado, OMA LwM2M Technical Summary
OMA LwM2M Workshop - Joaquin Prado, OMA LwM2M Technical SummaryOMA LwM2M Workshop - Joaquin Prado, OMA LwM2M Technical Summary
OMA LwM2M Workshop - Joaquin Prado, OMA LwM2M Technical Summary
Open Mobile Alliance
 
Mahara ePortfolios
Mahara ePortfoliosMahara ePortfolios
Mahara ePortfolios
Kerry (aka KerryJ) Johnson
 
T-Shaped Professional – What’s my T? or What distinguishes myself from being ...
T-Shaped Professional – What’s my T? or What distinguishes myself from being ...T-Shaped Professional – What’s my T? or What distinguishes myself from being ...
T-Shaped Professional – What’s my T? or What distinguishes myself from being ...
Daniel S. Haischt
 

Similar to Puppet Camp Berlin 2014: Module Rewriting the Smart Way (20)

Puppet camp London 2014: Module Rewriting The Smart Way
Puppet camp London 2014: Module Rewriting The Smart WayPuppet camp London 2014: Module Rewriting The Smart Way
Puppet camp London 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)
 
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...
 
Navigating API Documentation: Tips from the Trenches
Navigating API Documentation: Tips from the Trenches Navigating API Documentation: Tips from the Trenches
Navigating API Documentation: Tips from the Trenches
 
FAKE (F# Make) & Automation
FAKE (F# Make) & AutomationFAKE (F# Make) & Automation
FAKE (F# Make) & Automation
 
Mobile Wireframing with Indigo Studio
Mobile Wireframing with Indigo StudioMobile Wireframing with Indigo Studio
Mobile Wireframing with Indigo Studio
 
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...
 
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
 
Steve Anavi - Smokio presentation Manufacturing meetup April 22, 2015
Steve Anavi - Smokio presentation Manufacturing meetup April 22, 2015Steve Anavi - Smokio presentation Manufacturing meetup April 22, 2015
Steve Anavi - Smokio presentation Manufacturing meetup April 22, 2015
 
An introduction to papyrus
An introduction to papyrusAn introduction to papyrus
An introduction to papyrus
 
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
 
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
Sponsorship Opportunities European Drupal Days & Dutch PHP Conference 2015
 
Getting involved in world class software engineering tips and tricks to join ...
Getting involved in world class software engineering tips and tricks to join ...Getting involved in world class software engineering tips and tricks to join ...
Getting involved in world class software engineering tips and tricks to join ...
 
20120314 voipdrupal-hands-on-webinar
20120314 voipdrupal-hands-on-webinar20120314 voipdrupal-hands-on-webinar
20120314 voipdrupal-hands-on-webinar
 
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
 
OMA LwM2M Workshop - Joaquin Prado, OMA LwM2M Technical Summary
OMA LwM2M Workshop - Joaquin Prado, OMA LwM2M Technical SummaryOMA LwM2M Workshop - Joaquin Prado, OMA LwM2M Technical Summary
OMA LwM2M Workshop - Joaquin Prado, OMA LwM2M Technical Summary
 
Mahara ePortfolios
Mahara ePortfoliosMahara ePortfolios
Mahara ePortfolios
 
T-Shaped Professional – What’s my T? or What distinguishes myself from being ...
T-Shaped Professional – What’s my T? or What distinguishes myself from being ...T-Shaped Professional – What’s my T? or What distinguishes myself from being ...
T-Shaped Professional – What’s my T? or What distinguishes myself from being ...
 

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 controlrepo
Puppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
Puppet
 
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 vscode
Puppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
Puppet
 
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
Puppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
Puppet
 
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
Puppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
Puppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
Puppet
 
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
Puppet
 
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
Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
Puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
Puppet
 
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
Puppet
 
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
Puppet
 
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
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
Puppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
Puppet
 
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
Puppet
 

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

Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
jpupo2018
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 

Recently uploaded (20)

Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 

Puppet Camp Berlin 2014: Module Rewriting the Smart Way

  • 1. © Martin Alfke - 2014 Module (Re)writing the Smart Way Martin Alfke <martin.alfke@buero20.org> ! Puppet Camp Berlin 2014 www.netways.de/puppetcamp Check-In / Schedule Please provide your name or a form of identification at the conference registration desk. Location
  • 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
  • 25. © Martin Alfke - 2014 www.netways.de/puppetcamp Check-In / Schedule Please provide your name or a form of identification at the conference registration desk. Location
  • 26. © Martin Alfke - 2014 PuppetForge
  • 27. © Martin Alfke - 2014 PuppetForge - ?
  • 28. © Martin Alfke - 2014 PuppetForge - 2
  • 29. © Martin Alfke - 2014 PuppetForge - yea
  • 30. © Martin Alfke - 2014 GitHub - woo
  • 31. © Martin Alfke - 2014 PuppetForge
  • 32. © Martin Alfke - 2014 GitHub
  • 33. © Martin Alfke - 2014 GitHub - Module must haves
  • 34. © Martin Alfke - 2014