Change Management   with Puppet            2011-04-13       PuppetNYC Users Group             Garrett Honeycutt       Prof...
We are hiring•   Professional Services•   Core Developer•   Front End Web Developer•   QA/Test Eng•   Web Marketing Manage...
PICCProfessional IT Community Conference•   April 29th and 30th•   Hyatt Regency in New Brunswick, NJ•   Travel expenses p...
What?Change - “an event that results in a new statusof one or more configuration items”[1][1] - http://en.wikipedia.org/wik...
Why?Environments are the same!Dev == QA == Staging == ... == PROD
Why?Compliance with Change Management policies•   CAB - Change Approval/Advisory Board•   Different environments have diff...
Different EnvironmentsPuppet Test Area -> Dev -> QA -> ProdEach environment has different teams andsometimes conflicting goals
Gate ExamplesPuppet Test Area -> Dev•   Dev’s agree/know of changeDev -> QA•   Dev’s have completed and self testedQA -> P...
Documentation and PoliciesUnderstand your environments•   What are they?•   What is their order of precedence?•   What are...
Documentation and PoliciesUnderstand gating factors for change•   What are the gates between each environment?•   Who appr...
VCS Structure (SVN view)
VCS Structure (git view)same as SVN except•   you do not have separate directories for    •   trunk    •   branches    •  ...
VCS Structuretrunk / master•   New code that is the best known working code•   but still not very well tested ...
VCS Structurebranches•   short lived•   use topical branches!•   associate branches with ticket numbers, so you can    lev...
VCS Structuretags•   immutable (even if you can technically make    changes)•   found that BIND style serials work quite w...
Flow•   Change request comes in (from your ticket system)•   You create a branch from trunk/master that    corresponds wit...
Flow
Oops, we found a bug•   tags are immutable, remember?•   create a brand new tag off of trunk/master•   start the process f...
Release ManagementMultiple people making changes?•   You need a release manager to be responsible for    merging from bran...
Release ManagementMultiple teams exchanging code?•   Investigate using multiple module paths•   Communication!    •   priv...
Mailing List of changesCreate a mailing list for all changes•   You can always ignore it•   reach out to those writing poo...
Testing trunk/masterCreate at least one representative system for eachdifferent type of system you model•   Run these syst...
Approaches to testing                 branches•   Puppet’s understanding of environments is good    for this•   Setup a di...
Change Management   with Puppet            2011-04-13       PuppetNYC Users Group             Garrett Honeycutt       Prof...
Upcoming SlideShare
Loading in …5
×

20110413 change management-with_puppet_for_puppet_nyc

1,452 views

Published on

Change Management with Puppet for PuppetNYC Users Group

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,452
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

20110413 change management-with_puppet_for_puppet_nyc

  1. 1. Change Management with Puppet 2011-04-13 PuppetNYC Users Group Garrett Honeycutt Professional Services Consultant garrett@puppetlabs.com http://linkedin.com/in/garretthoneycutt
  2. 2. We are hiring• Professional Services• Core Developer• Front End Web Developer• QA/Test Eng• Web Marketing Manager• Sales Account Manager
  3. 3. PICCProfessional IT Community Conference• April 29th and 30th• Hyatt Regency in New Brunswick, NJ• Travel expenses provided
  4. 4. What?Change - “an event that results in a new statusof one or more configuration items”[1][1] - http://en.wikipedia.org/wiki/Information_Technology_Infrastructure_Library#Change_Management
  5. 5. Why?Environments are the same!Dev == QA == Staging == ... == PROD
  6. 6. Why?Compliance with Change Management policies• CAB - Change Approval/Advisory Board• Different environments have different criteria for passing to the next one
  7. 7. Different EnvironmentsPuppet Test Area -> Dev -> QA -> ProdEach environment has different teams andsometimes conflicting goals
  8. 8. Gate ExamplesPuppet Test Area -> Dev• Dev’s agree/know of changeDev -> QA• Dev’s have completed and self testedQA -> Prod• QA team has verified systems• Ops is ready (has runbooks, monitoring setup, ... )
  9. 9. Documentation and PoliciesUnderstand your environments• What are they?• What is their order of precedence?• What are their SLA’s?• Who owns them?
  10. 10. Documentation and PoliciesUnderstand gating factors for change• What are the gates between each environment?• Who approves them?• In what forum are they approved?
  11. 11. VCS Structure (SVN view)
  12. 12. VCS Structure (git view)same as SVN except• you do not have separate directories for • trunk • branches • tags
  13. 13. VCS Structuretrunk / master• New code that is the best known working code• but still not very well tested ...
  14. 14. VCS Structurebranches• short lived• use topical branches!• associate branches with ticket numbers, so you can leverage your ticketing system to capture who is requesting changes and why• avoid assigning branches to people as they tend to be long lived
  15. 15. VCS Structuretags• immutable (even if you can technically make changes)• found that BIND style serials work quite well for naming tags • 2011041300 would be the first tag on April 13th, 2011.
  16. 16. Flow• Change request comes in (from your ticket system)• You create a branch from trunk/master that corresponds with the request• Make changes to the branch• Merge the branch back into trunk/master• test against trunk/master• create a tag• associate that tag with the next environment all the way through to Prod
  17. 17. Flow
  18. 18. Oops, we found a bug• tags are immutable, remember?• create a brand new tag off of trunk/master• start the process from the beginning• short-cuts are more expensive
  19. 19. Release ManagementMultiple people making changes?• You need a release manager to be responsible for merging from branches into trunk/master• Potentially rotate who holds this position
  20. 20. Release ManagementMultiple teams exchanging code?• Investigate using multiple module paths• Communication! • private github - can facilitate cooperation
  21. 21. Mailing List of changesCreate a mailing list for all changes• You can always ignore it• reach out to those writing poor code before they ask you to merge it into trunk• svnmailer is great
  22. 22. Testing trunk/masterCreate at least one representative system for eachdifferent type of system you model• Run these systems off the code in trunk/master• Before cutting a tag, rebuild all these systems from scratch • further tests that relationships between resources are working • proves you can actually provision a system from scratch
  23. 23. Approaches to testing branches• Puppet’s understanding of environments is good for this• Setup a different Puppet master per branch• Do not rely on a puppet master at all -- use puppet apply and test locally
  24. 24. Change Management with Puppet 2011-04-13 PuppetNYC Users Group Garrett Honeycutt Professional Services Consultant garrett@puppetlabs.com http://linkedin.com/in/garretthoneycutt

×