570 likes | 696 Views
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 loop
E N D
Getting to Push Button Deploys Moovweb January 19, 2012
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 loop • Buzzword compliance – aka Shiny!!!
PROS Increase 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
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
Jenkins http://jenkins-ci.org/
Packaging • But it's sooooo hard save yourself first.....
Using FPM https://github.com/jordansissel/fpm
Right Tool Packages • Something that does not change often • Don't need to roll back quickly • Don't need more than 1 version at a time • You cache external repos or limit to just yours
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
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
ENC – Use Groups! http://docs.puppetlabs.com/guides/installing_dashboard.html
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
Mcollective – Do It NOW!! • Orchestration framework • Crazy Parallel • Write more ruby code... • Clients and Agents
Mcollective – Crazy Parallel 6380 nrpe checks across 370 hosts in 3.8 seconds https://github.com/maguec/devops/tree/master/mcollective/nrpe
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
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/
Sinatra – Addons • sinatra-respond_to - useful as API • Pony – send email from Sinatra • Twitter Bootstrap – make things pretty
Public Example https://github.com/maguec/mco_dashboard_example
Sinatra - Tips • Run a few behind Nginx • Use helpers whenever possible • Log every push • Use it to integrate all your data
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