Getting to Push Button Deploys          Moovweb       January 19, 2012
Things Everyone Wants
Reality… is it done yet???   … is it done yet??? … is it done yet???
Gotta Have It!                       PROS    Increase velocity of change/responsiveness    Get Operations out of the loo...
PROSIncrease velocity of change/responsiveness
PROS – Ops Gets Out of Loop    Less work for Operations    Developers feel more in control
Gotta Have It!                       CONS    Increase velocity of change    Shared responsibility    Not always easy
Make It So...
Components
Components
Components
Components
Components - MoovStack
CI    Jenkins ( maiden name is Hudson )    Checks out a deploy branch from git    Runs a few sanity checks    Packages...
Jenkinshttp://jenkins-ci.org/
Jenkins
Jenkins
Rake
Packaging    But its sooooo hardsave yourself first.....
Using FPMhttps://github.com/jordansissel/fpm
Building a Gem
Right Tool Packages    Something that does not change often    Dont need to roll back quickly    Dont need more than 1 ...
Right Tool Gems    Fast roll back – gem cache    Easy setup of gem server    Need more than 1 version at a time    Bun...
Configuration Management    Puppet everything from bare metal/base image    Seperate data from manifests with an ENC   ...
Puppet – Start with a sane base
ENC – Use Groups!http://docs.puppetlabs.com/guides/installing_dashboard.html
ENC – Node Entries Inherit
ENC – Scripting Additions
ENC - Output
Manifests Contain ENC Variables
Templates Contain ENC Variables
Puppet - Tips    Execs hurt – try to avoid them    Recursive directories – use vcsrepo instead    Write your own types ...
Puppet - Scaling
Mcollective – Do It NOW!!    Orchestration framework    Crazy Parallel    Write more ruby code...    Clients and Agents
Mcollective – Crazy Parallel6380 nrpe checks across 370 hosts in 3.8 seconds
Use Facts and Classes to Filter
Mcollective – Custom Agent
Mcollective – Custom Client
Mcollective - Tips    Remeber you have a machine gun pointed at    your foot    Wrap command in IO.popen and log everyth...
Mcollective - Scaling
Sinatra    Web app in 5 minutes    Much more minimal than rails    Written in Ruby so I can interface with    Mcollecti...
Sinatra – Addons    sinatra-respond_to - useful as API    Pony – send email from Sinatra    Twitter Bootstrap – make th...
Public Examplehttps://github.com/maguec/mco_dashboard_example
Public Example
Really Simple
Sinatra - Tips    Run a few behind Nginx    Use helpers whenever possible    Log every push    Use it to integrate all...
Actual Push Procedure
Dashboard Functionality    Push software    Audit software    Real-time monitoring check    Performance data integrati...
Oppy – an example
Oppy – an example
Oppy – an example
Oppy – an example
Oppy – an example
Oppy – an example
Thanks    Michael Catlin (organizer)    Tarun Desikan (giving me free reign/enough rope)    R.I. Pienaar ( Mcollective ...
Links    http://blog.moovweb.com/    http://www.devco.net/    http://www.puppetlabs.com/    http://blog.mague.com/   ...
AuthorChris Maguechristianmague@gmail.comIRC: bosszaru usually on #gaijinTwitter: @maguec
Upcoming SlideShare
Loading in …5
×

Getting to push_button_deploys

930 views

Published on

A rundown of the tools and procedures that I have implemented at Moovweb to increase the velocity of software deployment.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
930
On SlideShare
0
From Embeds
0
Number of Embeds
98
Actions
Shares
0
Downloads
23
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Getting to push_button_deploys

  1. 1. Getting to Push Button Deploys Moovweb January 19, 2012
  2. 2. Things Everyone Wants
  3. 3. Reality… is it done yet??? … is it done yet??? … is it done yet???
  4. 4. Gotta Have It! PROS Increase velocity of change/responsiveness Get Operations out of the loop Buzzword compliance – aka Shiny!!!
  5. 5. PROSIncrease velocity of change/responsiveness
  6. 6. PROS – Ops Gets Out of Loop Less work for Operations Developers feel more in control
  7. 7. Gotta Have It! CONS Increase velocity of change Shared responsibility Not always easy
  8. 8. Make It So...
  9. 9. Components
  10. 10. Components
  11. 11. Components
  12. 12. Components
  13. 13. Components - MoovStack
  14. 14. CI Jenkins ( maiden name is Hudson ) Checks out a deploy branch from git Runs a few sanity checks Packages software Uploads to software repo Tags build in git
  15. 15. Jenkinshttp://jenkins-ci.org/
  16. 16. Jenkins
  17. 17. Jenkins
  18. 18. Rake
  19. 19. Packaging But its sooooo hardsave yourself first.....
  20. 20. Using FPMhttps://github.com/jordansissel/fpm
  21. 21. Building a Gem
  22. 22. Right Tool Packages Something that does not change often Dont need to roll back quickly Dont need more than 1 version at a time You cache external repos or limit to just yours
  23. 23. Right Tool Gems Fast roll back – gem cache Easy setup of gem server Need more than 1 version at a time Bundler for dependencies Bundle exec for peace of mind
  24. 24. Configuration Management Puppet everything from bare metal/base image Seperate data from manifests with an ENC Max troubleshooting time is 20 minutes Amazon free ”chaos monkey” service
  25. 25. Puppet – Start with a sane base
  26. 26. ENC – Use Groups!http://docs.puppetlabs.com/guides/installing_dashboard.html
  27. 27. ENC – Node Entries Inherit
  28. 28. ENC – Scripting Additions
  29. 29. ENC - Output
  30. 30. Manifests Contain ENC Variables
  31. 31. Templates Contain ENC Variables
  32. 32. Puppet - Tips Execs hurt – try to avoid them Recursive directories – use vcsrepo instead Write your own types – just restart in between Run mongrel or passenger Use behind a load balancer for fun Use reporting, but take the DB off of your master Write your own facts and save lots of time
  33. 33. Puppet - Scaling
  34. 34. Mcollective – Do It NOW!! Orchestration framework Crazy Parallel Write more ruby code... Clients and Agents
  35. 35. Mcollective – Crazy Parallel6380 nrpe checks across 370 hosts in 3.8 seconds
  36. 36. Use Facts and Classes to Filter
  37. 37. Mcollective – Custom Agent
  38. 38. Mcollective – Custom Client
  39. 39. Mcollective - Tips Remeber you have a machine gun pointed at your foot Wrap command in IO.popen and log everything Log to syslog Use ApacheMQ For EC2 tune your keep alives (registerinterval) Remember you have a machine gun pointed at your foot
  40. 40. Mcollective - Scaling
  41. 41. Sinatra Web app in 5 minutes Much more minimal than rails Written in Ruby so I can interface with Mcollective easily http://www.sinatrarb.com/
  42. 42. Sinatra – Addons sinatra-respond_to - useful as API Pony – send email from Sinatra Twitter Bootstrap – make things pretty
  43. 43. Public Examplehttps://github.com/maguec/mco_dashboard_example
  44. 44. Public Example
  45. 45. Really Simple
  46. 46. Sinatra - Tips Run a few behind Nginx Use helpers whenever possible Log every push Use it to integrate all your data
  47. 47. Actual Push Procedure
  48. 48. Dashboard Functionality Push software Audit software Real-time monitoring check Performance data integration Log data integration Troubleshooting tools for developers Utilities for non-technical staff Open trouble tickets Cost information (in progress) Userful links to other data sources
  49. 49. Oppy – an example
  50. 50. Oppy – an example
  51. 51. Oppy – an example
  52. 52. Oppy – an example
  53. 53. Oppy – an example
  54. 54. Oppy – an example
  55. 55. Thanks Michael Catlin (organizer) Tarun Desikan (giving me free reign/enough rope) R.I. Pienaar ( Mcollective author and helpful guy) Andrew Farmer ( for helping to get this going )
  56. 56. Links http://blog.moovweb.com/ http://www.devco.net/ http://www.puppetlabs.com/ http://blog.mague.com/ http://www.sinatrarb.com/ http://jenkins-ci.org/IRC #puppet,#mcollective,#devops
  57. 57. AuthorChris Maguechristianmague@gmail.comIRC: bosszaru usually on #gaijinTwitter: @maguec

×