SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Lessons Learned in
the OSUOSL Puppet
     Migration
     Lance Albertson
        Director
    lance@osuosl.org
       @ramereth
Session Summary
●   OSL team environment overview
●   Brief OSL systems architecture history
●   CFEngine environment & stats
●   Initial Puppet environments
●   Git repo all the things!
●   Modules strategy
●   Deployment/migration strategy
●   Future Plans
           Lessons Learned in the OSUOSL Puppet Migration
           Lance Albertson | lance@osuosl.org | @ramereth
OSL Team Environment
●   2 FTE Sysadmins, 1 FTE developer
●   6-10 student sysadmins
●   4-6 student devs
●   Student productivity / turnover
●   Multiple on-going projects
●   Incoming tickets keeps us busy
●   Domain knowledge is mostly on me*
          * I'm bad at documentation

          Lessons Learned in the OSUOSL Puppet Migration
          Lance Albertson | lance@osuosl.org | @ramereth
OSL Team Environment




     Left to Right: Rudy (basic), Daniel (irdan) and Sean (chekka)


         Lessons Learned in the OSUOSL Puppet Migration
         Lance Albertson | lance@osuosl.org | @ramereth
OSL Systems History
● Started out on Debian ('03-'05)
● Switched to Gentoo Hardened ('05-'12)
  ○ Gentoo devs on staff (mostly me)
  ○ Wanted the grsec/PaX features
● Started deploying CentOS 5 ('08+)
● All new deployments CentOS 6 ('12+)
  ○ EOL schedule worked best for us
● CFEngine 2 for config management
● Some mixed CFEngine/puppet env.
         Lessons Learned in the OSUOSL Puppet Migration
         Lance Albertson | lance@osuosl.org | @ramereth
CFengine Environment
●   Manages all package installs & upgrades
●   180 "Services"
●   174 Package classes
●   110 cf. files
●   19,200 lines of raw cf files
●   14,700 lines actual code
●   1440 lines in cf.classes alone
●   23,000 commits (8,800 are mine alone)
           Lessons Learned in the OSUOSL Puppet Migration
           Lance Albertson | lance@osuosl.org | @ramereth
CFengine Environment
● "Do all the things in cfengine"
● A lot of hacked logic because its CF 2
● Not very dynamic for our needs
● No way to delegate access to projects
● Upgrade path to CF 3 would be a
  nightmare
● But excellent-ish support for Gentoo :-)

          Lessons Learned in the OSUOSL Puppet Migration
          Lance Albertson | lance@osuosl.org | @ramereth
Reason for choosing Puppet
●   Liked its goals and approach overall
●   Proximity to Puppet Labs (PDX)
●   Lots of sharable modules and code
●   Excellent community
●   Lots of progress in its feature set
●   Horrible Gentoo support :-(
    ○   But its improving a little!
              Lessons Learned in the OSUOSL Puppet Migration
              Lance Albertson | lance@osuosl.org | @ramereth
Puppet Migration Strategy
● Avoid mixed cfengine / puppet
  environments at all cost
  ○   Either all cfengine or all puppet
● Convert all CentOS hosts first
  ○ Easy transition
● Rebuild, Retire, Rearchitect Gentoo
  hosts
  ○   Same basic architecture since 2005
            Lessons Learned in the OSUOSL Puppet Migration
            Lance Albertson | lance@osuosl.org | @ramereth
The Beginnings
●   Planning in early 2010
●   Summer of 2010 initial implementation
●   Student project
●   Used code from example42
●   Single git repo (#1) for everything
●   Gentoo Puppet issues
    ○ No concept of use flags, keywords, etc
    ○ Package dependencies are hell
            Lessons Learned in the OSUOSL Puppet Migration
            Lance Albertson | lance@osuosl.org | @ramereth
Git repo all the things! - 2010
● Fall 2010 - Git repo #2 created
● Split into repos based on projects
  ○ Try to solve the delegation problem
  ○ Manifests were done in an ugly way
  ○ Didn't use submodules but a simple script to keep things
      in sync - i.e. non-standard
● Repo is in production still today
  ○ Drupal Project has their own module repo
  ○ They use it to manage their services primarily
  ○ We run CFengine along-side puppet on Drupal Project
      machines
              Lessons Learned in the OSUOSL Puppet Migration
              Lance Albertson | lance@osuosl.org | @ramereth
Git repo all the things! - 2011
● Summer 2011 Repo #3 created
● 2-3 students started it again
● Partnered with PDXCAT team
● Repo for every module, and submodule
  everything
● Nightmare management of the super-repo
● Very confusing to new students
● Deployed it on all the student workstations to
  test
  ○ Now its instance #2 that is running in production
             Lessons Learned in the OSUOSL Puppet Migration
             Lance Albertson | lance@osuosl.org | @ramereth
Git repo all the things! - 2011
● Summer 2011
● Added basic puppet syntax checking commit
  hook
● Implemented puppet-sync
  ○ https://github.com/pdxcat/puppet-sync
  ○ A script to synchronize you manifests from a GIT
      repository to your Puppet master.
● This helped but the submodules produced so
  much rage face

             Lessons Learned in the OSUOSL Puppet Migration
             Lance Albertson | lance@osuosl.org | @ramereth
Git repo all the things! - 2012
● Summer 2012
  ○ I take a crack at fixing the repo mess
● Repo #4 is created with a slightly saner
  approach
● Still using submodules, but much less
● Refactored a bunch of code
● Did take a look at mr for repo management
● Never went into production, kind of forgotten

           Lessons Learned in the OSUOSL Puppet Migration
           Lance Albertson | lance@osuosl.org | @ramereth
Git repo all the things! - 2013
● Fall 2013 - "Lets get this right for real"
● Very simplified multi-repo layout (K.I.S.S.)
● Single repo
● Directory layout:
  ○ dist/ - internal modules
  ○ libs/modules - public or internal->public modules
  ○ site/ - site specific modules
     ■ site/os - OS specific module
     ■ site/role - Role specific module
● Submodules for libs/*
              Lessons Learned in the OSUOSL Puppet Migration
              Lance Albertson | lance@osuosl.org | @ramereth
Lessons learned from the repos
● K.I.S.S. from the start
● Submodules produces a lot of rage face
● Pick something and stick with it the best
  you can
● Flexibility is nice, but don't need it in the
  beginning
● Try to use community modules when
  possible
           Lessons Learned in the OSUOSL Puppet Migration
           Lance Albertson | lance@osuosl.org | @ramereth
Current status of migration
● Workstations on new "simple" repo
● Building base modules (80% finished)
  ○ Importing some from the other repos, refactoring,
       cleaning up
   ○   Using community modules (mysql, concat, etc)
● Importing OSL site specific magic
  ○ Converting CFengine-isms into Puppet
  ○ Try and undo really hacked up code and processes
● Testing and more testing
              Lessons Learned in the OSUOSL Puppet Migration
              Lance Albertson | lance@osuosl.org | @ramereth
Testing Environment
● Vagrant and more vagrant
  ○ Build standard cfengine-ized basebox
  ○ Run new modules to see changes
● Future Plans
  ○ RSpec testing on modules (eventually)
  ○ Jenkins CI environment of some kind
● Projects' access
  ○ Give them an environment to test major changes
● Needs a lot of work
             Lessons Learned in the OSUOSL Puppet Migration
             Lance Albertson | lance@osuosl.org | @ramereth
Current Migration Strategy
● Finish base puppet modules
  ○ Build other modules as needed
● Deploy application service management
  ○ Services not currently managed by CFengine
  ○ Will run in parallel with CFengine
● Convert all current CentOS 5/6 hosts one-by-one
● Gentoo -> CentOS Migration
  ○ Rebuilt as CentOS 6 under puppet
  ○ Retired, re-architected, etc
           Lessons Learned in the OSUOSL Puppet Migration
           Lance Albertson | lance@osuosl.org | @ramereth
Future Plans
● Publish OSL modules
● Delegation to projects
  ○ Allow projects to check out their puppet config
  ○ Integrated testing, merging, etc
  ○ Less work on our staff long term
● Use other tools
  ○ Deploy Foreman (or something similar like PE)
  ○ Try out Puppet Enterprise
  ○ Look into PuppetDB, MCollective, Hiera, etc
              Lessons Learned in the OSUOSL Puppet Migration
              Lance Albertson | lance@osuosl.org | @ramereth
Conclusion Takeaways
● Dedicate someone on the conversion
  ○ Maintain consistency, less context switching
● Use K.I.S.S. principle as much as possible
● Target specific hosts as examples for
  conversion
  ○ Do test deploys with vagrant
● Use "brick and mortar" philosophy
  ○ Try and keep site specific code out of the
     modules the best you can
           Lessons Learned in the OSUOSL Puppet Migration
           Lance Albertson | lance@osuosl.org | @ramereth
Questions?
                  Lance Albertson
                 lance@osuosl.org
                     @ramereth
                  http://osuosl.org
             http://lancealbertson.com
                Follow OSUOSL
            @osuosl | fb.com/OSUOSL
             G+ "Open Source Lab"
                     This work is licensed under a
    Creative Commons Attribution-Share Alike 3.0 United States License.
                            Copyright 2013

Contenu connexe

Tendances

Carton CPAN dependency manager
Carton CPAN dependency managerCarton CPAN dependency manager
Carton CPAN dependency managerTatsuhiko Miyagawa
 
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...jazoon13
 
Pharo Status ESUG 2014
Pharo Status ESUG 2014Pharo Status ESUG 2014
Pharo Status ESUG 2014Marcus Denker
 
Introduction to Kotlin coroutines
Introduction to Kotlin coroutinesIntroduction to Kotlin coroutines
Introduction to Kotlin coroutinesRoman Elizarov
 
Mutiny on the JVM: Taming Complexity in the Heart of Reactive Java
Mutiny on the JVM: Taming Complexity in the Heart of Reactive JavaMutiny on the JVM: Taming Complexity in the Heart of Reactive Java
Mutiny on the JVM: Taming Complexity in the Heart of Reactive JavaJeremy Davis
 

Tendances (6)

Carton CPAN dependency manager
Carton CPAN dependency managerCarton CPAN dependency manager
Carton CPAN dependency manager
 
Progress of HTTP/2 implementation for ATS and future work
Progress of HTTP/2 implementation for ATS and future workProgress of HTTP/2 implementation for ATS and future work
Progress of HTTP/2 implementation for ATS and future work
 
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
 
Pharo Status ESUG 2014
Pharo Status ESUG 2014Pharo Status ESUG 2014
Pharo Status ESUG 2014
 
Introduction to Kotlin coroutines
Introduction to Kotlin coroutinesIntroduction to Kotlin coroutines
Introduction to Kotlin coroutines
 
Mutiny on the JVM: Taming Complexity in the Heart of Reactive Java
Mutiny on the JVM: Taming Complexity in the Heart of Reactive JavaMutiny on the JVM: Taming Complexity in the Heart of Reactive Java
Mutiny on the JVM: Taming Complexity in the Heart of Reactive Java
 

Similaire à PuppetCampLA 2013: Lessons Learned in the OSUOSL Puppet Migration

State of the OSU Open Source Lab
State of the OSU Open Source LabState of the OSU Open Source Lab
State of the OSU Open Source LabAll Things Open
 
The Salmon Algorithm Spawning with Kubernetes
The Salmon Algorithm Spawning with KubernetesThe Salmon Algorithm Spawning with Kubernetes
The Salmon Algorithm Spawning with KubernetesCloudOps2005
 
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...Daniel Jowett
 
Ansible at glogster
Ansible at glogsterAnsible at glogster
Ansible at glogsterRoman Komkov
 
Building Better FLOSS Community Relationships @ FB
Building Better  FLOSS Community Relationships @ FBBuilding Better  FLOSS Community Relationships @ FB
Building Better FLOSS Community Relationships @ FBDavide Cavalca
 
Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Holden Karau
 
SCALE11x: 10 Years of FOSS Hosting at the OSUOSL
SCALE11x: 10 Years of FOSS Hosting at the OSUOSLSCALE11x: 10 Years of FOSS Hosting at the OSUOSL
SCALE11x: 10 Years of FOSS Hosting at the OSUOSLLance Albertson
 
200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet CodeDavid Danzilio
 
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spotOpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spotOpenCms
 
Ontology Access Kit_ Workshop Intro Slides.pptx
Ontology Access Kit_ Workshop Intro Slides.pptxOntology Access Kit_ Workshop Intro Slides.pptx
Ontology Access Kit_ Workshop Intro Slides.pptxChris Mungall
 
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T Puppet
 
Hands-on Lab: Red Hat Container Development & OpenShift
Hands-on Lab: Red Hat Container Development & OpenShiftHands-on Lab: Red Hat Container Development & OpenShift
Hands-on Lab: Red Hat Container Development & OpenShiftAmazon Web Services
 
Ansible at FOSDEM (Ansible Dublin, 2016)
Ansible at FOSDEM (Ansible Dublin, 2016)Ansible at FOSDEM (Ansible Dublin, 2016)
Ansible at FOSDEM (Ansible Dublin, 2016)Brian Brazil
 
Moodle Migration Tips - 1.x 2.x
Moodle Migration Tips - 1.x 2.xMoodle Migration Tips - 1.x 2.x
Moodle Migration Tips - 1.x 2.xtallthom
 
Ruby, the language of devops
Ruby, the language of devopsRuby, the language of devops
Ruby, the language of devopsRob Kinyon
 
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)Robert Nelson
 
Improve the deployment process step by step
Improve the deployment process step by stepImprove the deployment process step by step
Improve the deployment process step by stepDaniel Fahlke
 
lecture-1-overview.pptx
lecture-1-overview.pptxlecture-1-overview.pptx
lecture-1-overview.pptxMweeneMweemba1
 

Similaire à PuppetCampLA 2013: Lessons Learned in the OSUOSL Puppet Migration (20)

State of the OSU Open Source Lab
State of the OSU Open Source LabState of the OSU Open Source Lab
State of the OSU Open Source Lab
 
The Salmon Algorithm Spawning with Kubernetes
The Salmon Algorithm Spawning with KubernetesThe Salmon Algorithm Spawning with Kubernetes
The Salmon Algorithm Spawning with Kubernetes
 
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
 
Ansible at glogster
Ansible at glogsterAnsible at glogster
Ansible at glogster
 
EduSymp 2022 slides (The Epsilon Playground)
EduSymp 2022 slides (The Epsilon Playground)EduSymp 2022 slides (The Epsilon Playground)
EduSymp 2022 slides (The Epsilon Playground)
 
Building Better FLOSS Community Relationships @ FB
Building Better  FLOSS Community Relationships @ FBBuilding Better  FLOSS Community Relationships @ FB
Building Better FLOSS Community Relationships @ FB
 
Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018
 
SCALE11x: 10 Years of FOSS Hosting at the OSUOSL
SCALE11x: 10 Years of FOSS Hosting at the OSUOSLSCALE11x: 10 Years of FOSS Hosting at the OSUOSL
SCALE11x: 10 Years of FOSS Hosting at the OSUOSL
 
200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code
 
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spotOpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
 
OpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spotOpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spot
 
Ontology Access Kit_ Workshop Intro Slides.pptx
Ontology Access Kit_ Workshop Intro Slides.pptxOntology Access Kit_ Workshop Intro Slides.pptx
Ontology Access Kit_ Workshop Intro Slides.pptx
 
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
 
Hands-on Lab: Red Hat Container Development & OpenShift
Hands-on Lab: Red Hat Container Development & OpenShiftHands-on Lab: Red Hat Container Development & OpenShift
Hands-on Lab: Red Hat Container Development & OpenShift
 
Ansible at FOSDEM (Ansible Dublin, 2016)
Ansible at FOSDEM (Ansible Dublin, 2016)Ansible at FOSDEM (Ansible Dublin, 2016)
Ansible at FOSDEM (Ansible Dublin, 2016)
 
Moodle Migration Tips - 1.x 2.x
Moodle Migration Tips - 1.x 2.xMoodle Migration Tips - 1.x 2.x
Moodle Migration Tips - 1.x 2.x
 
Ruby, the language of devops
Ruby, the language of devopsRuby, the language of devops
Ruby, the language of devops
 
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
 
Improve the deployment process step by step
Improve the deployment process step by stepImprove the deployment process step by step
Improve the deployment process step by step
 
lecture-1-overview.pptx
lecture-1-overview.pptxlecture-1-overview.pptx
lecture-1-overview.pptx
 

Dernier

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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
 
[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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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...Martijn de Jong
 
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
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Dernier (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
[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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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...
 
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 ...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

PuppetCampLA 2013: Lessons Learned in the OSUOSL Puppet Migration

  • 1. Lessons Learned in the OSUOSL Puppet Migration Lance Albertson Director lance@osuosl.org @ramereth
  • 2. Session Summary ● OSL team environment overview ● Brief OSL systems architecture history ● CFEngine environment & stats ● Initial Puppet environments ● Git repo all the things! ● Modules strategy ● Deployment/migration strategy ● Future Plans Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 3. OSL Team Environment ● 2 FTE Sysadmins, 1 FTE developer ● 6-10 student sysadmins ● 4-6 student devs ● Student productivity / turnover ● Multiple on-going projects ● Incoming tickets keeps us busy ● Domain knowledge is mostly on me* * I'm bad at documentation Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 4. OSL Team Environment Left to Right: Rudy (basic), Daniel (irdan) and Sean (chekka) Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 5. OSL Systems History ● Started out on Debian ('03-'05) ● Switched to Gentoo Hardened ('05-'12) ○ Gentoo devs on staff (mostly me) ○ Wanted the grsec/PaX features ● Started deploying CentOS 5 ('08+) ● All new deployments CentOS 6 ('12+) ○ EOL schedule worked best for us ● CFEngine 2 for config management ● Some mixed CFEngine/puppet env. Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 6. CFengine Environment ● Manages all package installs & upgrades ● 180 "Services" ● 174 Package classes ● 110 cf. files ● 19,200 lines of raw cf files ● 14,700 lines actual code ● 1440 lines in cf.classes alone ● 23,000 commits (8,800 are mine alone) Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 7. CFengine Environment ● "Do all the things in cfengine" ● A lot of hacked logic because its CF 2 ● Not very dynamic for our needs ● No way to delegate access to projects ● Upgrade path to CF 3 would be a nightmare ● But excellent-ish support for Gentoo :-) Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 8. Reason for choosing Puppet ● Liked its goals and approach overall ● Proximity to Puppet Labs (PDX) ● Lots of sharable modules and code ● Excellent community ● Lots of progress in its feature set ● Horrible Gentoo support :-( ○ But its improving a little! Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 9. Puppet Migration Strategy ● Avoid mixed cfengine / puppet environments at all cost ○ Either all cfengine or all puppet ● Convert all CentOS hosts first ○ Easy transition ● Rebuild, Retire, Rearchitect Gentoo hosts ○ Same basic architecture since 2005 Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 10. The Beginnings ● Planning in early 2010 ● Summer of 2010 initial implementation ● Student project ● Used code from example42 ● Single git repo (#1) for everything ● Gentoo Puppet issues ○ No concept of use flags, keywords, etc ○ Package dependencies are hell Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 11. Git repo all the things! - 2010 ● Fall 2010 - Git repo #2 created ● Split into repos based on projects ○ Try to solve the delegation problem ○ Manifests were done in an ugly way ○ Didn't use submodules but a simple script to keep things in sync - i.e. non-standard ● Repo is in production still today ○ Drupal Project has their own module repo ○ They use it to manage their services primarily ○ We run CFengine along-side puppet on Drupal Project machines Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 12. Git repo all the things! - 2011 ● Summer 2011 Repo #3 created ● 2-3 students started it again ● Partnered with PDXCAT team ● Repo for every module, and submodule everything ● Nightmare management of the super-repo ● Very confusing to new students ● Deployed it on all the student workstations to test ○ Now its instance #2 that is running in production Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 13. Git repo all the things! - 2011 ● Summer 2011 ● Added basic puppet syntax checking commit hook ● Implemented puppet-sync ○ https://github.com/pdxcat/puppet-sync ○ A script to synchronize you manifests from a GIT repository to your Puppet master. ● This helped but the submodules produced so much rage face Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 14. Git repo all the things! - 2012 ● Summer 2012 ○ I take a crack at fixing the repo mess ● Repo #4 is created with a slightly saner approach ● Still using submodules, but much less ● Refactored a bunch of code ● Did take a look at mr for repo management ● Never went into production, kind of forgotten Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 15. Git repo all the things! - 2013 ● Fall 2013 - "Lets get this right for real" ● Very simplified multi-repo layout (K.I.S.S.) ● Single repo ● Directory layout: ○ dist/ - internal modules ○ libs/modules - public or internal->public modules ○ site/ - site specific modules ■ site/os - OS specific module ■ site/role - Role specific module ● Submodules for libs/* Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 16. Lessons learned from the repos ● K.I.S.S. from the start ● Submodules produces a lot of rage face ● Pick something and stick with it the best you can ● Flexibility is nice, but don't need it in the beginning ● Try to use community modules when possible Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 17. Current status of migration ● Workstations on new "simple" repo ● Building base modules (80% finished) ○ Importing some from the other repos, refactoring, cleaning up ○ Using community modules (mysql, concat, etc) ● Importing OSL site specific magic ○ Converting CFengine-isms into Puppet ○ Try and undo really hacked up code and processes ● Testing and more testing Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 18. Testing Environment ● Vagrant and more vagrant ○ Build standard cfengine-ized basebox ○ Run new modules to see changes ● Future Plans ○ RSpec testing on modules (eventually) ○ Jenkins CI environment of some kind ● Projects' access ○ Give them an environment to test major changes ● Needs a lot of work Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 19. Current Migration Strategy ● Finish base puppet modules ○ Build other modules as needed ● Deploy application service management ○ Services not currently managed by CFengine ○ Will run in parallel with CFengine ● Convert all current CentOS 5/6 hosts one-by-one ● Gentoo -> CentOS Migration ○ Rebuilt as CentOS 6 under puppet ○ Retired, re-architected, etc Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 20. Future Plans ● Publish OSL modules ● Delegation to projects ○ Allow projects to check out their puppet config ○ Integrated testing, merging, etc ○ Less work on our staff long term ● Use other tools ○ Deploy Foreman (or something similar like PE) ○ Try out Puppet Enterprise ○ Look into PuppetDB, MCollective, Hiera, etc Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 21. Conclusion Takeaways ● Dedicate someone on the conversion ○ Maintain consistency, less context switching ● Use K.I.S.S. principle as much as possible ● Target specific hosts as examples for conversion ○ Do test deploys with vagrant ● Use "brick and mortar" philosophy ○ Try and keep site specific code out of the modules the best you can Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 22. Questions? Lance Albertson lance@osuosl.org @ramereth http://osuosl.org http://lancealbertson.com Follow OSUOSL @osuosl | fb.com/OSUOSL G+ "Open Source Lab" This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License. Copyright 2013