SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Os Grossupdated
Os GrossupdatedOs Grossupdated
Os Grossupdated
oscon2007
 
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
 
G W T(2)
G W T(2)G W T(2)
G W T(2)
tomcoh
 

Tendances (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
 

En vedette

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
Puppet
 
Introduction to puppet
Introduction to puppetIntroduction to puppet
Introduction to puppet
Habeeb Rahman
 

En vedette (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
 

Similaire à Scaling Puppet Usage to a Global Organization

V mware
V mwareV mware
V mware
dvmug1
 
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
 

Similaire à 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 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
 
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
 
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...
 

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 controlrepo
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 

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

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Dernier (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 

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