OPS FOR EVERYONE
 johndbrion
I THOUGHT OPS WAS
JUST FOR NECKBEARDS
I WAS WRONG
FIRST PRINCIPLES:
COLLABORATION
AUTOMATION
EXPERIMENTATION
DISTRIBUT-ATION?
HOW DO WE DO IT?
BOXEN
HUBOT
BOXEN
ELIMINATE FRICTION
BOXEN MAKES IT POSSIBLE TO
BUILD SOMETHING MEANINGFUL
ON DAY ONE
DAY ONE
INSTALL XCODE
COMMAND LINE TOOLS
$ curl -s https://example.com/script/boxen.sh > /tmp/
install-boxen; bash /tmp/install-boxen | sh
 GRAB A BEVERAGE
HOMEBREW, GIT, GCC, .DEV DNS, NGINX,
RBENV, RUBY-BUILD, MANY RUBIES,
NODENV, MANY NODES, HEROKU
TOOLCHAIN, HUB, MYSQL,
POSTGRESQL, ELASTICSEARCH, RIAK,
JAVA
$ boxen github
YOU’VE GOT GITHUB,
NOW GO WRITE SOME CODE
PROJECT
MANIFEST
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'
    ]
  }
}
PERSONAL
MANIFEST
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':
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';
include
include
include
include
include
include
include

osx::dock::autohide
osx::dock::clear_dock
osx::dock::disable
osx::finder::unhide_library
osx::global::enable_keyboard_control_access
osx::software_update
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
include
include
include
include
include
include
include
include
include

chrome
dropbox
firefox
flux
onepassword
sequel_pro
sublime_text_2
transmission
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
$src
$my
$dotfiles

=
=
=
=

"/Users/${::boxen_user}"
"${::boxen_srcdir}"
"${src}/johndbritton"
"${my}/dotfiles"
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
$src
$my
$dotfiles

=
=
=
=

"/Users/${::boxen_user}"
"${::boxen_srcdir}"
"${src}/johndbritton"
"${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"
source => 'http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%20Build%203047.dmg';
}
 
# homebrew
package {
['grc', 'iftop', 'watch', 'wget']:
}
 
# shell
include zsh
 
$home
$src
$my
$dotfiles

=
=
=
=

"/Users/${::boxen_user}"
"${::boxen_srcdir}"
"${src}/johndbritton"
"${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
$home
$src
$my
$dotfiles

=
=
=
=

"/Users/${::boxen_user}"
"${::boxen_srcdir}"
"${src}/johndbritton"
"${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
}
IT’S JUST PUPPET, FOR YOUR MAC
HUBOT
SHARE THE TERMINAL
HUBOT MAKES IT POSSIBLE TO TEST,
SHIP, AND MEASURE EVERYTHING
CHATOPS
NOBODY CAN SEE WHAT COMMANDS
ARE RUN ON THE TERMINAL
IT’S HARD FOR NEW HIRES TO
FIGURE OUT HOW TO DEPLOY
THINK OF CHAT AS A SHARED
COMMAND LINE
CHATOPS SURFACES OPERATIONS
THAT WOULD OTHERWISE BE INVISIBLE
NEWCOMERS LEARN BY
WATCHING EXPERIENCED USERS
TEST
/CI BUILD
SHIP
/CONFIG
/DEPLOY
/HOSTS
/PUPPET RUN
MEASURE
/GRAPH ME
FUN COMMANDS
/WHERE IS
/FITBIT ME
/NEW HIRE ME
/ANIMATE ME
 johndbrion

Ops for everyone - John Britton