Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ops for Everyone

John Britton
September 28, 2013

Ops for Everyone

At GitHub, system administration is a first class citizen. Changes are collaboratively developed, peer reviewed, revision controlled, and ship with tests. Automation isn't just for production; we apply the same techniques to our individual developer workstations. In this talk, I'll give you a sneak peek into how a GitHub developer experiences Ops. We'll start with setting up a new machine using Boxen and jump right into the specifics of how to deploy and ship a new feature using the "ChatOps" shared command line. I will show you how we deploy configuration changes to individual and groups of hosts. We'll finish up with a look at how GitHub instruments application performance and exceptions to make it easy to spot newly introduced issues.

Video with Japanese translation: http://vimeo.com/76414801

John Britton

September 28, 2013
Tweet

More Decks by John Britton

Other Decks in Programming

Transcript

  1. HOMEBREW, GIT, GCC, .DEV DNS, NGINX, RBENV, RUBY-BUILD, MANY RUBIES,

    NODENV, MANY NODES, HEROKU TOOLCHAIN, HUB, MYSQL, POSTGRESQL, ELASTICSEARCH, RIAK, JAVA
  2. class projects::education-web { github::project { 'education-web': dotenv => true, elasticsearch

    => true, redis => true, ruby => '1.9.3-p231-tcs-github', postgresql => [ 'education_web_development', 'education_web_test' ] } }
  3. class people::johndbritton { # boxen/puppet-osx include osx::dock::autohide include osx::dock::clear_dock include

    osx::dock::disable include osx::finder::unhide_library include osx::global::enable_keyboard_control_access include osx::software_update include osx::universal_access::ctrl_mod_zoom # applications include adium include caffeine include chrome include dropbox include firefox include flux include onepassword include sequel_pro include sublime_text_2 include transmission include vlc package { 'Bartender':
  4. class people::johndbritton { # boxen/puppet-osx include osx::dock::autohide include osx::dock::clear_dock include

    osx::dock::disable include osx::finder::unhide_library include osx::global::enable_keyboard_control_access include osx::software_update include osx::universal_access::ctrl_mod_zoom # applications include adium include caffeine include chrome include dropbox include firefox include flux include onepassword include sequel_pro include sublime_text_2 include transmission include vlc package { 'Bartender': provider => 'compressed_app', source => 'http://www.macbartender.com/Demo/Bartender.zip';
  5. include osx::dock::autohide include osx::dock::clear_dock include osx::dock::disable include osx::finder::unhide_library include osx::global::enable_keyboard_control_access

    include osx::software_update include osx::universal_access::ctrl_mod_zoom # applications include adium include caffeine include chrome include dropbox include firefox include flux include onepassword include sequel_pro include sublime_text_2 include transmission include vlc package { 'Bartender': provider => 'compressed_app', source => 'http://www.macbartender.com/Demo/Bartender.zip'; 'SublimeText3': provider => 'appdmg', source => 'http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%20Build%203047.dmg'; } # homebrew
  6. include chrome include dropbox include firefox include flux include onepassword

    include sequel_pro include sublime_text_2 include transmission include vlc package { 'Bartender': provider => 'compressed_app', source => 'http://www.macbartender.com/Demo/Bartender.zip'; 'SublimeText3': provider => 'appdmg', source => 'http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%20Build%203047.dmg'; } # homebrew package { ['grc', 'iftop', 'watch', 'wget']: } # shell include zsh $home = "/Users/${::boxen_user}" $src = "${::boxen_srcdir}" $my = "${src}/johndbritton" $dotfiles = "${my}/dotfiles"
  7. provider => 'compressed_app', source => 'http://www.macbartender.com/Demo/Bartender.zip'; 'SublimeText3': provider => 'appdmg',

    source => 'http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%20Build%203047.dmg'; } # homebrew package { ['grc', 'iftop', 'watch', 'wget']: } # shell include zsh $home = "/Users/${::boxen_user}" $src = "${::boxen_srcdir}" $my = "${src}/johndbritton" $dotfiles = "${my}/dotfiles" # oh-my-zsh repository { 'oh-my-zsh': source => 'robbyrussell/oh-my-zsh', path => "${src}/robbyrussell/oh-my-zsh", require => File[$src] } file { "${home}/.zshrc": ensure => link, target => "${dotfiles}/zshrc"
  8. source => 'http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%20Build%203047.dmg'; } # homebrew package { ['grc', 'iftop',

    'watch', 'wget']: } # shell include zsh $home = "/Users/${::boxen_user}" $src = "${::boxen_srcdir}" $my = "${src}/johndbritton" $dotfiles = "${my}/dotfiles" # oh-my-zsh repository { 'oh-my-zsh': source => 'robbyrussell/oh-my-zsh', path => "${src}/robbyrussell/oh-my-zsh", require => File[$src] } file { "${home}/.zshrc": ensure => link, target => "${dotfiles}/zshrc" } # github projects include projects::education-web
  9. $home = "/Users/${::boxen_user}" $src = "${::boxen_srcdir}" $my = "${src}/johndbritton" $dotfiles

    = "${my}/dotfiles" # oh-my-zsh repository { 'oh-my-zsh': source => 'robbyrussell/oh-my-zsh', path => "${src}/robbyrussell/oh-my-zsh", require => File[$src] } file { "${home}/.zshrc": ensure => link, target => "${dotfiles}/zshrc" } # github projects include projects::education-web }