Your SlideShare is downloading. ×
  • Like
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Boxen: How to Manage an Army of Laptops and Live to Talk About It

  • 2,164 views
Published

Will Farrington of Github talks about Boxen at Puppet Camp Atlanta, 2013. Original slides can be found: https://speakerdeck.com/wfarr/boxen-puppetcamp-atl Learn about upcoming Puppet Camps at …

Will Farrington of Github talks about Boxen at Puppet Camp Atlanta, 2013. Original slides can be found: https://speakerdeck.com/wfarr/boxen-puppetcamp-atl Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,164
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
15
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. boxen
  • 2. wfarr
  • 3. ops
  • 4. friction
  • 5. what is boxen?
  • 6. STORY TIME
  • 7. @jbarnette + @wfarr
  • 8. developing software isharder than it used to be
  • 9. our toolchains have gotten more robust
  • 10. our toolchains have gotten more complicated
  • 11. want to work on $anything?
  • 12. better install a ruby versionmanager, like 8 versions of ruby, ahandful of gems to try and make the behavior remotely sane, and then pray it doesnt break
  • 13. s/ruby/literally everything but bash/g
  • 14. lets make it better
  • 15. THINGS BOXEN IS
  • 16. a framework
  • 17. stdli b
  • 18. wat
  • 19. THINGS BOXEN IS NOT
  • 20. n o pe
  • 21. n o pe
  • 22. newp
  • 23. sadly, no
  • 24. why should i use boxen?
  • 25. FRICTION SUCKS
  • 26. friction is anything thatgets in the way of doing stuff
  • 27. friction is the greatest source offrustration in every organization
  • 28. configuring developmentenvironments is a week-long marathon in friction
  • 29. "all right, new work laptop! i wonder where that blog post i used last time to set up ruby,python, go, and git is. hopefully it still works and by the end of the week i can start shipping."
  • 30. e "all right, new work laptop! i m wonder where that blog post i a used last time to set up ruby,lpython, go, and git is. hopefully it still works and by the end of the week i can start shipping."
  • 31. getting any part of the stackrunning locally should never block someone from shipping
  • 32. STUFF OOL SS CU
  • 33. INCONSISTENCY SUCKS
  • 34. when was the last time you knew every human was running the same services in dev and prod?
  • 35. "hey so my postgresql isnt working. is yours working? it is?huh. i have no idea whats wrong."
  • 36. m e "hey so my postgresql isnt al working. is yours working? it is?huh. i have no idea whats wrong."
  • 37. manual audits are tedious
  • 38. manual audits are error-prone
  • 39. ask software instead of humans
  • 40. lock every core component to the same version as in prod
  • 41. UPDATING SUCKS
  • 42. "jeeeeeez the mac app store hasbeen bugging me for like forever! i have a billion updates... meh"
  • 43. m e "jeeeeeez the mac app store has albeen bugging me for like forever! i have a billion updates... meh"
  • 44. maybe you use CM in dev already, but when was the last time you updated and ran it?
  • 45. SECURITY SUCKS
  • 46. security is a war of attrition
  • 47. bug people enough about security and they stop caring about it
  • 48. "ugh, another security thing? whatever, i have way more important things to do"
  • 49. m e"ugh, another security thing? al whatever, i have way more important things to do"
  • 50. let code handle security,then inform people so they know why the codes making changes
  • 51. no surprises
  • 52. BOXEN ENABLES YOU TO MAKE THESE THINGS BETTER FOR YOUR ORG
  • 53. what do i get?
  • 54. RUNNER
  • 55. boxen is run via some ruby
  • 56. it collects info for facter
  • 57. it checks for prerequisites and conflicts before each run
  • 58. it detects certain changes post-run
  • 59. it has hooks too
  • 60. PUPPET
  • 61. "the core"
  • 62. homebrew, git, hub, gcc, rbenv, ruby 1.8.7, ruby 1.9.3, ruby 2.0.0, nvm, nodejs 0.4.x, nodejs 0.6.x,nodejs 0.8.x, nginx, .dev dns, FDE, and puppetlabs-stdlib
  • 63. rbenv_gem, repository, osx_chsh, osx_login_item, boxen::project, ruby::local, mysql::database, etc.
  • 64. package: homebrew, compressed_app
  • 65. repository: git
  • 66. service: ghlaunchd
  • 67. "the library"
  • 68. 130+ modules on GitHub
  • 69. GitHub uses ~81 of those
  • 70. travis-ci
  • 71. CARDBOARD
  • 72. gem that simplifies creating newpuppet modules, optimized for the boxen-recommended stack
  • 73. librarian-puppet, rspec-puppet, puppet-lint, etc.
  • 74. PUPPET-TEMPLATE
  • 75. example module using cardboard
  • 76. OUR-BOXEN
  • 77. template boxen project
  • 78. BOXEN-WEB
  • 79. small rails app to allow distributing your boxen easily, with auth
  • 80. how do i get it?
  • 81. Automate Everything
  • 82. boxen/boxen-web
  • 83. how do i use it?
  • 84. CLI
  • 85. $ boxen# run it
  • 86. $ boxen --projects# list projects Boxen knows about
  • 87. $ boxen <project># run it but include <project> in thecatalog automatically
  • 88. PROJECT MANIFESTS
  • 89. i want to hack on my project
  • 90. # modules/projects/manifests/team.ppclass projects::team { boxen::project { team: dotenv => true, mysql => true, nginx => true, ruby => 1.9.3, source => github/team, }}
  • 91. $ boxen teamwarning: Setting up team. This canbe made permanent by having includeprojects::team in your personalmanifest.
  • 92. cloned repo nginx vhost ruby versionmysql databases .env file
  • 93. $ cd ~/src/team$ script/server$ open http://team.dev/
  • 94. PERSONAL MANIFESTS
  • 95. i want to install $x but only for me
  • 96. # modules/people/manifests/wfarr.ppclass people::wfarr { include minecraft}
  • 97. # modules/people/manifests/wfarr.ppclass people::wfarr { include zsh}
  • 98. # modules/people/manifests/wfarr.ppclass people::wfarr { case $::hostname { bender: { include projects::all } scruffy: { include projects::team } default: {} }}
  • 99. # modules/people/manifests/wfarr.ppclass people::wfarr {  git::config::global {    alias.st: value => status;    alias.ci: value => commit;    alias.di: value => diff;    alias.lp: value => log -p;    color.ui: value => true;    user.name: value => Will Farrington;    user.email: value => wfarr@github.com;  }}
  • 100. # modules/people/manifests/wfarr.ppclass people::wfarr { include osx::example_things}
  • 101. ISSUES
  • 102. $ boxenError: ZOMG at /opt/boxen/repo/modules/people/manifests/wfarr.pp:8on node scruffy.gateway.github.lanSorry! Creating an issue on github/totally-a-madeup-repo-name.
  • 103. CODEZ
  • 104. who failedCODEZ
  • 105. how long agoCODEZ
  • 106. CODEZ machine
  • 107. os versionCODEZ
  • 108. CODEZ shell
  • 109. refCODEZ
  • 110. compare viewCODEZ
  • 111. git statusCODEZ
  • 112. CODEZ full command
  • 113. CODEZ full log
  • 114. i fix the error and run `boxen`
  • 115. CODEZ
  • 116. via issues api
  • 117. # config/boxen.rbENV[BOXEN_REPO_NAME] = github/boxenENV[BOXEN_ISSUES_ENABLED] = yes
  • 118. UPDATES
  • 119. $ boxenBoxen is up-to-date.
  • 120. $ boxenBoxen has a dirty tree, wont auto-update!
  • 121. $ boxenBoxen has unpushed commits onmaster, wont auto-update!
  • 122. $ boxenBoxen on a non-master branch new-project, wont auto-update!
  • 123. im sold.
  • 124. what if i have problems?
  • 125. file issues
  • 126. irc.freenode.net
  • 127. be chuck yeager
  • 128. "So, were uh in the air. We made it. Thats uh good news, obviously."
  • 129. "Flight attendants, if you couldjust hang on to uh... whatever..."
  • 130. detail text
  • 131.  wfarrcome work with me on things like boxen
  • 132. CODEZ
  • 133. thanks
  • 134. speakerdeck.com/wfarr/ boxen-puppetcamp-atl