SlideShare a Scribd company logo
1 of 24
Download to read offline
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
Systems weekly team meeting
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
● 113 cf. files
● 19,500 lines of raw cf files
● 14,700 lines actual code
● 1490 lines in cf.classes alone
● 24,300 commits (9,100 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
● Works very well for our Gentoo hosts
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
● Very sysadmin focused
● Lots of progress in its feature set
○ Razor, Puppet Enterprise, Foreman, etc
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, rethink Architecture
○ 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 - YUCK!
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 PSU CAT 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 was running in production at the
time
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
“puppet-simple” repo - 2012
● Fall 2012 - "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
Repo Recap
● #1 Single git repo - deprecated
● #2 Multi-repos w/o submodules - prod (Drupal)
● #3 Multi-repos w/ submodules - deprecated
● #4 Multi-repos w/ submodules (Lance refactor)
○ never used
● #5 puppet-simple - prod (workstations)
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
Chef Experiment - 2013
● Wait, I thought this was a Puppet migration talk?
● Decided to take another look at Chef
● Testing on a small set of new machine
environments
● Has its own set of issues and problems
○ Fixed some initial workflow problems we had with
puppet
● Jury is still out
● “Yay” for three config management envs! </sarcasm>
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
○ 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

More Related Content

More from 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
 
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
 
Puppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet
 
Bolt on Windows - James Pogran
Bolt on Windows - James PogranBolt on Windows - James Pogran
Bolt on Windows - James PogranPuppet
 

More from Puppet (20)

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
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Puppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav Hadzhiev
 
Bolt on Windows - James Pogran
Bolt on Windows - James PogranBolt on Windows - James Pogran
Bolt on Windows - James Pogran
 

Recently uploaded

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Recently uploaded (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

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 Systems weekly team meeting 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 ● 113 cf. files ● 19,500 lines of raw cf files ● 14,700 lines actual code ● 1490 lines in cf.classes alone ● 24,300 commits (9,100 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 ● Works very well for our Gentoo hosts 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 ● Very sysadmin focused ● Lots of progress in its feature set ○ Razor, Puppet Enterprise, Foreman, etc 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, rethink Architecture ○ 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 - YUCK! 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 PSU CAT 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 was running in production at the time 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. “puppet-simple” repo - 2012 ● Fall 2012 - "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. Repo Recap ● #1 Single git repo - deprecated ● #2 Multi-repos w/o submodules - prod (Drupal) ● #3 Multi-repos w/ submodules - deprecated ● #4 Multi-repos w/ submodules (Lance refactor) ○ never used ● #5 puppet-simple - prod (workstations) Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 17. 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
  • 18. Chef Experiment - 2013 ● Wait, I thought this was a Puppet migration talk? ● Decided to take another look at Chef ● Testing on a small set of new machine environments ● Has its own set of issues and problems ○ Fixed some initial workflow problems we had with puppet ● Jury is still out ● “Yay” for three config management envs! </sarcasm> Lessons Learned in the OSUOSL Puppet Migration Lance Albertson | lance@osuosl.org | @ramereth
  • 19. 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
  • 20. Testing Environment ● Vagrant and more vagrant ○ Build standard cfengine-ized basebox ○ Run new modules to see changes ● Future Plans ○ RSpec testing on modules ○ 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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