better install a ruby version
manager, like 8 versions of ruby, a
handful of gems to try and make
the behavior remotely sane, and
then pray it doesn't break
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
s/ruby/literally everything but
bash/g
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
let's make it better
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
THINGS BOXEN IS
Slide 22
Slide 22 text
a framework
Slide 23
Slide 23 text
stdlib
Slide 24
Slide 24 text
wat
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
THINGS BOXEN IS NOT
Slide 28
Slide 28 text
nope
Slide 29
Slide 29 text
nope
Slide 30
Slide 30 text
newp
Slide 31
Slide 31 text
sadly,
no
Slide 32
Slide 32 text
why should i use
boxen?
Slide 33
Slide 33 text
FRICTION SUCKS
Slide 34
Slide 34 text
friction
is anything that
gets in the way of doing stuff
Slide 35
Slide 35 text
friction
is the greatest source of
frustration in every organization
Slide 36
Slide 36 text
configuring development
environments is a week-long
marathon in friction
Slide 37
Slide 37 text
"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."
Slide 38
Slide 38 text
"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."
lame
Slide 39
Slide 39 text
No content
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
No content
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
getting any part of the stack
running locally should never block
someone from shipping
Slide 44
Slide 44 text
USS COOL STUFF
Slide 45
Slide 45 text
No content
Slide 46
Slide 46 text
INCONSISTENCY SUCKS
Slide 47
Slide 47 text
when was the last time you knew
every human was running the
same services in dev and prod?
Slide 48
Slide 48 text
No content
Slide 49
Slide 49 text
"hey so my postgresql isn't
working. is yours working? it is?
huh. i have no idea what's wrong."
Slide 50
Slide 50 text
"hey so my postgresql isn't
working. is yours working? it is?
huh. i have no idea what's wrong."
lame
Slide 51
Slide 51 text
manual audits are
tedious
Slide 52
Slide 52 text
manual audits are
error-prone
Slide 53
Slide 53 text
ask software instead of humans
Slide 54
Slide 54 text
lock every core component to the
same version as in prod
Slide 55
Slide 55 text
UPDATING SUCKS
Slide 56
Slide 56 text
"jeeeeeez the mac app store has
been bugging me for like forever! i
have a billion updates... meh"
Slide 57
Slide 57 text
"jeeeeeez the mac app store has
been bugging me for like forever! i
have a billion updates... meh"
lame
Slide 58
Slide 58 text
maybe you use CM in dev already,
but when was the last time
you updated and ran it?
Slide 59
Slide 59 text
SECURITY SUCKS
Slide 60
Slide 60 text
security is a war of attrition
Slide 61
Slide 61 text
bug people enough about security
and they stop caring about it
Slide 62
Slide 62 text
"ugh, another security thing?
whatever, i have way more
important things to do"
Slide 63
Slide 63 text
"ugh, another security thing?
whatever, i have way more
important things to do"
lame
Slide 64
Slide 64 text
let code handle security,
then inform people so they know
why the code's making changes
Slide 65
Slide 65 text
no surprises
Slide 66
Slide 66 text
BOXEN ENABLES YOU TO
MAKE THESE THINGS
BETTER FOR YOUR ORG
Slide 67
Slide 67 text
No content
Slide 68
Slide 68 text
what do i get?
Slide 69
Slide 69 text
RUNNER
Slide 70
Slide 70 text
boxen is run via some ruby
Slide 71
Slide 71 text
it collects info for facter
Slide 72
Slide 72 text
it checks for prerequisites and
conflicts before each run
$ boxen team
warning: Setting up 'team'. This can
be made permanent by having 'include
projects::team' in your personal
manifest.
Slide 108
Slide 108 text
cloned repo
nginx vhost
ruby version
mysql databases
.env file
Slide 109
Slide 109 text
$ cd ~/src/team
$ script/server
$ open http://team.dev/
Slide 110
Slide 110 text
PERSONAL MANIFESTS
Slide 111
Slide 111 text
i want to install $x but only for me
Slide 112
Slide 112 text
# modules/people/manifests/wfarr.pp
class people::wfarr {
include minecraft
}
Slide 113
Slide 113 text
# modules/people/manifests/wfarr.pp
class people::wfarr {
include zsh
}
Slide 114
Slide 114 text
# modules/people/manifests/wfarr.pp
class people::wfarr {
case $::hostname {
'bender': {
include projects::all
}
'scruffy': {
include projects::team
}
default: {}
}
}
Slide 115
Slide 115 text
# modules/people/manifests/wfarr.pp
class 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 => '[email protected]';
}
}
Slide 116
Slide 116 text
# modules/people/manifests/wfarr.pp
class people::wfarr {
include osx::example_things
}
Slide 117
Slide 117 text
ISSUES
Slide 118
Slide 118 text
$ boxen
Error: 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.