ops for everyone - john britton

68
OPS FOR EVERYONE

Upload: devopsdays

Post on 08-May-2015

1.815 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Ops for everyone - John Britton

OPS FOR EVERYONE

Page 2: Ops for everyone - John Britton

johndbrion

Page 3: Ops for everyone - John Britton

I THOUGHT OPS WAS JUST FOR NECKBEARDS

I WAS WRONG

Page 4: Ops for everyone - John Britton

FIRST PRINCIPLES:

Page 5: Ops for everyone - John Britton

COLLABORATION

Page 6: Ops for everyone - John Britton

AUTOMATION

Page 7: Ops for everyone - John Britton

EXPERIMENTATION

Page 8: Ops for everyone - John Britton

DISTRIBUT-ATION?

Page 9: Ops for everyone - John Britton

HOW DO WE DO IT?

Page 10: Ops for everyone - John Britton

BOXEN

Page 11: Ops for everyone - John Britton

HUBOT

Page 12: Ops for everyone - John Britton

BOXEN

Page 13: Ops for everyone - John Britton

ELIMINATE FRICTION

BOXEN MAKES IT POSSIBLE TOBUILD SOMETHING MEANINGFUL

ON DAY ONE

Page 14: Ops for everyone - John Britton

DAY ONE

Page 15: Ops for everyone - John Britton

INSTALL XCODECOMMAND LINE TOOLS

Page 16: Ops for everyone - John Britton

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

Page 17: Ops for everyone - John Britton

GRAB A BEVERAGE

Page 18: Ops for everyone - John Britton

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

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

POSTGRESQL, ELASTICSEARCH, RIAK, JAVA

Page 19: Ops for everyone - John Britton

$ boxen github

Page 20: Ops for everyone - John Britton

YOU’VE GOT GITHUB,NOW GO WRITE SOME CODE

Page 21: Ops for everyone - John Britton

PROJECTMANIFEST

Page 22: Ops for everyone - John Britton

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: Ops for everyone - John Britton

PERSONALMANIFEST

Page 24: Ops for everyone - John Britton

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: Ops for everyone - John Britton

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: Ops for everyone - John Britton

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: Ops for everyone - John Britton

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: Ops for everyone - John Britton

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: Ops for everyone - John Britton

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: Ops for everyone - John Britton

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: Ops for everyone - John Britton

IT’S JUST PUPPET, FOR YOUR MAC

Page 32: Ops for everyone - John Britton

HUBOT

Page 33: Ops for everyone - John Britton

SHARE THE TERMINAL

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

Page 34: Ops for everyone - John Britton

CHATOPS

Page 35: Ops for everyone - John Britton

NOBODY CAN SEE WHAT COMMANDS ARE RUN ON THE TERMINAL

Page 36: Ops for everyone - John Britton

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

Page 37: Ops for everyone - John Britton

THINK OF CHAT AS A SHARED COMMAND LINE

Page 38: Ops for everyone - John Britton

CHATOPS SURFACES OPERATIONS THAT WOULD OTHERWISE BE INVISIBLE

Page 39: Ops for everyone - John Britton

NEWCOMERS LEARN BYWATCHING EXPERIENCED USERS

Page 40: Ops for everyone - John Britton

TEST

Page 41: Ops for everyone - John Britton

/CI BUILD

Page 42: Ops for everyone - John Britton
Page 43: Ops for everyone - John Britton
Page 44: Ops for everyone - John Britton

SHIP

Page 45: Ops for everyone - John Britton

/CONFIG

Page 46: Ops for everyone - John Britton
Page 47: Ops for everyone - John Britton
Page 48: Ops for everyone - John Britton

/DEPLOY

Page 49: Ops for everyone - John Britton
Page 50: Ops for everyone - John Britton

/HOSTS

Page 51: Ops for everyone - John Britton
Page 52: Ops for everyone - John Britton

/PUPPET RUN

Page 53: Ops for everyone - John Britton
Page 54: Ops for everyone - John Britton

MEASURE

Page 55: Ops for everyone - John Britton

/GRAPH ME

Page 56: Ops for everyone - John Britton
Page 57: Ops for everyone - John Britton
Page 58: Ops for everyone - John Britton

FUN COMMANDS

Page 59: Ops for everyone - John Britton

/WHERE IS

Page 60: Ops for everyone - John Britton
Page 61: Ops for everyone - John Britton
Page 62: Ops for everyone - John Britton

/FITBIT ME

Page 63: Ops for everyone - John Britton
Page 64: Ops for everyone - John Britton

/NEW HIRE ME

Page 65: Ops for everyone - John Britton
Page 66: Ops for everyone - John Britton

/ANIMATE ME

Page 67: Ops for everyone - John Britton
Page 68: Ops for everyone - John Britton

johndbrion