SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Story of Puppet @eBay Classifieds Group
or how we came to the setup we use
Some bio or “Who is Vladimir”
!    Sysadmin for eighteen years
!    Currently in Solutions team of eCG’s marktplaats.nl
!    All-round nerd
!    Hobbyist programmer
Puppet at eBay Classifieds:
!    9 countries
!    13 platforms
!    1 codebase
!    1 change management process
Puppet at eBay Classifieds:
!    We started adopting puppet in 2008
!    Since then we had about 4 different iterations of “this is bloated and
     doesn’t work, let’s think more and re-do”
!    Currently we believe we achieved a workable scenario where we:
     !    Enable teams to share and re-use puppet code
     !    Enforce the same code style and standards
     !    Allow for peer-reviews of the code, also enforce them


               “If it’s not in Puppet – it does not exist.”
What we are going to talk about:
•    Different iterations of puppet implementation at eCG
•    Go in-depth on the structure of the current one
•    Process around the codebase
•    Tools
“Bucket of recipes”




Puppet at eBay Classifieds (1st implementation):
!     A bunch of modules without visible structure (server-role based)
!     Relations between modules on any levels (includes, instantiations)
!     One Subversion repository, where everyone works on trunk
What were the lessons learned?
ü    As puppet adoption grew, modules for different platforms started
      clashing (same, yet a bit different functionality)
ü    As number of modules and their dependencies grew people were
      afraid of making changes - dependency tree was very hard to follow
ü    Resulted in tons of duplicate code
ü    Change management was very risky – you commit something and
      it’s live
“Buckets of recipes”




Puppet at eBay Classifieds (2nd implementation):
!     What did we improve?
      !    Release management with Subversion branching
      !    Better module grouping
What were the lessons learned?
ü    Waiting on releases is killing. If you need a change - you need it
      now, not in 2 or 3 days
ü    Provokes people to lock machines to their own puppet environment
ü    Surprises at times of the releases. For some people it was daytime,
      for others it was middle of the night
Puppet at eBay Classifieds (3rd implementation):
!     What did we improve?
      !    Switched to Git
      !    Completely redesigned modules structure (more on this later)
      !    Introduced extlookup for data separation vs configuration logic
      !    Release more often
What were the lessons learned?
ü    When release process is human-dependent it will be a bottleneck
ü    Extlookup is nice, but in many places unreadable
Puppet at eBay Classifieds (4th implementation):
!    What did we improve?
     !    Introduced Gerrit for code reviews
     !    Implemented automatic puppet-lint, template syntax and PEP8 checkers
     !    Introduced automated quorum votes for peer reviews
     !    Release as soon as your code passed checks and YOU need it live
     !    Further improved module tree structure
     !    Replaced extlookup with hiera
     !    Introduced puppetdb
So how does it look now?
 !    Four module levels
 !    One include direction           Config


 !    No includes on the same level
                                      Platform



                                       eCG



                                      Shared
Shared modules
   !    Shared modules are very basic, deploy one piece
         of software in its standard configuration (no           Config

         customization)
                                                                 Platform
   !    Standalone. Includes no other modules
   !    Installs needed packages, basically
                                                                  eCG
   !    Parameterized to allow configuration override
        !    Examples: apache, ntpd, activemq, mysql, postgres   Shared
eCG modules
  !    eCG modules add our specific eCG-wide
        approved customizations. Rule: it must play well      Config

        with majority of teams to make it
                                                              Platform
  !    Mostly include shared modules
  !    Never include each other
                                                               eCG
  !    Override default shared module configuration with
       eCG specific one via parameters                        Shared

  !    May be parameterized to allow for configuration
       tweaks or overrides
       !    Examples: puppetmaster, nagios checks, collectd
             plugins
Platform modules
 !    Platform level introduces company-specific
      modules and configuration customizations
                                                   Config
 !    May include eCG modules
 !    May include shared modules                   Platform

 !    Never include each other
                                                    eCG



                                                   Shared
Config modules
 !    Config level introduces server-role specific
      modules
                                                     Config
 !    Are the starting point for our servers
      configuration
                                                     Platform
 !    May include platform, eCG or shared modules
 !    Never include each other                        eCG


 !    Node definition must include config module     Shared
Why did we do it like this?
 !    Easy starting point. Look up a node, see its
      class, open the class – you see on one page
      how your server is configured on a global level            Config


 !    If you need to know more, dive deeper
                                                                 Platform
 !    We enable code sharing, we do not enforce it
      !    If you see a module in shared you can use – use        eCG

            it. If you can’t use it, extend it in a backwards-
            compatible way or write other extension on an        Shared
            appropriate level
Hiera
 !    Great way to separate code from data
 !    Company-based structure
 !    Lookup path based on facts to allow company data separation
      while keeping the same source tree
       :datadir: /var/lib/hiera/%{environment}/%{companyprefix}

 !    Inside company dirs a variety of fact-based lookups to allow for
      fine-grained data structures
PuppetDB
!    Much faster catalog compilations for huge catalogs (nagios server
     with 200k resources)
!    REST API to talk to for inventory and searches
!    Many brilliant ways to (ab)use it
     !    Stores all facts (can be used to feed CMDBs)
     !    Stores most recent catalog (can be used for inspections)
     !    POC we are running - internal Puppet naginator module is very slow,
           collection of exported resources takes about 15 minutes. We use
           PuppetDB to generate the same nagios configs in just under 8
           seconds
     !    “If there is data, it can be used”. PuppetDB is a central data store.
           Love.
So all good, but how does this work in practice?
          Local       Test the change
                                          Push to Gerrit   Code review   Merge
       environment   with --environment




  !    Per-user environments on puppetmasters
  !    Make the change in your own env
  !    Test it from your own env
  !    Push to Gerrit
  !    Ask team members to review
  !    Merge
Gerrit
  !    Great code review tool (https://code.google.com/p/gerrit/)
  !    Acts as a Git server with fine-grained access control
  !    Each commit is a separate change, that requires votes for
       approvals
  !    Votes can be +1 for Code Review, +2 for change approval
  !    No +2 – no merge
  !    We use voting system with auto +2
       !    Depending on platform size or number of platforms affected by the
             change more votes are needed to get a change through
       !    Each change can be “pushed through” in case of an emergency
More Gerrit goodies
  !    Allows for post-push hooks
       !    Puppet-lint
       !    Ruby templates parsing
       !    PEP8 (we love Python)
  !    Each change is separately checked out by hooks and tested for
       syntax or other obvious errors
  !    Concept of one commit – one change forces people to create
       atomic changes that are easy to revert in case of errors
  !    Keeping it all in the same system, even if you decide to split Git
       repositories still makes work done by colleagues VISIBLE
Gerrit and puppetmasters
  !    Master is automatically pulled by crons on puppetmasters
  !    Gerrit disallows pushing directly to master
  !    Even if you force-merge a change, it makes your change
       VISIBLE and easily REVERTIBLE
  !    Takes about half a minute extra time
  !    Ensures you didn’t slack out on syntax checkers
To sum it all up
  !    There is no single structure that fits every company
  !    Puppet code is like any other code
       !    Write
       !    Use
       !    Refactor if needed
  !    Layered modules structure can work well in many cases
  !    Complementary tooling around Puppet is a life- (and time-)
       saver
       !    Lint(s), Gerrit, PuppetDB
Work to be done in our house
  !    Approval process improvements
       !    Better quorum schemas
       !    Easier ways of code style and syntax checking
       !    See that people don’t leave changes “hanging”
  !    Integrate Gerrit with corporate GitHub
  !    Work more with community
       !    Open source some generic shared modules
       !    Offer changes to PuppetForge modules
  !    POC with Vagrant for puppet code testing
Questions?
Thank you!
 Special thanks to:

 •  PuppetLabs and eCG for the opportunity to speak here
 •  Teams of eCG for bearing with me all these years
 •  You all for attending and listening

 You can reach me by:
 •  Mailing to favoretti@gmail.com
 •  Following me on GitHub (
    https://github.com/favoretti)

We are hiring!
Visit http://ebayclassifiedsgroup.com/careers
for more info.

Contenu connexe

Tendances

Modulesync- How vox pupuli manages 133 modules, Tim Meusel
Modulesync- How vox pupuli manages 133 modules, Tim MeuselModulesync- How vox pupuli manages 133 modules, Tim Meusel
Modulesync- How vox pupuli manages 133 modules, Tim MeuselPuppet
 
Autom editor video blooper recognition and localization for automatic monolo...
Autom editor  video blooper recognition and localization for automatic monolo...Autom editor  video blooper recognition and localization for automatic monolo...
Autom editor video blooper recognition and localization for automatic monolo...Carlos Toxtli
 
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020Puppet
 
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...Puppet
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMBucharest Java User Group
 
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...manssandstrom
 
Rich Text Editing and Beyond
Rich Text Editing and BeyondRich Text Editing and Beyond
Rich Text Editing and BeyondCommonsWare
 
Introduction to Groovy Monkey
Introduction to Groovy MonkeyIntroduction to Groovy Monkey
Introduction to Groovy Monkeyjervin
 
Lausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - MavenLausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - MavenArnaud Héritier
 
Geneva Jug (30th March, 2010) - Maven
Geneva Jug (30th March, 2010) - MavenGeneva Jug (30th March, 2010) - Maven
Geneva Jug (30th March, 2010) - MavenArnaud Héritier
 
G W T(2)
G W T(2)G W T(2)
G W T(2)tomcoh
 
Riviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - MavenRiviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - MavenArnaud Héritier
 
Introduction to Google Web Toolkit
Introduction to Google Web ToolkitIntroduction to Google Web Toolkit
Introduction to Google Web ToolkitJeppe Rishede
 

Tendances (17)

Modulesync- How vox pupuli manages 133 modules, Tim Meusel
Modulesync- How vox pupuli manages 133 modules, Tim MeuselModulesync- How vox pupuli manages 133 modules, Tim Meusel
Modulesync- How vox pupuli manages 133 modules, Tim Meusel
 
Autom editor video blooper recognition and localization for automatic monolo...
Autom editor  video blooper recognition and localization for automatic monolo...Autom editor  video blooper recognition and localization for automatic monolo...
Autom editor video blooper recognition and localization for automatic monolo...
 
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
 
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVM
 
Maven for eXo VN
Maven for eXo VNMaven for eXo VN
Maven for eXo VN
 
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
 
Rich Text Editing and Beyond
Rich Text Editing and BeyondRich Text Editing and Beyond
Rich Text Editing and Beyond
 
Introduction to Groovy Monkey
Introduction to Groovy MonkeyIntroduction to Groovy Monkey
Introduction to Groovy Monkey
 
Lausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - MavenLausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - Maven
 
The power of dots
The power of dotsThe power of dots
The power of dots
 
Geneva Jug (30th March, 2010) - Maven
Geneva Jug (30th March, 2010) - MavenGeneva Jug (30th March, 2010) - Maven
Geneva Jug (30th March, 2010) - Maven
 
G W T(2)
G W T(2)G W T(2)
G W T(2)
 
Tfs Per Team Agili
Tfs Per Team AgiliTfs Per Team Agili
Tfs Per Team Agili
 
Riviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - MavenRiviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - Maven
 
Maven
MavenMaven
Maven
 
Introduction to Google Web Toolkit
Introduction to Google Web ToolkitIntroduction to Google Web Toolkit
Introduction to Google Web Toolkit
 

En vedette

IC AMA Written Case for 2016 AMA Case Competition
IC AMA Written Case for 2016 AMA Case CompetitionIC AMA Written Case for 2016 AMA Case Competition
IC AMA Written Case for 2016 AMA Case CompetitionMaddy Clark
 
More Than Me Student Outreach Book
More Than Me Student Outreach BookMore Than Me Student Outreach Book
More Than Me Student Outreach BookMaddy Clark
 
Next Generation Classifieds - ICMA 2010
Next Generation Classifieds - ICMA 2010Next Generation Classifieds - ICMA 2010
Next Generation Classifieds - ICMA 2010eBay Classifieds Group
 
Jacob Aqraou - The future of mobile commerce - NOAH presentation
Jacob Aqraou - The future of mobile commerce - NOAH presentationJacob Aqraou - The future of mobile commerce - NOAH presentation
Jacob Aqraou - The future of mobile commerce - NOAH presentationeBay Classifieds Group
 
eBay Classifieds Group - NOAH15 London
eBay Classifieds Group - NOAH15 LondoneBay Classifieds Group - NOAH15 London
eBay Classifieds Group - NOAH15 LondonNOAH Advisors
 
Research on Invisible Children Post #HONY2012 Scandal
Research on Invisible Children Post #HONY2012 ScandalResearch on Invisible Children Post #HONY2012 Scandal
Research on Invisible Children Post #HONY2012 ScandalMaddy Clark
 
NOAH conference 2011 - Jacob Aqraou presentation
NOAH conference 2011 - Jacob Aqraou presentationNOAH conference 2011 - Jacob Aqraou presentation
NOAH conference 2011 - Jacob Aqraou presentationeBay Classifieds Group
 
EXMBA - eBay Model
EXMBA - eBay ModelEXMBA - eBay Model
EXMBA - eBay ModelJavier Ortiz
 
eBay Classifieds Talent Management- Aileen O'Toole
eBay Classifieds Talent Management- Aileen O'TooleeBay Classifieds Talent Management- Aileen O'Toole
eBay Classifieds Talent Management- Aileen O'TooleeBay Classifieds Group
 
ITEC-610 Ebay Case Study
ITEC-610 Ebay Case StudyITEC-610 Ebay Case Study
ITEC-610 Ebay Case Studycnockaertgrad
 
Petite Blue Public Relations Deck
Petite Blue Public Relations DeckPetite Blue Public Relations Deck
Petite Blue Public Relations DeckMaddy Clark
 

En vedette (14)

IC AMA Written Case for 2016 AMA Case Competition
IC AMA Written Case for 2016 AMA Case CompetitionIC AMA Written Case for 2016 AMA Case Competition
IC AMA Written Case for 2016 AMA Case Competition
 
More Than Me Student Outreach Book
More Than Me Student Outreach BookMore Than Me Student Outreach Book
More Than Me Student Outreach Book
 
The Future of Classifieds - ICMA 2010
The Future of Classifieds - ICMA 2010The Future of Classifieds - ICMA 2010
The Future of Classifieds - ICMA 2010
 
Next Generation Classifieds - ICMA 2010
Next Generation Classifieds - ICMA 2010Next Generation Classifieds - ICMA 2010
Next Generation Classifieds - ICMA 2010
 
Jacob Aqraou - The future of mobile commerce - NOAH presentation
Jacob Aqraou - The future of mobile commerce - NOAH presentationJacob Aqraou - The future of mobile commerce - NOAH presentation
Jacob Aqraou - The future of mobile commerce - NOAH presentation
 
eBay Classifieds Group - NOAH15 London
eBay Classifieds Group - NOAH15 LondoneBay Classifieds Group - NOAH15 London
eBay Classifieds Group - NOAH15 London
 
Research on Invisible Children Post #HONY2012 Scandal
Research on Invisible Children Post #HONY2012 ScandalResearch on Invisible Children Post #HONY2012 Scandal
Research on Invisible Children Post #HONY2012 Scandal
 
NOAH conference 2011 - Jacob Aqraou presentation
NOAH conference 2011 - Jacob Aqraou presentationNOAH conference 2011 - Jacob Aqraou presentation
NOAH conference 2011 - Jacob Aqraou presentation
 
The Future of Mobile Commerce
The Future of Mobile Commerce The Future of Mobile Commerce
The Future of Mobile Commerce
 
EXMBA - eBay Model
EXMBA - eBay ModelEXMBA - eBay Model
EXMBA - eBay Model
 
eBay Classifieds Talent Management- Aileen O'Toole
eBay Classifieds Talent Management- Aileen O'TooleeBay Classifieds Talent Management- Aileen O'Toole
eBay Classifieds Talent Management- Aileen O'Toole
 
eBay Final Case
eBay Final CaseeBay Final Case
eBay Final Case
 
ITEC-610 Ebay Case Study
ITEC-610 Ebay Case StudyITEC-610 Ebay Case Study
ITEC-610 Ebay Case Study
 
Petite Blue Public Relations Deck
Petite Blue Public Relations DeckPetite Blue Public Relations Deck
Petite Blue Public Relations Deck
 

Similaire à Story of Puppet @eBay Global Classifieds Group (eCG)

Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksKaty Slemon
 
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...Puppet
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.All Things Open
 
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Nuxeo
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 Tikal Knowledge
 
Portable infrastructure with puppet
Portable infrastructure with puppetPortable infrastructure with puppet
Portable infrastructure with puppetlkanies
 
Yocto Project : Custom Embedded Linux Distribution
Yocto Project : Custom Embedded Linux DistributionYocto Project : Custom Embedded Linux Distribution
Yocto Project : Custom Embedded Linux Distributionemertxemarketing
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2Derek Jacoby
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Derek Jacoby
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat OverviewMandi Walls
 
The Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps ToolkitThe Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps ToolkitWeaveworks
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationXPDays
 
Cloudops fundamentals management, tdd, test driven design, continuous integra...
Cloudops fundamentals management, tdd, test driven design, continuous integra...Cloudops fundamentals management, tdd, test driven design, continuous integra...
Cloudops fundamentals management, tdd, test driven design, continuous integra...Bret Piatt
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0Michael Vorburger
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsGR8Conf
 
Migraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sitesMigraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sitesdrupalindia
 
DevOps - Interview Question.pdf
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdfMinhTrnNht7
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 

Similaire à Story of Puppet @eBay Global Classifieds Group (eCG) (20)

Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworks
 
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
 
Portable infrastructure with puppet
Portable infrastructure with puppetPortable infrastructure with puppet
Portable infrastructure with puppet
 
Yocto Project : Custom Embedded Linux Distribution
Yocto Project : Custom Embedded Linux DistributionYocto Project : Custom Embedded Linux Distribution
Yocto Project : Custom Embedded Linux Distribution
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat Overview
 
The Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps ToolkitThe Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps Toolkit
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Cloudops fundamentals management, tdd, test driven design, continuous integra...
Cloudops fundamentals management, tdd, test driven design, continuous integra...Cloudops fundamentals management, tdd, test driven design, continuous integra...
Cloudops fundamentals management, tdd, test driven design, continuous integra...
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
 
Migraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sitesMigraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sites
 
DevOps - Interview Question.pdf
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdf
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 

Plus de 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
 

Plus de 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
 

Dernier

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 

Dernier (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 

Story of Puppet @eBay Global Classifieds Group (eCG)

  • 1. Story of Puppet @eBay Classifieds Group or how we came to the setup we use
  • 2. Some bio or “Who is Vladimir” ! Sysadmin for eighteen years !  Currently in Solutions team of eCG’s marktplaats.nl !  All-round nerd !  Hobbyist programmer
  • 3. Puppet at eBay Classifieds: !  9 countries !  13 platforms !  1 codebase !  1 change management process
  • 4. Puppet at eBay Classifieds: !  We started adopting puppet in 2008 !  Since then we had about 4 different iterations of “this is bloated and doesn’t work, let’s think more and re-do” !  Currently we believe we achieved a workable scenario where we: !  Enable teams to share and re-use puppet code !  Enforce the same code style and standards !  Allow for peer-reviews of the code, also enforce them “If it’s not in Puppet – it does not exist.”
  • 5. What we are going to talk about: •  Different iterations of puppet implementation at eCG •  Go in-depth on the structure of the current one •  Process around the codebase •  Tools
  • 6. “Bucket of recipes” Puppet at eBay Classifieds (1st implementation): !  A bunch of modules without visible structure (server-role based) !  Relations between modules on any levels (includes, instantiations) !  One Subversion repository, where everyone works on trunk What were the lessons learned? ü  As puppet adoption grew, modules for different platforms started clashing (same, yet a bit different functionality) ü  As number of modules and their dependencies grew people were afraid of making changes - dependency tree was very hard to follow ü  Resulted in tons of duplicate code ü  Change management was very risky – you commit something and it’s live
  • 7. “Buckets of recipes” Puppet at eBay Classifieds (2nd implementation): !  What did we improve? !  Release management with Subversion branching !  Better module grouping What were the lessons learned? ü  Waiting on releases is killing. If you need a change - you need it now, not in 2 or 3 days ü  Provokes people to lock machines to their own puppet environment ü  Surprises at times of the releases. For some people it was daytime, for others it was middle of the night
  • 8. Puppet at eBay Classifieds (3rd implementation): !  What did we improve? !  Switched to Git !  Completely redesigned modules structure (more on this later) !  Introduced extlookup for data separation vs configuration logic !  Release more often What were the lessons learned? ü  When release process is human-dependent it will be a bottleneck ü  Extlookup is nice, but in many places unreadable
  • 9. Puppet at eBay Classifieds (4th implementation): !  What did we improve? !  Introduced Gerrit for code reviews !  Implemented automatic puppet-lint, template syntax and PEP8 checkers !  Introduced automated quorum votes for peer reviews !  Release as soon as your code passed checks and YOU need it live !  Further improved module tree structure !  Replaced extlookup with hiera !  Introduced puppetdb
  • 10. So how does it look now? !  Four module levels !  One include direction Config !  No includes on the same level Platform eCG Shared
  • 11. Shared modules !  Shared modules are very basic, deploy one piece of software in its standard configuration (no Config customization) Platform !  Standalone. Includes no other modules !  Installs needed packages, basically eCG !  Parameterized to allow configuration override !  Examples: apache, ntpd, activemq, mysql, postgres Shared
  • 12. eCG modules ! eCG modules add our specific eCG-wide approved customizations. Rule: it must play well Config with majority of teams to make it Platform !  Mostly include shared modules !  Never include each other eCG !  Override default shared module configuration with eCG specific one via parameters Shared !  May be parameterized to allow for configuration tweaks or overrides !  Examples: puppetmaster, nagios checks, collectd plugins
  • 13. Platform modules !  Platform level introduces company-specific modules and configuration customizations Config !  May include eCG modules !  May include shared modules Platform !  Never include each other eCG Shared
  • 14. Config modules ! Config level introduces server-role specific modules Config !  Are the starting point for our servers configuration Platform !  May include platform, eCG or shared modules !  Never include each other eCG !  Node definition must include config module Shared
  • 15. Why did we do it like this? !  Easy starting point. Look up a node, see its class, open the class – you see on one page how your server is configured on a global level Config !  If you need to know more, dive deeper Platform !  We enable code sharing, we do not enforce it !  If you see a module in shared you can use – use eCG it. If you can’t use it, extend it in a backwards- compatible way or write other extension on an Shared appropriate level
  • 16. Hiera !  Great way to separate code from data !  Company-based structure !  Lookup path based on facts to allow company data separation while keeping the same source tree :datadir: /var/lib/hiera/%{environment}/%{companyprefix} !  Inside company dirs a variety of fact-based lookups to allow for fine-grained data structures
  • 17. PuppetDB !  Much faster catalog compilations for huge catalogs (nagios server with 200k resources) !  REST API to talk to for inventory and searches !  Many brilliant ways to (ab)use it !  Stores all facts (can be used to feed CMDBs) !  Stores most recent catalog (can be used for inspections) !  POC we are running - internal Puppet naginator module is very slow, collection of exported resources takes about 15 minutes. We use PuppetDB to generate the same nagios configs in just under 8 seconds !  “If there is data, it can be used”. PuppetDB is a central data store. Love.
  • 18. So all good, but how does this work in practice? Local Test the change Push to Gerrit Code review Merge environment with --environment !  Per-user environments on puppetmasters !  Make the change in your own env !  Test it from your own env !  Push to Gerrit !  Ask team members to review !  Merge
  • 19. Gerrit !  Great code review tool (https://code.google.com/p/gerrit/) !  Acts as a Git server with fine-grained access control !  Each commit is a separate change, that requires votes for approvals !  Votes can be +1 for Code Review, +2 for change approval !  No +2 – no merge !  We use voting system with auto +2 !  Depending on platform size or number of platforms affected by the change more votes are needed to get a change through !  Each change can be “pushed through” in case of an emergency
  • 20. More Gerrit goodies !  Allows for post-push hooks !  Puppet-lint !  Ruby templates parsing !  PEP8 (we love Python) !  Each change is separately checked out by hooks and tested for syntax or other obvious errors !  Concept of one commit – one change forces people to create atomic changes that are easy to revert in case of errors !  Keeping it all in the same system, even if you decide to split Git repositories still makes work done by colleagues VISIBLE
  • 21. Gerrit and puppetmasters !  Master is automatically pulled by crons on puppetmasters ! Gerrit disallows pushing directly to master !  Even if you force-merge a change, it makes your change VISIBLE and easily REVERTIBLE !  Takes about half a minute extra time !  Ensures you didn’t slack out on syntax checkers
  • 22. To sum it all up !  There is no single structure that fits every company !  Puppet code is like any other code !  Write !  Use !  Refactor if needed !  Layered modules structure can work well in many cases !  Complementary tooling around Puppet is a life- (and time-) saver !  Lint(s), Gerrit, PuppetDB
  • 23. Work to be done in our house !  Approval process improvements !  Better quorum schemas !  Easier ways of code style and syntax checking !  See that people don’t leave changes “hanging” !  Integrate Gerrit with corporate GitHub !  Work more with community !  Open source some generic shared modules !  Offer changes to PuppetForge modules !  POC with Vagrant for puppet code testing
  • 25. Thank you! Special thanks to: •  PuppetLabs and eCG for the opportunity to speak here •  Teams of eCG for bearing with me all these years •  You all for attending and listening You can reach me by: •  Mailing to favoretti@gmail.com •  Following me on GitHub ( https://github.com/favoretti) We are hiring! Visit http://ebayclassifiedsgroup.com/careers for more info.