Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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

951 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
  • Be the first to comment

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

×