Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Setup (Ruby Hoedown)

Will Farrington
September 22, 2012

The Setup (Ruby Hoedown)

As a rapidly growing company, GitHub's faced some challenges in how to make sure that everyone can get up and running on projects or continue to work on one of the dozens of existing projects if they've never set it up before. What a nightmare! That's what prompted @jbarnette and @wfarr to develop The Setup. The Setup aims to solve all the problems that used to plague on-boarding GitHubbers onto projects with a lot of automation and a case of the "It Just Works". This presentation talks about the history of The Setup, how it works, and some of the lessons learned along the way.

Will Farrington

September 22, 2012
Tweet

More Decks by Will Farrington

Other Decks in Technology

Transcript

  1. why

  2. oh man, this new macbook pro is sweet! let me

    run a bunch of stuff by hand so I can get some work done in about 6 to 8 hours, maybe. - some folks
  3. oh man, this new macbook pro is sweet! let me

    run a bunch of stuff by hand so I can get some work done in about 6 to 8 hours, maybe. - a bunch of crazy folks
  4. !!!

  5. about 6000 about 3600 1415 38 lines of Ruby lines

    of Puppet commits contributors some numbers
  6. chrome, colloquy, dropbox, elasticsearch, emacs, erlang, git, homebrew, hub, iterm2,

    java, macvim, memcache, mongodb, mysql, nginx, nodejs, nvm, 1passwd, personalization, postgresql, projects, python, qt, rbenv, rdio, redis, ruby, solr, sparrow, textmate, virtualbox, viscosity, wget, xcode, xquartz, zeromq, zsh, and more daily.
  7. in

  8. before require subscribe notify this resource must run before this

    resource must run after this resource runs after and watches this resource runs before and tells
  9. define git::config::local($key, $value) { $safekey = shellquote($key) $safevalue = shellquote($value)

    $command = "git config --local ${safekey} $ {safevalue}" exec { "${command} in ${name}": command => $command, cwd => $name, onlyif => 'test -d .git', unless => "git config --local ${safekey}", require => Package['git'] } }
  10. 2. puppet has semantics about execution that would be confusing

    and unintuitive in ruby or python or most other languages a
  11. class github::people::wfarr { setup::osx_defaults { 'require password always': ensure =>

    present, domain => 'com.apple.screensaver', key => 'askForPassword', value => 1, user => 'wfarr' } }
  12. =(

  13. love ops? come work with us puppet, erlang, ruby, shell,

    c and all the graphs you can shake a stick at