Getting to Push Button Deploys
Download
Report
Transcript Getting to Push Button Deploys
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
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
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 software
Uploads to software repo
Tags build in git
Jenkins
http://je
nkins-
Jenkins
Jenkins
Rake
Packaging
But it's sooooo hard
save yourself first.....
Using FPM
https://github.com/jordansissel/fpm
Building a Gem
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
Puppet – Start with a sane base
ENC – Use Groups!
http://docs.puppetlabs.c
om/guides/installing_das
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 – 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
Puppet - Scaling
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
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 everything
Log to syslog
Use ApacheMQ
For EC2 tune your keep alives (registerinterval)
Remember you have a machine gun pointed at
your foot
Mcollective - Scaling
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/ma
Public Example
Really Simple
Sinatra - Tips
Run a few behind Nginx
Use helpers whenever possible
Log every push
Use it to integrate all your data
Actual Push Procedure
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
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 author and helpful guy)
Andrew Farmer ( for helping to get this going )
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
Author
Chris Mague
[email protected]
IRC: bosszaru usually on #gaijin
Twitter: @maguec