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

Introducción a Capistrano

Introducción a Capistrano

Charla introductioria al sistema de despliegue automático de Rails, impartida en Wombytes

Julio Antequera Galiano

February 21, 2012
Tweet

More Decks by Julio Antequera Galiano

Other Decks in Programming

Transcript

  1. ¿Qué es Capistrano? • Ejecución de comandos en remoto •

    Automatización de despliegue • Diseñado originalmente para Rails... … pero no sólo sirve para Rails :)
  2. ¿Qué necesitamos? a.k.a “Opinionated software” • Servidor Unix • Acceso

    SSH al servidor • Acceso a nuestro SCM • Ruby [RVM] • Manejo de terminal
  3. Instalar Capistrano gem install capistrano Presente en proyectos Rails •

    Descomentar gem 'capistrano' en Gemfile • Añadir gem 'capistrano-ext' para staging • bundle • capify
  4. • Funciona a base de recetas • Uno o más

    archivos • Definición de • Variables • Espacios de nombres (v2.0 +) • Tareas • Hooks Cocinero, cocinero...
  5. • Punto de entrada • Configuración básica Capfile load 'deploy'

    if respond_to?(:namespace) # cap2 differentiator $:.unshift(File.expand_path('./lib', ENV['rvm_path'])) # Ad RVM's lib directory to load path require "rvm/capistrano" require 'bundler/capistrano' set :rvm_ruby_string, 'ruby-1.9.2-p290@gemset' # Uncomment if you are using Rails' asset pipeline load 'deploy/assets' Dir['vendor/gems/*/recipes/*.rb','vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) } load 'config/deploy'# remove this line to skip loading any of the default tasks
  6. config/deploy.rb • Receta principal • Usa deploy.rb de Capistrano •

    ../gems/capistrano-2.5.2/lib/capistrano/recipes/deploy.rb • Se puede/debe dividir • Namespaces • Staging *
  7. Ventajas • Automatización • Sencilla • Extensible → Recetas •

    Empaquetable → custom gem • Comunidad → Más recetas • Bien utilizado aporta grandes mejoras de rendimiento • Github: 15mins/deploy a 14 SEGUNDOS [1] [1] https://github.com/blog/470-deployment-script-spring-cleaning
  8. Capistrano contra el mundo • “... pero no sólo sirve

    para Rails” • Django • PHP/ CakePHP • Symfony / Symfony 2 • Drupal, Wordpres, Magento, Zend... • ¿¡JAVA!? * • Y para otros servidores... • Windows Servers • Amazon EC2 GOTO→ https://github.com/capistrano/capistrano/wiki/ * http://code.google.com/p/bungeni-dspace/wiki/InstallingDspaceUsingCapistrano
  9. El caso de Node.js Es posible usar Capistrano • Si

    no importa mezclar tecnologías Existen soluciones propias del ecosistema node • Pero son jóvenes y DIY A tener en cuenta • Demonizar la aplicación node → Forever, bluepill, monit, upstart, ... • Nginx (rendimiento) vs Apache (clásico) • Control desde el despliegue → Recetas Escollos • Bleeding edge vs 'Experimentos, con gaseosa' • Tantas soluciones como devs