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

Boxen: Configurando o seu ambiente de desenvolvimento

Boxen: Configurando o seu ambiente de desenvolvimento

Apresentado no 30º Encontro do Guru-SP

Já teve problemas em configurar a sua máquina de desenvolvimento para um novo projeto? Eu também. O Boxen automatiza toda a chatice de deixar o OS X pronto para o seu trabalho - instalar Rubies, clonar repositórios e mais. Veremos o que o Boxen pode fazer por você, vantagens de adotar ele na sua equipe e detalhes do projeto que garantem a consistência e previsibilidade do seu ambiente de dev.

Lucas Mazza

June 22, 2013
Tweet

More Decks by Lucas Mazza

Other Decks in Technology

Transcript

  1. XCode Ruby Node.JS Pow MongoDB MySQL PostgreSQL PhantomJS Qt Redis

    ElasticSearch ImageMagick Memcached Dotfiles AWS Vim/ST 2/TM
  2. “Boxen is a framework for managing almost every aspect of

    your Mac.” https://github.com/blog/1345-introducing-boxen
  3. boxen CLI em Ruby (1.8.7) our-boxen A sua configuração, usando

    Puppet boxen-web Rails app para o setup inicial
  4. 5

  5. “We believe that development is production, so we value consistency,

    predictability, and reproducibility over artisanal, hand-tweaked development environments.”
  6. node default { include dnsmasq include git include hub include

    nodejs include ruby::2_0_0 class { 'ruby::global': version => '2.0.0' } package { [ 'ack', 'findutils', 'gnu-tar' ]: } } seu-boxen/manifests/site.pp
  7. node default { include dnsmasq include git include hub include

    nodejs include ruby::2_0_0 class { 'ruby::global': version => '2.0.0' } package { [ 'ack', 'findutils', 'gnu-tar' ]: } } Dependências globais seu-boxen/manifests/site.pp
  8. node default { include dnsmasq include git include hub include

    nodejs include ruby::2_0_0 class { 'ruby::global': version => '2.0.0' } package { [ 'ack', 'findutils', 'gnu-tar' ]: } } Ruby via rbenv Dependências globais seu-boxen/manifests/site.pp
  9. node default { include dnsmasq include git include hub include

    nodejs include ruby::2_0_0 class { 'ruby::global': version => '2.0.0' } package { [ 'ack', 'findutils', 'gnu-tar' ]: } } Ruby via rbenv Dependências globais Pacotes do Homebrew seu-boxen/manifests/site.pp
  10. class people::lucasmazza { include alfred include chrome include firefox include

    bash include iterm2::stable include sublime_text_2 $home = "/Users/${::luser}" Git::Config::Global <| title == 'core.excludesfile' |> { value => "${home}/.gitignore", require => undef } } seu-boxen/modules/people/manifests/lucasmazza.pp
  11. class people::lucasmazza { include alfred include chrome include firefox include

    bash include iterm2::stable include sublime_text_2 $home = "/Users/${::luser}" Git::Config::Global <| title == 'core.excludesfile' |> { value => "${home}/.gitignore", require => undef } } Meu usuário do GitHub seu-boxen/modules/people/manifests/lucasmazza.pp
  12. class people::lucasmazza { include alfred include chrome include firefox include

    bash include iterm2::stable include sublime_text_2 $home = "/Users/${::luser}" Git::Config::Global <| title == 'core.excludesfile' |> { value => "${home}/.gitignore", require => undef } } Módulos que eu quero Meu usuário do GitHub seu-boxen/modules/people/manifests/lucasmazza.pp
  13. class people::lucasmazza { include alfred include chrome include firefox include

    bash include iterm2::stable include sublime_text_2 $home = "/Users/${::luser}" Git::Config::Global <| title == 'core.excludesfile' |> { value => "${home}/.gitignore", require => undef } } Módulos que eu quero Meu usuário do GitHub Mudando configs padrão seu-boxen/modules/people/manifests/lucasmazza.pp
  14. class projects::myapp { include phantomjs include phantomjs::1_9_0 package { 'imagemagick':

    } boxen::project { 'my-app': mysql => true, redis => true, ruby => '1.9.3-p194', source => 'acme/my-app' } git::config::local { "${boxen::config::srcdir}/my-app": # ... } } seu-boxen/modules/projects/manifests/my_app.pp
  15. class projects::myapp { include phantomjs include phantomjs::1_9_0 package { 'imagemagick':

    } boxen::project { 'my-app': mysql => true, redis => true, ruby => '1.9.3-p194', source => 'acme/my-app' } git::config::local { "${boxen::config::srcdir}/my-app": # ... } } seu-boxen/modules/projects/manifests/my_app.pp Dependências
  16. class projects::myapp { include phantomjs include phantomjs::1_9_0 package { 'imagemagick':

    } boxen::project { 'my-app': mysql => true, redis => true, ruby => '1.9.3-p194', source => 'acme/my-app' } git::config::local { "${boxen::config::srcdir}/my-app": # ... } } Repositório no GitHub seu-boxen/modules/projects/manifests/my_app.pp Dependências
  17. class projects::myapp { include phantomjs include phantomjs::1_9_0 package { 'imagemagick':

    } boxen::project { 'my-app': mysql => true, redis => true, ruby => '1.9.3-p194', source => 'acme/my-app' } git::config::local { "${boxen::config::srcdir}/my-app": # ... } } Repositório no GitHub Configurações específicas seu-boxen/modules/projects/manifests/my_app.pp Dependências
  18. CLI

  19. $ boxen Aplica as suas configurações $ boxen --list Lista

    os projetos disponíveis $ boxen nome-do-projeto Aplica as configurações do projeto