Boxen: How to Manage an Army of Laptops
-
Upload
puppet-labs -
Category
Technology
-
view
4.262 -
download
4
description
Transcript of Boxen: How to Manage an Army of Laptops
![Page 1: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/1.jpg)
boxen
![Page 2: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/2.jpg)
wfarr
![Page 3: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/3.jpg)
ops andfriction
![Page 4: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/4.jpg)
boxen
![Page 5: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/5.jpg)
why should i care about this?
![Page 6: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/6.jpg)
STORY TIME
![Page 7: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/7.jpg)
once upon a shitty time
![Page 8: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/8.jpg)
Time to get set up.I want to hack on stuff!
once upon a shitty time
![Page 9: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/9.jpg)
Okay, install XCode...
once upon a shitty time
![Page 10: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/10.jpg)
and rbenv...
once upon a shitty time
![Page 11: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/11.jpg)
and a bunch of rubies...
once upon a shitty time
![Page 12: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/12.jpg)
and pow...
once upon a shitty time
![Page 13: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/13.jpg)
and nodejs...
once upon a shitty time
![Page 14: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/14.jpg)
and bower...
once upon a shitty time
![Page 15: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/15.jpg)
and bundler...
once upon a shitty time
![Page 16: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/16.jpg)
and mysql...
once upon a shitty time
![Page 17: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/17.jpg)
and postgresql...
once upon a shitty time
![Page 18: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/18.jpg)
probably okay withoutmongodb...
once upon a shitty time
![Page 19: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/19.jpg)
definitely needelasticsearch though...
once upon a shitty time
![Page 20: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/20.jpg)
huh... well I can'tconnect to the db!
once upon a shitty time
![Page 21: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/21.jpg)
and now ruby issegfaulting?!
once upon a shitty time
![Page 22: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/22.jpg)
wat
once upon a shitty time
![Page 23: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/23.jpg)
![Page 24: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/24.jpg)
![Page 25: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/25.jpg)
![Page 26: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/26.jpg)
I just want toship cool stuff...
![Page 27: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/27.jpg)
USS COOL STU
FF
![Page 28: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/28.jpg)
I thought I wrote an install guide
that people could just walk through.
I wonder what broke...
Ops Person
![Page 29: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/29.jpg)
![Page 30: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/30.jpg)
A SOLUTION IS BORN
![Page 31: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/31.jpg)
![Page 32: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/32.jpg)
![Page 33: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/33.jpg)
![Page 34: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/34.jpg)
once upon an awesome time
![Page 35: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/35.jpg)
Time to get set up.I want to hack on stuff!
once upon an awesome time
![Page 36: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/36.jpg)
Okay, I go tohttps://boxen.company.com
once upon an awesome time
![Page 37: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/37.jpg)
It says I should installXcode real quick. Sure.
once upon an awesome time
![Page 38: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/38.jpg)
Now I copy and paste thisone line into the Terminal.
once upon an awesome time
![Page 39: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/39.jpg)
Oh, hey! It's doing stuff.I guess I'll grab a coffee.
once upon an awesome time
![Page 40: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/40.jpg)
I swear this is a different coffee cup
from before
![Page 41: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/41.jpg)
Rad! It says it's done andto open a new Terminal.
once upon an awesome time
![Page 42: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/42.jpg)
Holy automated awesome,Batman! I'm ready to work!
once upon an awesome time
![Page 43: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/43.jpg)
so like what is boxen actually?
![Page 44: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/44.jpg)
![Page 45: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/45.jpg)
stdlib
![Page 46: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/46.jpg)
![Page 47: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/47.jpg)
wtf is a devops
![Page 48: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/48.jpg)
![Page 49: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/49.jpg)
![Page 50: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/50.jpg)
![Page 51: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/51.jpg)
homebrew, git, gcc, .dev dns, nginx, rbenv, ruby-build, a bunch of ruby versions, nodenv, a bunch
of nodejs versions, heroku toolchain, hub, mysql, postgresql,
elasticsearch, riak, java, and a whole lot more available
![Page 52: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/52.jpg)
what do i do with boxen?
![Page 53: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/53.jpg)
MANAGE PROJECTS
![Page 54: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/54.jpg)
![Page 55: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/55.jpg)
Hmm. Let's hack ongithub/github!
![Page 56: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/56.jpg)
The README says to run`boxen github`
![Page 57: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/57.jpg)
Okay, it's doing stuff...I think?
The Puppet logging format is hella
confusing to most people, seriously.
![Page 58: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/58.jpg)
What just happened?
![Page 59: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/59.jpg)
1. Clone github/github2. Make sure dpkg is installed3. Make sure icu4c is installed4. Make sure libgithub is installed5. Make sure md5sha1sum is installed6. Make sure solr is installed7. Make sure mysql is installed and running8. Make sure elasticsearch is installed and running9. Make sure memcached is installed and running10. Make sure the dev and tests DBs are created11. Make sure python is installed12. Make sure redis is installed and running13. Make sure Ruby 1.9.3 is installed14. Make sure ~/github/github is set to use 1.9.315. Notify the user of any new environment variables Boxen provides
and let them know to restart their shell16. Make sure github/pages-jekyll is cloned17. Make sure github/pages-jekyll is set to use 1.9.318. Make sure environment config for github/pages-jekyll is setup
![Page 60: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/60.jpg)
1. Clone github/github2. Make sure dpkg is installed3. Make sure icu4c is installed4. Make sure libgithub is installed5. Make sure md5sha1sum is installed6. Make sure solr is installed7. Make sure mysql is installed and running8. Make sure elasticsearch is installed and running9. Make sure memcached is installed and running10. Make sure the dev and tests DBs are created11. Make sure python is installed12. Make sure redis is installed and running13. Make sure Ruby 1.9.3 is installed14. Make sure ~/github/github is set to use 1.9.315. Notify the user of any new environment variables Boxen provides
and let them know to restart their shell16. Make sure github/pages-jekyll is cloned17. Make sure github/pages-jekyll is set to use 1.9.318. Make sure environment config for github/pages-jekyll is setup
i had to decrease the
font size by 24pt just to
fit it all
on one slide
and this is the annotated version
![Page 61: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/61.jpg)
okay, well, what about the code to make this happen?
![Page 62: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/62.jpg)
class projects::github { include dpkg include icu4c include libgithub
include projects::pages-jekyll
boxen::project { 'github': elasticsearch => true, memcached => true, mysql => [ 'github_enterprise', 'github_development', 'github_test' ], nginx => 'projects/github/nginx.conf.erb', python => true, redis => true, ruby => '1.9.3', source => 'github/github' }
package { 'md5sha1sum': }}
![Page 63: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/63.jpg)
what about your "average" app?
![Page 64: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/64.jpg)
class projects::battle_station { boxen::project { 'battle_station': dotenv => true, mysql => true, nginx => true, redis => true, ruby => '2.0.0', source => 'github/battle_station' }}
![Page 65: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/65.jpg)
MANAGE EVERYTHING ELSE TOO
![Page 66: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/66.jpg)
![Page 67: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/67.jpg)
That's cool and all, butwhat about me?
![Page 68: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/68.jpg)
I need to live on the bleedingedge version of `sl`.
![Page 69: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/69.jpg)
And my screensaver needs100% more lasers.
![Page 70: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/70.jpg)
Hmm. Some documentation!"Personal manifests?"
![Page 71: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/71.jpg)
Oh, this looks kind of neat.Maybe I'll do it.
![Page 72: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/72.jpg)
class people::wfarr { include emacs include zsh
include projects::battle_station}
![Page 73: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/73.jpg)
class people::wfarr { git::config::global { 'alias.st': value => 'status' ; 'alias.ci': value => 'commit' ; 'user.name': value => 'wfarr' ; }}
![Page 74: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/74.jpg)
class people::wfarr { repository { "/Users/${::boxen_user}/.emacs.d": source => 'wfarr/.emacs.d' }}
![Page 75: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/75.jpg)
class people::wfarr { boxen::osx_defaults { 'Fix bluetooth audio streaming because OSX is dumb': ensure => present, domain => 'com.apple.BluetoothAudioAgent', key => shellquote('Apple Bitpool Min (editable)'), value => 50, user => $::boxen_user ; }}
![Page 76: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/76.jpg)
CLI
![Page 77: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/77.jpg)
$ boxen
# run it
![Page 78: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/78.jpg)
$ boxen --projects
# list projects Boxen knows about
![Page 79: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/79.jpg)
$ boxen <project>
# run it but include <project> in the catalog automatically
![Page 80: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/80.jpg)
$ boxen --debug
# run it but include <project> in the catalog automatically
![Page 81: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/81.jpg)
UPDATE EASILY
![Page 82: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/82.jpg)
$ boxen
Boxen is up-to-date.
![Page 83: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/83.jpg)
$ boxen
Boxen has a dirty tree, won't auto-update!
![Page 84: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/84.jpg)
$ boxen
Boxen has unpushed commits on master, won't auto-update!
![Page 85: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/85.jpg)
$ boxen
Boxen on a non-master branch 'new-project', won't auto-update!
![Page 86: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/86.jpg)
FAIL GRACEFULLY
![Page 87: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/87.jpg)
$ boxenError: ZOMG at /opt/boxen/repo/modules/people/manifests/wfarr.pp:8 on node scruffy.gateway.github.lan
Sorry! Creating an issue on github/totally-a-madeup-repo-name.
![Page 88: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/88.jpg)
CODEZ
![Page 89: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/89.jpg)
CODEZ
who failed
![Page 90: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/90.jpg)
CODEZ
how long ago
![Page 91: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/91.jpg)
CODEZ machine
![Page 92: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/92.jpg)
CODEZ
os version
![Page 93: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/93.jpg)
CODEZ shell
![Page 94: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/94.jpg)
CODEZref
![Page 95: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/95.jpg)
CODEZcompare view
![Page 96: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/96.jpg)
CODEZgit status
![Page 97: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/97.jpg)
CODEZ
full command
![Page 98: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/98.jpg)
CODEZ
full log
![Page 99: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/99.jpg)
i fix the error and run `boxen`
![Page 100: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/100.jpg)
CODEZ
![Page 101: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/101.jpg)
via issues api
![Page 102: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/102.jpg)
# config/boxen.rb
ENV['BOXEN_REPO_NAME'] = \ 'github/boxen'
ENV['BOXEN_ISSUES_ENABLED'] = 'yes'
![Page 103: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/103.jpg)
This is pretty freaking rad!
![Page 104: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/104.jpg)
It's just code.Maybe I can write this too...
![Page 105: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/105.jpg)
66 GitHubbers (~42%) have contributed
personal manifests or project manifests since
October
![Page 106: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/106.jpg)
4 Supportocats
5 Designers
44 Devs
7 Ops
3 Trainers
1 Education Liaison
1 Enterprise Salesperson
1 Security Bloke
![Page 107: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/107.jpg)
![Page 108: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/108.jpg)
![Page 109: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/109.jpg)
really using it
![Page 110: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/110.jpg)
EMBRACE AND EXTEND
![Page 111: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/111.jpg)
create higher level abstractions
![Page 112: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/112.jpg)
class projects::battle_station { boxen::project { 'battle_station': dotenv => true, mysql => true, nginx => true, redis => true, ruby => '2.0.0', source => 'github/battle_station' }}
This is the same for 80% of cases
![Page 113: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/113.jpg)
let's optimize for our use-case
![Page 114: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/114.jpg)
define github::project( $source = "github/${title}" # a whole bunch of other params) {
boxen::project { $name: source => $source, # that bunch of other params }}
The sanest default, but easy to override
![Page 115: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/115.jpg)
maybe all of our ops team should get certain things by default
![Page 116: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/116.jpg)
class github::environment { include_github_team_environments()}
![Page 117: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/117.jpg)
class github::environment::ops { include github::environment::ops::vagrant
include projects::battle_station include projects::octostatus include projects::puppet}
![Page 118: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/118.jpg)
START SIMPLE
![Page 119: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/119.jpg)
write new modules inside your repo first and extract later
![Page 120: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/120.jpg)
~/github/boxen » ls -1 modules cmakectagsgithublibgithublibmicrohttpdnodejspeopleprojectsstrap
![Page 121: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/121.jpg)
~/github/boxen » ls -1 modules cmakectagsgithublibgithublibmicrohttpdnodejspeopleprojectsstrap
WIP v2.0.0 nodejs module
![Page 122: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/122.jpg)
start abstractions in Puppet
![Page 123: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/123.jpg)
refactor into Ruby later if performance demands it
![Page 124: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/124.jpg)
define nodejs::version( $ensure = present, $compile = false, $version = $title,) { require nodejs
case $ensure { present: { # exec to install }
absent: { # exec or file to rm } }}
![Page 125: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/125.jpg)
Time: Filebucket: 0.00 Vagrant plugin: 0.00 Nodejs: 4.37 Sudoers: 0.00 File line: 0.00 Ini setting: 0.01 Group: 0.10 Repository: 0.12 File: 0.66 Service: 1.54 Package: 112.76 Total: 130.29 Last run: 1365003143 Rbenv gem: 2.23 Exec: 3.36 Config retrieval: 7.27
![Page 126: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/126.jpg)
if it's consistently slowing down the run, then optimize
![Page 127: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/127.jpg)
define nodejs::version( $ensure = present, $compile = false, $version = $title,) { require nodejs
nodejs { $version: ensure => $ensure, compile => $compile, }}
This impl. happens to fork less
![Page 128: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/128.jpg)
DO WHATEVER WORKS
![Page 129: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/129.jpg)
practicality beats purity /perfect is the enemy of good enough
![Page 130: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/130.jpg)
but...
![Page 131: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/131.jpg)
WHY ISN'T THIS JUST A BUNCH OF SCRIPTS?
![Page 132: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/132.jpg)
idempotent behavioris kind of a big deal
![Page 133: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/133.jpg)
shell scripts get the job done if you live in a wonderful vacuum where constraints never change and the dependencies between resources
are forever static
![Page 134: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/134.jpg)
the real world really doesn't care one bit
![Page 135: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/135.jpg)
telling people"if it breaks, just reinstall"
is a copout
![Page 136: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/136.jpg)
if people expect to your software to behave a certain way, and you have the power to automate that
behavior and then don't,you're being a jerk to your users
user experience common sense 101
![Page 137: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/137.jpg)
WHY ISN'T THIS IN CHEF?
![Page 138: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/138.jpg)
so glad people don't ask this one at puppet conferences!
![Page 139: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/139.jpg)
transcend tools;write beautiful porcelain
![Page 140: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/140.jpg)
WHAT ABOUT SECURITY UPDATES?
![Page 141: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/141.jpg)
THE DARK AGES OF SECURITY INTERACTION
![Page 142: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/142.jpg)
THE DARK AGES OF SECURITY INTERACTION
Java browser plugins are literally going to beat you
up, kick your puppy, and eat all of your Doritos! zomg!
![Page 143: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/143.jpg)
lol are you kidding me?I have important codez to write.
I'll do it later.Now be gone, demon!
HINT: They're never going to do it.
![Page 144: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/144.jpg)
![Page 145: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/145.jpg)
![Page 146: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/146.jpg)
![Page 147: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/147.jpg)
THE awesome AGES OF SECURITY INTERACTION
![Page 148: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/148.jpg)
THE awesome AGES OF SECURITY INTERACTION
Hey folks! I just had to push an update to Boxen to disable
Java plugins in browsers. Sorry about that! Here's a PR with more context: <link>.
![Page 149: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/149.jpg)
THE awesome AGES OF SECURITY INTERACTION
Oh snap - audit season!Let me just review our
code to see if we're in the clear and secure.
![Page 150: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/150.jpg)
what if i have problems?
![Page 151: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/151.jpg)
pull requests
![Page 152: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/152.jpg)
issues
![Page 153: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/153.jpg)
irc.freenode.net
![Page 154: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/154.jpg)
be chuck yeager
![Page 155: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/155.jpg)
Savannah
Atlanta
![Page 156: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/156.jpg)
Savannah
Atlanta
![Page 157: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/157.jpg)
Savannah
Atlanta
![Page 158: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/158.jpg)
Savannah
Atlanta
![Page 159: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/159.jpg)
Savannah
Atlanta
![Page 160: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/160.jpg)
"So, we're uh in the air. We made it. That's uh good news,
obviously."
![Page 161: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/161.jpg)
"Flight attendants, if you could just hang on to uh... whatever..."
![Page 162: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/162.jpg)
![Page 163: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/163.jpg)
The point at which I realize I'm going to
die
The point at which I think the worst is
over
![Page 164: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/164.jpg)
detail text
![Page 165: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/165.jpg)
wfarr
speakerdeck.com/wfarr/boxen-puppetcamp-sf-2013
![Page 166: Boxen: How to Manage an Army of Laptops](https://reader038.fdocuments.us/reader038/viewer/2022103018/559bff9b1a28ab3d468b45d5/html5/thumbnails/166.jpg)
thanks