Boxen: AATFT

101
BOXEN

description

If software is eating the world, automation is keeping it from falling to piece. Automation shouldn't stop with servers. Boxen helps your organization eliminate the routinely manual task of hand-configuring an artisanal development machine. It's a complex problem, and that means sometimes parts of the solution are complex too. In this talk, we explore actually using Boxen to automate your organization's IT needs in a way that doesn't step on your developers' toes. Will Farrington Junior Executive Assistant to the Assistant VP of Operations, GitHub, Inc. Will is a developer and operations engineer. Will works on system operations at GitHub, where he spends most of his time slinging Puppet to manage GitHub's extensive production environment where he spends a great deal of time on automating, homogenizing, and improving GitHub's development environments. Prior to GitHub, he spent the previous 3 years using Ruby and Puppet to build and scale massive web services with Highgroove Studios and Rails Machine.

Transcript of Boxen: AATFT

Page 1: Boxen: AATFT

BOXEN

Page 2: Boxen: AATFT

WFARR

Page 3: Boxen: AATFT

JBARNETTE

Page 4: Boxen: AATFT

! "

Page 5: Boxen: AATFT

INVENTING ON PRINCIPLE

Page 6: Boxen: AATFT

WHAT IN THE HELL IS MY PRINCIPLE?

Page 7: Boxen: AATFT

SOFTWARE IS TERRIBLE

Page 8: Boxen: AATFT

DEVELOPING SOFTWARE IS HARD

Page 9: Boxen: AATFT

INTERACTING WITH SOFTWARE IS PAINFUL

Page 10: Boxen: AATFT

PAINFUL SOFTWARE CREATES FRICTION

Page 11: Boxen: AATFT

FRICTION GETS BETWEEN PEOPLE AND PRODUCT

Page 12: Boxen: AATFT

SOFTWARE SHOULD FEEL EASY TO EVERYONE

Page 13: Boxen: AATFT

SOFTWARE SHOULD GET OUT OF THE WAY

Page 14: Boxen: AATFT

“Help people design, build, and ship software better, together.”

"

Page 15: Boxen: AATFT

“Help people more easily design, build, and ship things, with software.”

Page 16: Boxen: AATFT
Page 17: Boxen: AATFT

WE'RE GOING TO NEED MORE PORCELAINTO ENABLE PEOPLE TO SHIP

Page 18: Boxen: AATFT

SHIPPING ISN'T JUST FOR SOFTWARE, YO

Page 19: Boxen: AATFT

EVERYONE IN YOUR ORGANIZATION SHIPS;HOW DOES YOUR CULTURE ENCOURAGE THAT?

Page 20: Boxen: AATFT

ENABLE #

Page 21: Boxen: AATFT

HOW?

Page 22: Boxen: AATFT

WE NEED A MISSION STATEMENT

Page 23: Boxen: AATFT

TATFT

Page 24: Boxen: AATFT

T E S TA L LT H EF & % $ I N GT I M E

Page 25: Boxen: AATFT

“Whatever you do, make sure you are testing, because if you aren’t, all you are doing is making it harder for yourself when you revisit the code,

and making it even harder for the next developer who will inevitably have to maintain what you just wrote.”

- Bryan Liles

Page 26: Boxen: AATFT

$

Page 27: Boxen: AATFT

“Whatever you do, make sure you are automating, because if you aren’t, all you are doing is making it harder for yourself when you revisit the

problem, and making it even harder for the next person who will inevitably have to reproduce your solution.”

Page 28: Boxen: AATFT

“Whatever you do, make sure you are automating, because if you aren’t, all you are doing is making it harder for yourself when you revisit the

problem, and making it even harder for the next person who will inevitably have to reproduce your solution.”

Page 29: Boxen: AATFT

AUTOMATE PROBLEM REPRODUCE SOLUTION

Page 30: Boxen: AATFT

AUTOMATING SOLUTIONS TO PROBLEMS LEADS TO REPRODUCIBLE SOLUTIONS

Page 31: Boxen: AATFT

AUTOMATING SOLUTIONS TO PROBLEMS LEADS TO REPRODUCIBLE SOLUTIONS WHICH ARE EASIER THAN

SOLVING PROBLEMS UNIQUELY EACH TIME

Page 32: Boxen: AATFT

AUTOMATING SOLUTIONS TO PROBLEMS LEADS TO REPRODUCIBLE SOLUTIONS WHICH ARE EASIER THAN

SOLVING PROBLEMS UNIQUELY EACH TIME FOR EVERYONE

Page 33: Boxen: AATFT

A U T O M A T EA L LT H EF & % $ I N GT H I N G S

Page 34: Boxen: AATFT

# WORK IN ENVIRONMENTS

Page 35: Boxen: AATFT

% &

Page 36: Boxen: AATFT

' (

Page 37: Boxen: AATFT

)

Page 38: Boxen: AATFT

*

Page 39: Boxen: AATFT

class github::environment {

include clojure include go include mysql include nodejs include postgresql include ruby

$gems = [ 'bundler', 'rails' ]

ruby::gem { $gems: }

}

Page 40: Boxen: AATFT

class github::environment::rails {

include mysql include nodejs # asset pipeline :( include ruby

$gems = [ 'bundler', 'rails' ]

ruby::gem { $gems: }

}

Page 41: Boxen: AATFT

class github::environment::webscale {

include mongodb include nodejs include redis

}

Page 42: Boxen: AATFT

class github::environment::hipsterstack {

include funding::series_a

# FIXME: include business_model

}

Page 43: Boxen: AATFT

class github::environment::design {

include photoshop

# ???

}

Page 44: Boxen: AATFT

class github::environment::legal {

include microsoft_word

# ???

}

Page 45: Boxen: AATFT

class github::environment::hr {

include hugs

# ???

}

Page 46: Boxen: AATFT

WE KNOW A THING OR TWO ABOUT DEVELOPMENT ENVIRONMENTS

Page 47: Boxen: AATFT

BUT WE ARE COMPLETELY CLUELESS WHEN IT COMES TO EMPOWERING PEOPLE

OUTSIDE DEVELOPER-SPACE

Page 48: Boxen: AATFT

WE NEED TO UNDERSTAND DIFFERENT KINDS OF ENVIRONMENTS AND THEN MAKE THEM

BETTER WITH AUTOMATION

Page 49: Boxen: AATFT

TELLING THEM THEY HAVE TO USE OUR TOOLING TO AUTOMATE AWAY

PAIN IS A COP-OUT

Page 50: Boxen: AATFT

# WORK ON PROJECTS

Page 51: Boxen: AATFT

+ github/github

Page 52: Boxen: AATFT

class projects::github {

github::project { 'github': mysql => true, redis => true, ruby => '2.1', }

}

Page 53: Boxen: AATFT

$ boxen github

Page 54: Boxen: AATFT

<LOTS OF TECHNOLOGY HAPPENING HERE>

Page 55: Boxen: AATFT

AND NOW JILL DEVELOPER CAN WORK ON GITHUB

Page 56: Boxen: AATFT

BUT WHAT ABOUT THOSE FOLKS IN FINANCE?

Page 57: Boxen: AATFT

class projects::quarterly_taxes {

# ???

}

Page 58: Boxen: AATFT

class projects::financial_audit {

# ???

}

Page 59: Boxen: AATFT

# NEED DIFFERENT THINGS

Page 60: Boxen: AATFT

# DESERVE TO BE HAPPY

Page 61: Boxen: AATFT

# REALLY LIKE ,

Page 62: Boxen: AATFT

OS X 10.9 "MAVERICKS" SUPPORT

Page 63: Boxen: AATFT

NO MANUAL XCODE INSTALL REQUIRED

Page 64: Boxen: AATFT
Page 65: Boxen: AATFT

HIERA EVERYWHERE

Page 66: Boxen: AATFT

UPDATING MODULES TO GET A NEW VERSION OF X SUCKS

Page 67: Boxen: AATFT

TRYING TO RUN A SERVICE ON A DIFFERENT PORT SUCKS

Page 68: Boxen: AATFT

HIERA FIXES THESE THINGS WITHOUT UGLY HACKS

Page 69: Boxen: AATFT

HIERA FIXES THESE THINGS WITHOUT FORKING MODULES

Page 70: Boxen: AATFT

YAML CHANGES ARE MORE APPROACHABLE THAN PUPPET

Page 71: Boxen: AATFT

HINTS OF LINUX SUPPORT

Page 72: Boxen: AATFT

REALLY SUBTLE HINTS

Page 73: Boxen: AATFT

# grep boxen github/puppet/Puppetfile

mod "nodejs", "3.2.5", :github_tarball => "boxen/puppet-nodejs"mod "phantomjs", "2.0.1", :github_tarball => "boxen/puppet-phantomjs"mod "repository", "2.2.0", :github_tarball => "boxen/puppet-repository"

Page 74: Boxen: AATFT

MORE CORE MODULES WILL GET SUPPORT OVER TIME

Page 75: Boxen: AATFT

PUPPETMASTER SUPPORT

Page 76: Boxen: AATFT

I ACTUALLY WASN'T INVOLVED IN THIS

Page 77: Boxen: AATFT

SOMEONE TOLD ME THEY HAD DONE IT YESTERDAY

Page 78: Boxen: AATFT

GOOD ON YA

Page 79: Boxen: AATFT

I NEED TO BUY YOU A BEER

Page 80: Boxen: AATFT

MENUBAR APP

Page 81: Boxen: AATFT

LAST YEAR I HAD A TERRIBLE PROOF-OF-CONCEPT

Page 82: Boxen: AATFT

THIS YEAR I HAVE THE SAME PROOF-OF-CONCEPT

Page 83: Boxen: AATFT

BUT GOOD NEWS

Page 84: Boxen: AATFT

MY ROOMMATE IS A GITHUB FOR MAC DEVELOPER

Page 85: Boxen: AATFT

THIS THING IS FINALLY GOING TO HAPPEN

Page 86: Boxen: AATFT

HENSON

Page 87: Boxen: AATFT

LIBRARIAN-PUPPET "WORKS"

Page 88: Boxen: AATFT

LIBRARIAN-PUPPET "WORKS"-ISH

Page 89: Boxen: AATFT

YOUR SOFTWARE IS BAD

AND YOU SHOULD FEEL BAD

Page 90: Boxen: AATFT

HENSON IS NOT A DEAD PROJECT

Page 91: Boxen: AATFT

SOME OTHER PRIORITIES NEEDED OUR ATTENTION FIRST

Page 92: Boxen: AATFT

CLOSING THOUGHTS

Page 93: Boxen: AATFT

BOXEN IS NOT PERFECT

Page 94: Boxen: AATFT

IT'S SOFTWARE

Page 95: Boxen: AATFT

IT HAS MADE OUR LIVES A LOT EASIER AT GITHUB

Page 96: Boxen: AATFT

IT MIGHT MAKE YOUR LIFE EASIER

Page 97: Boxen: AATFT

DON'T USE IT BECAUSE THERE'S A BIG NAME ATTACHED

Page 98: Boxen: AATFT

F&%$ THIS GUY

Page 99: Boxen: AATFT

DO IT FOR YOU

Page 100: Boxen: AATFT

HEeeeLLOBEAUTIFUL

Page 101: Boxen: AATFT

THANKS