john britton of github on ops for everyone at devcon summit 2013 #mobiledevnbeyond

68
OPS FOR EVERYONE

Upload: developers-connect-devcon-philippines

Post on 11-May-2015

1.343 views

Category:

Career


1 download

TRANSCRIPT

Page 1: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

OPS FOR EVERYONE

Page 2: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

johndbrion

Page 3: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

I THOUGHT OPS WAS JUST FOR NECKBEARDS

I WAS WRONG

Page 4: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

FIRST PRINCIPLES:

Page 5: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

COLLABORATION

Page 6: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

AUTOMATION

Page 7: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

EXPERIMENTATION

Page 8: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

DISTRIBUT-ATION?

Page 9: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

HOW DO WE DO IT?

Page 10: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

BOXEN

Page 11: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

HUBOT

Page 12: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

BOXEN

Page 13: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

ELIMINATE FRICTION

BOXEN MAKES IT POSSIBLE TOBUILD SOMETHING MEANINGFUL

ON DAY ONE

Page 14: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

DAY ONE

Page 15: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

INSTALL XCODECOMMAND LINE TOOLS

Page 16: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

$ curl -s https://example.com/script/boxen.sh > /tmp/install-boxen; bash /tmp/install-boxen | sh

Page 17: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

GRAB A BEVERAGE

Page 18: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

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

NODENV, MANY NODES, HEROKU TOOLCHAIN, HUB, MYSQL,

POSTGRESQL, ELASTICSEARCH, RIAK, JAVA

Page 19: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

$ boxen github

Page 20: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

YOU’VE GOT GITHUB,NOW GO WRITE SOME CODE

Page 21: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

PROJECTMANIFEST

Page 22: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

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'    ]  }}

Page 23: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

PERSONALMANIFEST

Page 24: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

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'; '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" }  # github projects include projects::education-web}

Page 25: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

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'; '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" }  # github projects include projects::education-web}

Page 26: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

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'; '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" }  # github projects include projects::education-web}

Page 27: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

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'; '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" }  # github projects include projects::education-web}

Page 28: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

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'; '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" }  # github projects include projects::education-web}

Page 29: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

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'; '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" }  # github projects include projects::education-web}

Page 30: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

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'; '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" }  # github projects include projects::education-web}

Page 31: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

IT’S JUST PUPPET, FOR YOUR MAC

Page 32: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

HUBOT

Page 33: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

SHARE THE TERMINAL

HUBOT MAKES IT POSSIBLE TO TEST, SHIP, AND MEASURE EVERYTHING

Page 34: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

CHATOPS

Page 35: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

NOBODY CAN SEE WHAT COMMANDS ARE RUN ON THE TERMINAL

Page 36: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

IT’S HARD FOR NEW HIRES TOFIGURE OUT HOW TO DEPLOY

Page 37: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

THINK OF CHAT AS A SHARED COMMAND LINE

Page 38: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

CHATOPS SURFACES OPERATIONS THAT WOULD OTHERWISE BE INVISIBLE

Page 39: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

NEWCOMERS LEARN BYWATCHING EXPERIENCED USERS

Page 40: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

TEST

Page 41: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/CI BUILD

Page 42: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 43: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 44: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

SHIP

Page 45: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/CONFIG

Page 46: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 47: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 48: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/DEPLOY

Page 49: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 50: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/HOSTS

Page 51: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 52: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/PUPPET RUN

Page 53: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 54: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

MEASURE

Page 55: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/GRAPH ME

Page 56: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 57: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 58: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

FUN COMMANDS

Page 59: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/WHERE IS

Page 60: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 61: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 62: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/FITBIT ME

Page 63: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 64: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/NEW HIRE ME

Page 65: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 66: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

/ANIMATE ME

Page 67: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond
Page 68: John Britton of GitHub on Ops for Everyone at DevCon Summit 2013 #MobileDevNBeyond

johndbrion