Boxen: AATFT

2,074 views

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,074
On SlideShare
0
From Embeds
0
Number of Embeds
1,314
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Boxen: AATFT

  1. 1. BOXEN
  2. 2. WFARR
  3. 3. JBARNETTE
  4. 4. ! "
  5. 5. INVENTING ON PRINCIPLE
  6. 6. WHAT IN THE HELL IS MY PRINCIPLE?
  7. 7. SOFTWARE IS TERRIBLE
  8. 8. DEVELOPING SOFTWARE IS HARD
  9. 9. INTERACTING WITH SOFTWARE IS PAINFUL
  10. 10. PAINFUL SOFTWARE CREATES FRICTION
  11. 11. FRICTION GETS BETWEEN PEOPLE AND PRODUCT
  12. 12. SOFTWARE SHOULD FEEL EASY TO EVERYONE
  13. 13. SOFTWARE SHOULD GET OUT OF THE WAY
  14. 14. “Help people design, build, and ship software better, together.” "
  15. 15. “Help people more easily design, build, and ship things, with software.”
  16. 16. WE'RE GOING TO NEED MORE PORCELAIN TO ENABLE PEOPLE TO SHIP
  17. 17. SHIPPING ISN'T JUST FOR SOFTWARE, YO
  18. 18. EVERYONE IN YOUR ORGANIZATION SHIPS; HOW DOES YOUR CULTURE ENCOURAGE THAT?
  19. 19. ENABLE #
  20. 20. HOW?
  21. 21. WE NEED A MISSION STATEMENT
  22. 22. TATFT
  23. 23. T E S T A L L T H E F & % $ I N G T I M E
  24. 24. “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
  25. 25. $
  26. 26. “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.”
  27. 27. “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.”
  28. 28. AUTOMATE PROBLEM REPRODUCE SOLUTION
  29. 29. AUTOMATING SOLUTIONS TO PROBLEMS LEADS TO REPRODUCIBLE SOLUTIONS
  30. 30. AUTOMATING SOLUTIONS TO PROBLEMS LEADS TO REPRODUCIBLE SOLUTIONS WHICH ARE EASIER THAN SOLVING PROBLEMS UNIQUELY EACH TIME
  31. 31. AUTOMATING SOLUTIONS TO PROBLEMS LEADS TO REPRODUCIBLE SOLUTIONS WHICH ARE EASIER THAN SOLVING PROBLEMS UNIQUELY EACH TIME FOR EVERYONE
  32. 32. A U T O M A T E A L L T H E F & % $ I N G T H I N G S
  33. 33. # WORK IN ENVIRONMENTS
  34. 34. % &
  35. 35. ' (
  36. 36. )
  37. 37. *
  38. 38. class github::environment { include clojure include go include mysql include nodejs include postgresql include ruby $gems = [ 'bundler', 'rails' ] ruby::gem { $gems: } }
  39. 39. class github::environment::rails { include mysql include nodejs # asset pipeline :( include ruby $gems = [ 'bundler', 'rails' ] ruby::gem { $gems: } }
  40. 40. class github::environment::webscale { include mongodb include nodejs include redis }
  41. 41. class github::environment::hipsterstack { include funding::series_a # FIXME: include business_model }
  42. 42. class github::environment::design { include photoshop # ??? }
  43. 43. class github::environment::legal { include microsoft_word # ??? }
  44. 44. class github::environment::hr { include hugs # ??? }
  45. 45. WE KNOW A THING OR TWO ABOUT DEVELOPMENT ENVIRONMENTS
  46. 46. BUT WE ARE COMPLETELY CLUELESS WHEN IT COMES TO EMPOWERING PEOPLE OUTSIDE DEVELOPER-SPACE
  47. 47. WE NEED TO UNDERSTAND DIFFERENT KINDS OF ENVIRONMENTS AND THEN MAKE THEM BETTER WITH AUTOMATION
  48. 48. TELLING THEM THEY HAVE TO USE OUR TOOLING TO AUTOMATE AWAY PAIN IS A COP-OUT
  49. 49. # WORK ON PROJECTS
  50. 50. + github/github
  51. 51. class projects::github { github::project { 'github': mysql => true, redis => true, ruby => '2.1', } }
  52. 52. $ boxen github
  53. 53. <LOTS OF TECHNOLOGY HAPPENING HERE>
  54. 54. AND NOW JILL DEVELOPER CAN WORK ON GITHUB
  55. 55. BUT WHAT ABOUT THOSE FOLKS IN FINANCE?
  56. 56. class projects::quarterly_taxes { # ??? }
  57. 57. class projects::financial_audit { # ??? }
  58. 58. # NEED DIFFERENT THINGS
  59. 59. # DESERVE TO BE HAPPY
  60. 60. # REALLY LIKE ,
  61. 61. OS X 10.9 "MAVERICKS" SUPPORT
  62. 62. NO MANUAL XCODE INSTALL REQUIRED
  63. 63. HIERA EVERYWHERE
  64. 64. UPDATING MODULES TO GET A NEW VERSION OF X SUCKS
  65. 65. TRYING TO RUN A SERVICE ON A DIFFERENT PORT SUCKS
  66. 66. HIERA FIXES THESE THINGS WITHOUT UGLY HACKS
  67. 67. HIERA FIXES THESE THINGS WITHOUT FORKING MODULES
  68. 68. YAML CHANGES ARE MORE APPROACHABLE THAN PUPPET
  69. 69. HINTS OF LINUX SUPPORT
  70. 70. REALLY SUBTLE HINTS
  71. 71. # 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"
  72. 72. MORE CORE MODULES WILL GET SUPPORT OVER TIME
  73. 73. PUPPETMASTER SUPPORT
  74. 74. I ACTUALLY WASN'T INVOLVED IN THIS
  75. 75. SOMEONE TOLD ME THEY HAD DONE IT YESTERDAY
  76. 76. GOOD ON YA
  77. 77. I NEED TO BUY YOU A BEER
  78. 78. MENUBAR APP
  79. 79. LAST YEAR I HAD A TERRIBLE PROOF-OF-CONCEPT
  80. 80. THIS YEAR I HAVE THE SAME PROOF-OF-CONCEPT
  81. 81. BUT GOOD NEWS
  82. 82. MY ROOMMATE IS A GITHUB FOR MAC DEVELOPER
  83. 83. THIS THING IS FINALLY GOING TO HAPPEN
  84. 84. HENSON
  85. 85. LIBRARIAN-PUPPET "WORKS"
  86. 86. LIBRARIAN-PUPPET "WORKS"-ISH
  87. 87. YOUR SOFTWARE IS BAD AND YOU SHOULD FEEL BAD
  88. 88. HENSON IS NOT A DEAD PROJECT
  89. 89. SOME OTHER PRIORITIES NEEDED OUR ATTENTION FIRST
  90. 90. CLOSING THOUGHTS
  91. 91. BOXEN IS NOT PERFECT
  92. 92. IT'S SOFTWARE
  93. 93. IT HAS MADE OUR LIVES A LOT EASIER AT GITHUB
  94. 94. IT MIGHT MAKE YOUR LIFE EASIER
  95. 95. DON'T USE IT BECAUSE THERE'S A BIG NAME ATTACHED
  96. 96. F&%$ THIS GUY
  97. 97. DO IT FOR YOU
  98. 98. HEeeeLLO BEAUTIFUL
  99. 99. THANKS

×