Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Boxen: PuppetCamp ATL
Search
Will Farrington
March 19, 2013
Technology
320
0
Share
Boxen: PuppetCamp ATL
A Boxen talk focused at folks who might attend a PuppetCamp.
Will Farrington
March 19, 2013
More Decks by Will Farrington
See All by Will Farrington
test-queue makes your tests run fast
wfarr
0
480
Incident Response Done Right: From First Page to Postmortem
wfarr
0
590
Boxen: PuppetConf 2013
wfarr
6
910
Puppet at GitHub: PuppetConf 2013
wfarr
21
2.2k
Puppet at GitHub (PuppetCamp Raleigh 2013)
wfarr
1
490
Boxen: PuppetCamp SF 2013
wfarr
5
1.1k
Boxen: MWRC
wfarr
5
280
BOXEN
wfarr
43
5.5k
Boxen-puppetconf
wfarr
13
2.2k
Other Decks in Technology
See All in Technology
GKE Agent SandboxでAIが生成したコードを 安全に実行してみた
lamaglama39
0
170
AI時代に越境し、 組織を変えるQAスキルの正体 / QA Skills for Transforming an Organization
mii3king
0
470
「SaaSの次の時代」に重要性を増すステークホルダーマネジメントの要諦 ~解像度を圧倒的に高めPdMの価値を最大化させる方法~
kakehashi
PRO
3
3.4k
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
8
1.4k
AWS Transform CustomでIaCコードを自由自在に変換しよう
duelist2020jp
0
220
「QA=テスト」「シフトレフト=スクラムイベントの参加者の一員」の呪縛を解く。アジャイルな開発を止めないために、10Xで挑んだ「右側のしわ寄せ」解消記 #scrumniigata
nihonbuson
PRO
1
290
VespaのParent Childを用いたフィードパフォーマンスの改善
taking
0
170
AgentCore×VPCでの設計パターンn選と勘所
har1101
4
360
小さいVue.jsを30分で作る
hal_spidernight
0
120
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
430
色を視る
yuzneri
0
300
大学職員のための生成AI最前線 :最前線を、AIガバナンスとして読み直すためのTips
gmoriki
0
2.3k
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
10
37k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
820
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Paper Plane (Part 1)
katiecoart
PRO
0
6.9k
Practical Orchestrator
shlominoach
191
11k
Designing for Performance
lara
611
70k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
450
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
480
KATA
mclloyd
PRO
35
15k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
340
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
380
Transcript
boxen
wfarr
ops
friction
what is boxen?
STORY TIME
@jbarnette + @wfarr
None
None
developing software is harder than it used to be
our toolchains have gotten more robust
our toolchains have gotten more complicated
want to work on $anything?
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
None
s/ruby/literally everything but bash/g
None
let's make it better
None
None
THINGS BOXEN IS
a framework
stdlib
wat
None
None
THINGS BOXEN IS NOT
nope
nope
newp
sadly, no
why should i use boxen?
FRICTION SUCKS
friction is anything that gets in the way of doing
stuff
friction is the greatest source of frustration in every organization
configuring development environments is a week-long marathon in friction
"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."
"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
None
None
None
None
getting any part of the stack running locally should never
block someone from shipping
USS COOL STUFF
None
INCONSISTENCY SUCKS
when was the last time you knew every human was
running the same services in dev and prod?
None
"hey so my postgresql isn't working. is yours working? it
is? huh. i have no idea what's wrong."
"hey so my postgresql isn't working. is yours working? it
is? huh. i have no idea what's wrong." lame
manual audits are tedious
manual audits are error-prone
ask software instead of humans
lock every core component to the same version as in
prod
UPDATING SUCKS
"jeeeeeez the mac app store has been bugging me for
like forever! i have a billion updates... meh"
"jeeeeeez the mac app store has been bugging me for
like forever! i have a billion updates... meh" lame
maybe you use CM in dev already, but when was
the last time you updated and ran it?
SECURITY SUCKS
security is a war of attrition
bug people enough about security and they stop caring about
it
"ugh, another security thing? whatever, i have way more important
things to do"
"ugh, another security thing? whatever, i have way more important
things to do" lame
let code handle security, then inform people so they know
why the code's making changes
no surprises
BOXEN ENABLES YOU TO MAKE THESE THINGS BETTER FOR YOUR
ORG
None
what do i get?
RUNNER
boxen is run via some ruby
it collects info for facter
it checks for prerequisites and conflicts before each run
it detects certain changes post-run
it has hooks too
PUPPET
"the core"
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
rbenv_gem, repository, osx_chsh, osx_login_item, boxen::project, ruby::local, mysql::database, etc.
package: homebrew, compressed_app
repository: git
service: ghlaunchd
"the library"
130+ modules on GitHub
GitHub uses ~81 of those
travis-ci
CARDBOARD
gem that simplifies creating new puppet modules, optimized for the
boxen-recommended stack
librarian-puppet, rspec-puppet, puppet-lint, etc.
PUPPET-TEMPLATE
example module using cardboard
OUR-BOXEN
template boxen project
BOXEN-WEB
small rails app to allow distributing your boxen easily, with
auth
how do i get it?
Automate Everything
boxen/boxen-web
None
how do i use it?
CLI
$ boxen # run it
$ boxen --projects # list projects Boxen knows about
$ boxen <project> # run it but include <project> in
the catalog automatically
PROJECT MANIFESTS
i want to hack on my project
# modules/projects/manifests/team.pp class projects::team { boxen::project { 'team': dotenv =>
true, mysql => true, nginx => true, ruby => '1.9.3', source => 'github/team', } }
$ boxen team warning: Setting up 'team'. This can be
made permanent by having 'include projects::team' in your personal manifest.
cloned repo nginx vhost ruby version mysql databases .env file
$ cd ~/src/team $ script/server $ open http://team.dev/
PERSONAL MANIFESTS
i want to install $x but only for me
# modules/people/manifests/wfarr.pp class people::wfarr { include minecraft }
# modules/people/manifests/wfarr.pp class people::wfarr { include zsh }
# modules/people/manifests/wfarr.pp class people::wfarr { case $::hostname { 'bender': {
include projects::all } 'scruffy': { include projects::team } default: {} } }
# 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]
'; } }
# modules/people/manifests/wfarr.pp class people::wfarr { include osx::example_things }
ISSUES
$ 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.
CODEZ
CODEZ who failed
CODEZ how long ago
CODEZ machine
CODEZ os version
CODEZ shell
CODEZ ref
CODEZ compare view
CODEZ git status
CODEZ full command
CODEZ full log
i fix the error and run `boxen`
CODEZ
via issues api
# config/boxen.rb ENV['BOXEN_REPO_NAME'] = \ 'github/boxen' ENV['BOXEN_ISSUES_ENABLED'] = 'yes'
UPDATES
$ boxen Boxen is up-to-date.
$ boxen Boxen has a dirty tree, won't auto- update!
$ boxen Boxen has unpushed commits on master, won't auto-update!
$ boxen Boxen on a non-master branch 'new- project', won't
auto-update!
i'm sold.
None
what if i have problems?
file issues
irc.freenode.net
be chuck yeager
None
"So, we're uh in the air. We made it. That's
uh good news, obviously."
"Flight attendants, if you could just hang on to uh...
whatever..."
detail text
wfarr come work with me on things like boxen
CODEZ
thanks
speakerdeck.com/wfarr/ boxen-puppetcamp-atl