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

Ops for Everyone

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for John Britton 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

Avatar for John Britton

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 }