Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
boxen
wfarr
ops andfriction
boxen
why should icare about this?
STORY TIME
once upon a shitty time
once upon a shitty time               Time to get set up.             I want to hack on stuff!
once upon a shitty time             Okay, install XCode...
once upon a shitty time                and rbenv...
once upon a shitty time             and a bunch of rubies...
once upon a shitty time                 and pow...
once upon a shitty time                and nodejs...
once upon a shitty time                and bower...
once upon a shitty time                and bundler...
once upon a shitty time                and mysql...
once upon a shitty time               and postgresql...
once upon a shitty time             probably okay without                  mongodb...
once upon a shitty time                 definitely need             elasticsearch though...
once upon a shitty time               huh... well I cant              connect to the db!
once upon a shitty time               and now ruby is                segfaulting?!
once upon a shitty time                   wat
I just want toship cool stuff...
STUFF     OOL SS CU
I thought I wrote  an install guide that people couldjust walk through. I wonder what    broke...  Ops Person
A SOLUTION IS BORN
once upon an awesome time
once upon an awesome time                Time to get set up.              I want to hack on stuff!
once upon an awesome time                     Okay, I go to             https://boxen.company.com
once upon an awesome time                It says I should install               Xcode real quick. Sure.
once upon an awesome time              Now I copy and paste this              one line into the Terminal.
once upon an awesome time               Oh, hey! Its doing stuff.              I guess Ill grab a coffee.
I swear this is adifferent coffee cup     from before
once upon an awesome time              Rad! It says its done and              to open a new Terminal.
once upon an awesome time              Holy automated awesome,              Batman! Im ready to work!
so like what isboxen actually?

stdli         b
wtf is a devops
homebrew, git, gcc, .dev dns, nginx, rbenv, ruby-build, a bunchof ruby versions, nodenv, a bunch    of nodejs versions, he...
what do i do with     boxen?
MANAGE PROJECTS
Hmm. Lets hack on  github/github!
The README says to run     `boxen github`
Okay, its doing stuff...        I think?The Puppet logging   format is hella confusing to most people, seriously.
What just happened?
1.  Clone github/github2.  Make sure dpkg is installed3.  Make sure icu4c is installed4.  Make sure libgithub is installed...
1.2.    Clone github/github                         e                       h o    Make sure dpkg is installed3.          ...
okay, well, what about the code to       make this happen?
class projects::github {  include dpkg  include icu4c  include libgithub    include projects::pages-jekyll    boxen::proje...
what about your "average" app?
class projects::battle_station {  boxen::project { battle_station:    dotenv => true,    mysql => true,    nginx => true, ...
MANAGE EVERYTHING    ELSE TOO
Thats cool and all, but   what about me?
I need to live on the bleeding     edge version of `sl`.
And my screensaver needs    100% more lasers.
Hmm. Some documentation!  "Personal manifests?"
Oh, this looks kind of neat.      Maybe Ill do it.
class people::wfarr {  include emacs  include zsh    include projects::battle_station}
class people::wfarr {  git::config::global {    alias.st: value => status ;    alias.ci: value => commit ;    user.name: v...
class people::wfarr {  repository {    "/Users/${::boxen_user}/.emacs.d":      source => wfarr/.emacs.d  }}
class people::wfarr {  boxen::osx_defaults {    Fix bluetooth audio streaming because OSX is dumb:      ensure => present,...
CLI
$ boxen# run it
$ boxen --projects# list projects Boxen knows about
$ boxen <project># run it but include <project> in thecatalog automatically
$ boxen --debug# run it but include <project> in thecatalog automatically
UPDATE EASILY
$ boxenBoxen is up-to-date.
$ boxenBoxen has a dirty tree, wont auto-update!
$ boxenBoxen has unpushed commits onmaster, wont auto-update!
$ boxenBoxen on a non-master branch new-project, wont auto-update!
FAIL GRACEFULLY
$ boxenError: ZOMG at /opt/boxen/repo/modules/people/manifests/wfarr.pp:8on node scruffy.gateway.github.lanSorry! Creating...
CODEZ
who failedCODEZ
how long agoCODEZ
CODEZ        machine
os versionCODEZ
CODEZ   shell
refCODEZ
compare viewCODEZ
git statusCODEZ
CODEZ        full command
CODEZ        full log
i fix the error and run `boxen`
CODEZ
via issues api
# config/boxen.rbENV[BOXEN_REPO_NAME] =   github/boxenENV[BOXEN_ISSUES_ENABLED] = yes
This is pretty freaking rad!
Its just code.Maybe I can write this too...
   66 GitHubbers (~42%)      have contributed...
   44 Devs   7 Ops   5 Designers   4 Supportocats           3 Trainers...
really using it
EMBRACE AND EXTEND
create higher level abstractions
class projects::battle_station {  boxen::project { battle_station:    dotenv => true,    mysql => true,    nginx => true, ...
lets optimize for our use-case
The sanest default, but easy to overridedefine github::project(  $source = "github/${title}"  # a whole bunch of other par...
maybe all of our ops team should get certain things by default
class github::environment {  include_github_team_environments()}
class github::environment::ops {  includegithub::environment::ops::vagrant    include projects::battle_station    include ...
START SIMPLE
write new modules inside your  repo first and extract later
~/github/boxen » ls -1 modulescmakectagsgithublibgithublibmicrohttpdnodejspeopleprojectsstrap
~/github/boxen » ls -1 modulescmakectagsgithublibgithublibmicrohttpdnodejs        WIP v2.0.0 nodejs modulepeopleprojectsst...
start abstractions in Puppet
refactor into Ruby later ifperformance demands it
define nodejs::version(  $ensure = present,  $compile = false,  $version = $title,) {  require nodejs    case $ensure {   ...
Time:       Filebucket: 0.00   Vagrant plugin: 0.00           Nodejs: 4.37          Sudoers: 0.00        File line: 0.00  ...
if its consistently slowing down       the run, then optimize
define nodejs::version(  $ensure = present,  $compile = false,  $version = $title,) {  require nodejs    nodejs { $version...
DO WHATEVER WORKS
practicality beats purity /perfect is the enemy of good enough
but...
WHY ISNT THIS JUST A BUNCH OF SCRIPTS?
idempotent behavior is kind of a big deal
shell scripts get the job done if you live in a wonderful vacuum where constraints never change and the dependencies betwe...
the real world reallydoesnt care one bit
telling people"if it breaks, just reinstall"          is a copout
if people expect to your software  to behave a certain way, and you  have the power to automate that       behavior and th...
WHY ISNT THIS IN CHEF?
so glad people dont ask this one     at puppet conferences!
transcend tools;write beautiful porcelain
WHAT ABOUT SECURITY     UPDATES?
THE DARK AGES OFSECURITY INTERACTION          
THE DARK AGES OFSECURITY INTERACTION          Java browser plugins are        literally going to beat you       up, kick ...
lol are you kidding me?I have important codez to write.           Ill do it later.      Now be gone, demon!    HINT: Theyr...


THE awesome AGES OFSECURITY INTERACTION          
THE awesome AGES OFSECURITY INTERACTION       Hey folks! I just had to push       an update to Boxen to disable         J...
THE awesome AGES OFSECURITY INTERACTION        Oh snap - audit season!          Let me just review our        code to see...
what if i have  problems?
pull requests
issues
irc.freenode.net
be chuck yeager
Atlanta          Savannah
Atlanta          Savannah
Atlanta          Savannah
Atlanta          Savannah
Atlanta          Savannah
"So, were uh in the air. We made     it. Thats uh good news,            obviously."
"Flight attendants, if you couldjust hang on to uh... whatever..."
The point at which Irealize Im going to         dieThe point at which I think the worst is        over
detail text
      wfarr speakerdeck.com/wfarr/boxen-puppetcamp-sf-2013
thanks
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
once upon an awesome time
Prochain SlideShare
Chargement dans…5
×
15 840 vues

Publié le

once upon an awesome time Oh, hey! Its doing stuff. I guess Ill grab a coffee.

Publié dans : Technologie
  • Soyez le premier à commenter

×