Boxen: AATFT

Post on 29-Jun-2015

1.702 views 0 download

Tags:

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

BOXEN

WFARR

JBARNETTE

! "

INVENTING ON PRINCIPLE

WHAT IN THE HELL IS MY PRINCIPLE?

SOFTWARE IS TERRIBLE

DEVELOPING SOFTWARE IS HARD

INTERACTING WITH SOFTWARE IS PAINFUL

PAINFUL SOFTWARE CREATES FRICTION

FRICTION GETS BETWEEN PEOPLE AND PRODUCT

SOFTWARE SHOULD FEEL EASY TO EVERYONE

SOFTWARE SHOULD GET OUT OF THE WAY

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

"

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

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

SHIPPING ISN'T JUST FOR SOFTWARE, YO

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

ENABLE #

HOW?

WE NEED A MISSION STATEMENT

TATFT

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

“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

$

“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.”

“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.”

AUTOMATE PROBLEM REPRODUCE SOLUTION

AUTOMATING SOLUTIONS TO PROBLEMS LEADS TO REPRODUCIBLE SOLUTIONS

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

SOLVING PROBLEMS UNIQUELY EACH TIME

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

SOLVING PROBLEMS UNIQUELY EACH TIME FOR EVERYONE

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

# WORK IN ENVIRONMENTS

% &

' (

)

*

class github::environment {

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

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

ruby::gem { $gems: }

}

class github::environment::rails {

include mysql include nodejs # asset pipeline :( include ruby

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

ruby::gem { $gems: }

}

class github::environment::webscale {

include mongodb include nodejs include redis

}

class github::environment::hipsterstack {

include funding::series_a

# FIXME: include business_model

}

class github::environment::design {

include photoshop

# ???

}

class github::environment::legal {

include microsoft_word

# ???

}

class github::environment::hr {

include hugs

# ???

}

WE KNOW A THING OR TWO ABOUT DEVELOPMENT ENVIRONMENTS

BUT WE ARE COMPLETELY CLUELESS WHEN IT COMES TO EMPOWERING PEOPLE

OUTSIDE DEVELOPER-SPACE

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

BETTER WITH AUTOMATION

TELLING THEM THEY HAVE TO USE OUR TOOLING TO AUTOMATE AWAY

PAIN IS A COP-OUT

# WORK ON PROJECTS

+ github/github

class projects::github {

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

}

$ boxen github

<LOTS OF TECHNOLOGY HAPPENING HERE>

AND NOW JILL DEVELOPER CAN WORK ON GITHUB

BUT WHAT ABOUT THOSE FOLKS IN FINANCE?

class projects::quarterly_taxes {

# ???

}

class projects::financial_audit {

# ???

}

# NEED DIFFERENT THINGS

# DESERVE TO BE HAPPY

# REALLY LIKE ,

OS X 10.9 "MAVERICKS" SUPPORT

NO MANUAL XCODE INSTALL REQUIRED

HIERA EVERYWHERE

UPDATING MODULES TO GET A NEW VERSION OF X SUCKS

TRYING TO RUN A SERVICE ON A DIFFERENT PORT SUCKS

HIERA FIXES THESE THINGS WITHOUT UGLY HACKS

HIERA FIXES THESE THINGS WITHOUT FORKING MODULES

YAML CHANGES ARE MORE APPROACHABLE THAN PUPPET

HINTS OF LINUX SUPPORT

REALLY SUBTLE HINTS

# 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"

MORE CORE MODULES WILL GET SUPPORT OVER TIME

PUPPETMASTER SUPPORT

I ACTUALLY WASN'T INVOLVED IN THIS

SOMEONE TOLD ME THEY HAD DONE IT YESTERDAY

GOOD ON YA

I NEED TO BUY YOU A BEER

MENUBAR APP

LAST YEAR I HAD A TERRIBLE PROOF-OF-CONCEPT

THIS YEAR I HAVE THE SAME PROOF-OF-CONCEPT

BUT GOOD NEWS

MY ROOMMATE IS A GITHUB FOR MAC DEVELOPER

THIS THING IS FINALLY GOING TO HAPPEN

HENSON

LIBRARIAN-PUPPET "WORKS"

LIBRARIAN-PUPPET "WORKS"-ISH

YOUR SOFTWARE IS BAD

AND YOU SHOULD FEEL BAD

HENSON IS NOT A DEAD PROJECT

SOME OTHER PRIORITIES NEEDED OUR ATTENTION FIRST

CLOSING THOUGHTS

BOXEN IS NOT PERFECT

IT'S SOFTWARE

IT HAS MADE OUR LIVES A LOT EASIER AT GITHUB

IT MIGHT MAKE YOUR LIFE EASIER

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

F&%$ THIS GUY

DO IT FOR YOU

HEeeeLLOBEAUTIFUL

THANKS