SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Case Study




Scaling Puppet Usage to a Global Organization




             PuppetCamp Feb 7, 2013
The Presenter

Tor-Åke
     –    Hands-on System Architect
     –    Linux Pro since 2000
     –    DevOps / Operation Automation since 2005
     –    Puppet since 0.25
RedBridge
     – Open Source Infrastructure Builders
     – Consulting, Operations and Open Source
         Products Since 2003
     – Partners with PuppetLabs, Redhat, Amazon,
         Zimbra, Others



                    PuppetCamp Feb 7, 2013
TOC

Part 1: Case description
      – The Customer and the Challenge
Part 2 : Way of Working
      – How to Develop Code
Part 3 : Technical Platform
      – Puppet Masters etc




                  PuppetCamp Feb 7, 2013
Part I : Case Description

A Swedish telecommunications company
About 10 sites around the world
Thousands of users
Thousands of systems




               PuppetCamp Feb 7, 2013
System Types (in scope)

Virtual and metal servers
SuSE, RedHat, CentOS, Ubuntu and Solaris
Mostly OSS and Third Party Software
Divisions choose from predef:d system types
     – Some unique applications
Supporting infrastructure
     – Network flesystems for applications and user
        data
     – OS-native deployment systems (Satellite, Ops
        Center etc)



                 PuppetCamp Feb 7, 2013
The Challenge

Bring Home R&D IT From Outsourcing

... and in the process:

Shorten Lead Time
      – Automate Deployment and (Change)
         Management
Increase Cost Efficiency
      – Solve each problem once
      – Share the solution globally
      – A scalable technical platform


                   PuppetCamp Feb 7, 2013
Additional Requirements

Leverage existing expertise
Maintain site-local freedom to solve unique problems
Keep site freedom to plan and execute code updates




                 PuppetCamp Feb 7, 2013
Puppet?

Puppet is naturally only a part of the solution...

...but an important focal point as it touches all
services!




             PuppetCamp Feb 7, 2013
Part II : Way of Working

Why and when is code developed?
How and by whom?
How is code shared?




               PuppetCamp Feb 7, 2013
The Facilitator

A Global Team, coordinating Puppet Development
Knowledge identifcation and sharing
Keeper of the code standard
Develop and support a Puppet architecture




                PuppetCamp Feb 7, 2013
Example Why and When

Site users need a service e.g. ”Hosted Jenkins”
Site team calls for Puppet code
Global team fnds a Jenkins expert
Global team helps Jenkins expert write modules
Modules are delivered to requesting site team and
  users




                 PuppetCamp Feb 7, 2013
Another example

Site users need a service e.g. Hosted Tomcat
Site has a Tomcat expert who can write Puppet
   module
Global Team is notifed that Tomcat module exists
If another site requests same service, existing code
   is ”globalized” with assistance from Global Team




                 PuppetCamp Feb 7, 2013
Need
  Need      Development Sync Flowchart
  code
  code



  Global
  Global                  Ask
                          Ask
available? No
available?              around
                        around

     Yes

 Fetch
 Fetch                   Any
                         Any
and test
and test              available? No
                      available?
                            Yes

  Code
  Code                  Modify
                        Modify           Develop
                                         Develop
  OK?
   OK?     No          and test
                       and test          and test
                                         and test
     Yes

 Done.
 Done.                Post global
                      Post global
Deploy!
Deploy!               suggestion
                      suggestion

                PuppetCamp Feb 7, 2013
Code Sharing

Global Git repository (actually per module)
Each site pulls code to site-local repository
Test locally, and deploy (ITIL Change)
Global team is notifed of any local changes
If changes are to be globalized, GT pulls code from
   site-local repo




                 PuppetCamp Feb 7, 2013
Code Standard

Code structure optimized for sharing some parts,
  while keeping others site-private
Readability and documentation built in
Unit test




                 PuppetCamp Feb 7, 2013
Code Structure

Parameters module local to the site
       params::jenkins in
        moduleroot/params/manifests/jenkins.pp
All parameters can be overridden per node
       Priority:
      1) Node defnition (class params)
      2) Params module
      3) Module default (in init.pp!)




                  PuppetCamp Feb 7, 2013
README

What is the scope of this module
What site and what OS:es has it been tested on
Example params fle for params module
No description of params!
     – Those go in init.pp




                  PuppetCamp Feb 7, 2013
Predictable Results

Else-clause with a fail()
      – e.g.
          If $::operatingsystem == Solaris {
            …
          } else {
            fail ( ”we have not tested this OS yet” )
        }




                   PuppetCamp Feb 7, 2013
Code Review

Members of the Global Team send code for review
       ”Please look at this code and test it on your site”
     – Code deemed unreadable = FAIL
     – Code breaks other modules unit test = FAIL




                  PuppetCamp Feb 7, 2013
Adherance to Standard

Lots of code contributors
     – Varying experience with Puppet
Not always developers
     – Unfamiliar with peer review, Scrum, XP, Unit
        tests etc.
Global Team must fll the gaps
     – But we are not subject experts!
     – Educate eachother




                 PuppetCamp Feb 7, 2013
Boilerplate

A module with all elements
Well commented
Copy and fll out the blanks




                 PuppetCamp Feb 7, 2013
Manifest Patch Strategy

Many small increments?
OR
Take a big hit when needed?

+   10 sites with slight differences, ever-evolving
+   7 different OS:es
+   System experts distributed on the sites
=   Regression testing must also be distributed!




                    PuppetCamp Feb 7, 2013
Part III : Puppet Platform

Serve thousands of clients
Deployable by Puppet (apply)
Support Way of Working




                PuppetCamp Feb 7, 2013
Part III : Puppet Platform

Serve thousands of clients
Deployable by Puppet (apply)
Support Way of Working




                PuppetCamp Feb 7, 2013
Deploying Puppet

A global network flesystem (rsync+nfs)
Git repos with puppet code and packages
Clone it
Change parameters
Bootstrap a frst Puppet Master




                PuppetCamp Feb 7, 2013
Adding More Masters

DNS alternate names in the RR certifcate
Add server
Mount shared storage
Bootstrap server from another server
puppet agent –server=... --ca_server=...




                 PuppetCamp Feb 7, 2013
Puppet Masters

3-10 Masters
1 CA Server
Shared (NFS) storage
     – Manifests
     – Certifcates
Apache plus Passenger
Round Robin DNS Records




                 PuppetCamp Feb 7, 2013
Foreman

Just reports (for now...)
Masters store Yaml report on disk
Spool to foreman db periodically
     – Foreman server can be ofine indefnitly w/o
         losing reports




                 PuppetCamp Feb 7, 2013
Agents

Deployed with Kick/Jumpstart
Version 2.7
Installed under /opt
Run by cron, hourly with splay




                 PuppetCamp Feb 7, 2013
puppet:/// fles

We try to avoid them. Why?
     – NAS is faster than Passenger
Packages are installed from OS native channels
     – Available in Global NFS
What to do with Solaris?
     – Packages directly from Global NFS




                 PuppetCamp Feb 7, 2013
Example: installing Solaris pkg

With puppet fle transfer                    With NFS Mount
if $::custom_fact == install { file         package { ‘VNDRpkg’ : source =>
     { “local.pkg”: source =>                  ‘/net/nfsserver/remote.pkg’, adminfile
     puppet:///remote.pkg                      => ‘/net/nfsserver/remote.adm’,
    } file { “local.adm”: source =>         }
      puppet:///remote.adm                  # We’re done!
    } File[“local.pkg”] ->
      Package[‘VNDRpkg’]}package
      { ‘VNDRPkg’: source => “local.pkg”,
      adminfile => “local.adm”,
}
# + the custom fact ruby code!




                              PuppetCamp Feb 7, 2013
Orchestration

We don't have it (yet!)
Generous ITIL Change Windows
Sprawling networks
     – Firewall red tape




                  PuppetCamp Feb 7, 2013
Lessons Learned

Modules should not depend on modules
     – 10 sites with prod, dev and test environments
     – Slightly different module version mix
Puppet is not for Everything!
     – Template shellscripts are powerful
     – So is Rpm/Deb/Pkg
The biggest issues are with people
     – Aligning expectations
     – Consensus about everything from way-of-
         working to variable naming




                 PuppetCamp Feb 7, 2013

Mais conteúdo relacionado

Mais procurados

Debugging of (C)Python applications
Debugging of (C)Python applicationsDebugging of (C)Python applications
Debugging of (C)Python applicationsRoman Podoliaka
 
Boosting machine learning workflow with TensorFlow 2.0
Boosting machine learning workflow with TensorFlow 2.0Boosting machine learning workflow with TensorFlow 2.0
Boosting machine learning workflow with TensorFlow 2.0Jeongkyu Shin
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineChun-Yu Wang
 
Open Source Toolchains to Manage Cloud Infrastructure
Open Source Toolchains to Manage Cloud InfrastructureOpen Source Toolchains to Manage Cloud Infrastructure
Open Source Toolchains to Manage Cloud InfrastructureMark Hinkle
 
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
 
OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)David Bosschaert
 
Os Grossupdated
Os GrossupdatedOs Grossupdated
Os Grossupdatedoscon2007
 
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
 
Concurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple SpacesConcurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple Spacesluccastera
 
Tox as project descriptor.
Tox as project descriptor.Tox as project descriptor.
Tox as project descriptor.Roberto Polli
 
BP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM DominoBP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM DominoSerdar Basegmez
 
Machine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite PreviewMachine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite PreviewModulabs
 
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...Jorge Hidalgo
 
Spring Performance Gains
Spring Performance GainsSpring Performance Gains
Spring Performance GainsVMware Tanzu
 
G W T(2)
G W T(2)G W T(2)
G W T(2)tomcoh
 
TFLite NNAPI and GPU Delegates
TFLite NNAPI and GPU DelegatesTFLite NNAPI and GPU Delegates
TFLite NNAPI and GPU DelegatesKoan-Sin Tan
 

Mais procurados (20)

Debugging of (C)Python applications
Debugging of (C)Python applicationsDebugging of (C)Python applications
Debugging of (C)Python applications
 
Boosting machine learning workflow with TensorFlow 2.0
Boosting machine learning workflow with TensorFlow 2.0Boosting machine learning workflow with TensorFlow 2.0
Boosting machine learning workflow with TensorFlow 2.0
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
 
Open Source Toolchains to Manage Cloud Infrastructure
Open Source Toolchains to Manage Cloud InfrastructureOpen Source Toolchains to Manage Cloud Infrastructure
Open Source Toolchains to Manage Cloud Infrastructure
 
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
 
Os Lattner
Os LattnerOs Lattner
Os Lattner
 
OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)
 
Node js meetup
Node js meetupNode js meetup
Node js meetup
 
Os Grossupdated
Os GrossupdatedOs Grossupdated
Os Grossupdated
 
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...
 
Concurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple SpacesConcurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple Spaces
 
Tox as project descriptor.
Tox as project descriptor.Tox as project descriptor.
Tox as project descriptor.
 
Troubleshooting Puppet
Troubleshooting PuppetTroubleshooting Puppet
Troubleshooting Puppet
 
BP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM DominoBP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM Domino
 
Machine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite PreviewMachine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite Preview
 
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
 
The power of dots
The power of dotsThe power of dots
The power of dots
 
Spring Performance Gains
Spring Performance GainsSpring Performance Gains
Spring Performance Gains
 
G W T(2)
G W T(2)G W T(2)
G W T(2)
 
TFLite NNAPI and GPU Delegates
TFLite NNAPI and GPU DelegatesTFLite NNAPI and GPU Delegates
TFLite NNAPI and GPU Delegates
 

Destaque

Windows - Having Its Ass Kicked by Puppet and PowerShell Since 2012
Windows - Having Its Ass Kicked by Puppet and PowerShell Since 2012Windows - Having Its Ass Kicked by Puppet and PowerShell Since 2012
Windows - Having Its Ass Kicked by Puppet and PowerShell Since 2012Puppet
 
Introduction to Puppet Enterprise
Introduction to Puppet EnterpriseIntroduction to Puppet Enterprise
Introduction to Puppet EnterprisePuppet
 
Intro to Systems Orchestration with MCollective
Intro to Systems Orchestration with MCollectiveIntro to Systems Orchestration with MCollective
Intro to Systems Orchestration with MCollectivePuppet
 
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet
 
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Puppet
 
Introduction to Puppet Enterprise 2016.5
Introduction to Puppet Enterprise 2016.5Introduction to Puppet Enterprise 2016.5
Introduction to Puppet Enterprise 2016.5Puppet
 
Puppet overview
Puppet overviewPuppet overview
Puppet overviewjoshbeard
 
Introduction to puppet
Introduction to puppetIntroduction to puppet
Introduction to puppetHabeeb Rahman
 

Destaque (8)

Windows - Having Its Ass Kicked by Puppet and PowerShell Since 2012
Windows - Having Its Ass Kicked by Puppet and PowerShell Since 2012Windows - Having Its Ass Kicked by Puppet and PowerShell Since 2012
Windows - Having Its Ass Kicked by Puppet and PowerShell Since 2012
 
Introduction to Puppet Enterprise
Introduction to Puppet EnterpriseIntroduction to Puppet Enterprise
Introduction to Puppet Enterprise
 
Intro to Systems Orchestration with MCollective
Intro to Systems Orchestration with MCollectiveIntro to Systems Orchestration with MCollective
Intro to Systems Orchestration with MCollective
 
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
 
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
 
Introduction to Puppet Enterprise 2016.5
Introduction to Puppet Enterprise 2016.5Introduction to Puppet Enterprise 2016.5
Introduction to Puppet Enterprise 2016.5
 
Puppet overview
Puppet overviewPuppet overview
Puppet overview
 
Introduction to puppet
Introduction to puppetIntroduction to puppet
Introduction to puppet
 

Semelhante a Scaling Puppet Usage to a Global Organization

Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
V mware
V mwareV mware
V mwaredvmug1
 
Puppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwarePuppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwaresubtitle
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy Systemadrian_nye
 
SCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingStanislav Osipov
 
EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18Xiaoli Liang
 
A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)Markus Günther
 
Workflow story: Theory versus practice in Large Enterprises
Workflow story: Theory versus practice in Large EnterprisesWorkflow story: Theory versus practice in Large Enterprises
Workflow story: Theory versus practice in Large EnterprisesPuppet
 
Workflow story: Theory versus Practice in large enterprises by Marcin Piebiak
Workflow story: Theory versus Practice in large enterprises by Marcin PiebiakWorkflow story: Theory versus Practice in large enterprises by Marcin Piebiak
Workflow story: Theory versus Practice in large enterprises by Marcin PiebiakNETWAYS
 
How to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentHow to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentMichelantonio Trizio
 
OSGi Cloud Ecosystems - David Bosschaert
OSGi Cloud Ecosystems - David BosschaertOSGi Cloud Ecosystems - David Bosschaert
OSGi Cloud Ecosystems - David Bosschaertmfrancis
 
TRACK F: OpenCL for ALTERA FPGAs, Accelerating performance and design product...
TRACK F: OpenCL for ALTERA FPGAs, Accelerating performance and design product...TRACK F: OpenCL for ALTERA FPGAs, Accelerating performance and design product...
TRACK F: OpenCL for ALTERA FPGAs, Accelerating performance and design product...chiportal
 
The State of Puppet - Dan Bode
The State of Puppet - Dan BodeThe State of Puppet - Dan Bode
The State of Puppet - Dan BodePuppet
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...Jesse Gallagher
 
Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...
Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...
Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...Sakari Hoisko
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed AssafAhmed Assaf
 
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...Getup Cloud
 

Semelhante a Scaling Puppet Usage to a Global Organization (20)

Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
V mware
V mwareV mware
V mware
 
Puppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwarePuppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMware
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
SCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scaling
 
EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18
 
A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)
 
Workflow story: Theory versus practice in Large Enterprises
Workflow story: Theory versus practice in Large EnterprisesWorkflow story: Theory versus practice in Large Enterprises
Workflow story: Theory versus practice in Large Enterprises
 
Workflow story: Theory versus Practice in large enterprises by Marcin Piebiak
Workflow story: Theory versus Practice in large enterprises by Marcin PiebiakWorkflow story: Theory versus Practice in large enterprises by Marcin Piebiak
Workflow story: Theory versus Practice in large enterprises by Marcin Piebiak
 
How to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentHow to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environment
 
OSGi Cloud Ecosystems - David Bosschaert
OSGi Cloud Ecosystems - David BosschaertOSGi Cloud Ecosystems - David Bosschaert
OSGi Cloud Ecosystems - David Bosschaert
 
TRACK F: OpenCL for ALTERA FPGAs, Accelerating performance and design product...
TRACK F: OpenCL for ALTERA FPGAs, Accelerating performance and design product...TRACK F: OpenCL for ALTERA FPGAs, Accelerating performance and design product...
TRACK F: OpenCL for ALTERA FPGAs, Accelerating performance and design product...
 
Divyam Virmani
Divyam VirmaniDivyam Virmani
Divyam Virmani
 
The State of Puppet - Dan Bode
The State of Puppet - Dan BodeThe State of Puppet - Dan Bode
The State of Puppet - Dan Bode
 
PhpStorm for WordPress
PhpStorm for WordPressPhpStorm for WordPress
PhpStorm for WordPress
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
 
Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...
Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...
Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
 
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
 

Mais 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
 

Mais 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
 

Último

Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...itnewsafrica
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 

Último (20)

Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 

Scaling Puppet Usage to a Global Organization

  • 1. Case Study Scaling Puppet Usage to a Global Organization PuppetCamp Feb 7, 2013
  • 2. The Presenter Tor-Åke – Hands-on System Architect – Linux Pro since 2000 – DevOps / Operation Automation since 2005 – Puppet since 0.25 RedBridge – Open Source Infrastructure Builders – Consulting, Operations and Open Source Products Since 2003 – Partners with PuppetLabs, Redhat, Amazon, Zimbra, Others PuppetCamp Feb 7, 2013
  • 3. TOC Part 1: Case description – The Customer and the Challenge Part 2 : Way of Working – How to Develop Code Part 3 : Technical Platform – Puppet Masters etc PuppetCamp Feb 7, 2013
  • 4. Part I : Case Description A Swedish telecommunications company About 10 sites around the world Thousands of users Thousands of systems PuppetCamp Feb 7, 2013
  • 5. System Types (in scope) Virtual and metal servers SuSE, RedHat, CentOS, Ubuntu and Solaris Mostly OSS and Third Party Software Divisions choose from predef:d system types – Some unique applications Supporting infrastructure – Network flesystems for applications and user data – OS-native deployment systems (Satellite, Ops Center etc) PuppetCamp Feb 7, 2013
  • 6. The Challenge Bring Home R&D IT From Outsourcing ... and in the process: Shorten Lead Time – Automate Deployment and (Change) Management Increase Cost Efficiency – Solve each problem once – Share the solution globally – A scalable technical platform PuppetCamp Feb 7, 2013
  • 7. Additional Requirements Leverage existing expertise Maintain site-local freedom to solve unique problems Keep site freedom to plan and execute code updates PuppetCamp Feb 7, 2013
  • 8. Puppet? Puppet is naturally only a part of the solution... ...but an important focal point as it touches all services! PuppetCamp Feb 7, 2013
  • 9. Part II : Way of Working Why and when is code developed? How and by whom? How is code shared? PuppetCamp Feb 7, 2013
  • 10. The Facilitator A Global Team, coordinating Puppet Development Knowledge identifcation and sharing Keeper of the code standard Develop and support a Puppet architecture PuppetCamp Feb 7, 2013
  • 11. Example Why and When Site users need a service e.g. ”Hosted Jenkins” Site team calls for Puppet code Global team fnds a Jenkins expert Global team helps Jenkins expert write modules Modules are delivered to requesting site team and users PuppetCamp Feb 7, 2013
  • 12. Another example Site users need a service e.g. Hosted Tomcat Site has a Tomcat expert who can write Puppet module Global Team is notifed that Tomcat module exists If another site requests same service, existing code is ”globalized” with assistance from Global Team PuppetCamp Feb 7, 2013
  • 13. Need Need Development Sync Flowchart code code Global Global Ask Ask available? No available? around around Yes Fetch Fetch Any Any and test and test available? No available? Yes Code Code Modify Modify Develop Develop OK? OK? No and test and test and test and test Yes Done. Done. Post global Post global Deploy! Deploy! suggestion suggestion PuppetCamp Feb 7, 2013
  • 14. Code Sharing Global Git repository (actually per module) Each site pulls code to site-local repository Test locally, and deploy (ITIL Change) Global team is notifed of any local changes If changes are to be globalized, GT pulls code from site-local repo PuppetCamp Feb 7, 2013
  • 15. Code Standard Code structure optimized for sharing some parts, while keeping others site-private Readability and documentation built in Unit test PuppetCamp Feb 7, 2013
  • 16. Code Structure Parameters module local to the site params::jenkins in moduleroot/params/manifests/jenkins.pp All parameters can be overridden per node Priority: 1) Node defnition (class params) 2) Params module 3) Module default (in init.pp!) PuppetCamp Feb 7, 2013
  • 17. README What is the scope of this module What site and what OS:es has it been tested on Example params fle for params module No description of params! – Those go in init.pp PuppetCamp Feb 7, 2013
  • 18. Predictable Results Else-clause with a fail() – e.g. If $::operatingsystem == Solaris { … } else { fail ( ”we have not tested this OS yet” ) } PuppetCamp Feb 7, 2013
  • 19. Code Review Members of the Global Team send code for review ”Please look at this code and test it on your site” – Code deemed unreadable = FAIL – Code breaks other modules unit test = FAIL PuppetCamp Feb 7, 2013
  • 20. Adherance to Standard Lots of code contributors – Varying experience with Puppet Not always developers – Unfamiliar with peer review, Scrum, XP, Unit tests etc. Global Team must fll the gaps – But we are not subject experts! – Educate eachother PuppetCamp Feb 7, 2013
  • 21. Boilerplate A module with all elements Well commented Copy and fll out the blanks PuppetCamp Feb 7, 2013
  • 22. Manifest Patch Strategy Many small increments? OR Take a big hit when needed? + 10 sites with slight differences, ever-evolving + 7 different OS:es + System experts distributed on the sites = Regression testing must also be distributed! PuppetCamp Feb 7, 2013
  • 23. Part III : Puppet Platform Serve thousands of clients Deployable by Puppet (apply) Support Way of Working PuppetCamp Feb 7, 2013
  • 24. Part III : Puppet Platform Serve thousands of clients Deployable by Puppet (apply) Support Way of Working PuppetCamp Feb 7, 2013
  • 25. Deploying Puppet A global network flesystem (rsync+nfs) Git repos with puppet code and packages Clone it Change parameters Bootstrap a frst Puppet Master PuppetCamp Feb 7, 2013
  • 26. Adding More Masters DNS alternate names in the RR certifcate Add server Mount shared storage Bootstrap server from another server puppet agent –server=... --ca_server=... PuppetCamp Feb 7, 2013
  • 27. Puppet Masters 3-10 Masters 1 CA Server Shared (NFS) storage – Manifests – Certifcates Apache plus Passenger Round Robin DNS Records PuppetCamp Feb 7, 2013
  • 28. Foreman Just reports (for now...) Masters store Yaml report on disk Spool to foreman db periodically – Foreman server can be ofine indefnitly w/o losing reports PuppetCamp Feb 7, 2013
  • 29. Agents Deployed with Kick/Jumpstart Version 2.7 Installed under /opt Run by cron, hourly with splay PuppetCamp Feb 7, 2013
  • 30. puppet:/// fles We try to avoid them. Why? – NAS is faster than Passenger Packages are installed from OS native channels – Available in Global NFS What to do with Solaris? – Packages directly from Global NFS PuppetCamp Feb 7, 2013
  • 31. Example: installing Solaris pkg With puppet fle transfer With NFS Mount if $::custom_fact == install { file package { ‘VNDRpkg’ : source => { “local.pkg”: source => ‘/net/nfsserver/remote.pkg’, adminfile puppet:///remote.pkg => ‘/net/nfsserver/remote.adm’, } file { “local.adm”: source => } puppet:///remote.adm # We’re done! } File[“local.pkg”] -> Package[‘VNDRpkg’]}package { ‘VNDRPkg’: source => “local.pkg”, adminfile => “local.adm”, } # + the custom fact ruby code! PuppetCamp Feb 7, 2013
  • 32. Orchestration We don't have it (yet!) Generous ITIL Change Windows Sprawling networks – Firewall red tape PuppetCamp Feb 7, 2013
  • 33. Lessons Learned Modules should not depend on modules – 10 sites with prod, dev and test environments – Slightly different module version mix Puppet is not for Everything! – Template shellscripts are powerful – So is Rpm/Deb/Pkg The biggest issues are with people – Aligning expectations – Consensus about everything from way-of- working to variable naming PuppetCamp Feb 7, 2013