30
[email protected] / @david_gil_biko2 #DrupalcampSpain2015 Desplegando drupal con capistrano

Capistrano drupalcamp-jerez-2015

Embed Size (px)

Citation preview

[email protected] / @david_gil_biko2 #DrupalcampSpain2015

Desplegando drupal con capistrano

Somos 60 personas

Más de 18 años de experiencia

aquí  es  donde  trabajo  

Estamos especializados en negocio digital  Creamos relaciones a largo plazo

aquí  es  donde  trabajamos  

Podemos presumir de trabajar para y con…

www.museoreinasofia.es

MUSEO REINA SOFÍA

•  Museo reina sofía

www.selfbank.es

Selfbank.es

www.internetacademi.com

Internetacademi.com

¿Cómo  desplegais  ahora  mismo?  •  FTP, SFTP, SCP •  SSH + GIT •  Scripts de shell • Aegir • Drush • Chef, Ansible, …

¿Problemas?  •  Normalmente demasiados procesos

manuales en un despliegue – backup db – Actualizamos el código – updatedb – clear caches

•  ¡No te olvides nada!

<n> frontales con auto-escalado + servers varnish + instancia de control

¿Lo  complicamos  más?    

 Nuestro  último  proyecto:  

Llamemos  al  equipo  A  

+ +

drush y features

•  Capistrano es una herramienta de desarrollo para desplegar aplicaciones web.

•  Normalmente se instala en el equipo de los desarrolladores.

•  Despliega el código desde un control de versiones (GIT) a uno o más servidores.

http://capistranorb.com

•  Ruby! •  Creada para desplegar aplicaciones RoR •  Ahora ya es Cross-platform, con recetas

para multitud de frameworks •  Requiere una estructura de carpetas

“especial” en los servidores

http://capistranorb.com

Estructura  del  docroot

•  docroot de apache apunta a current •  symlinks para ficheros compartidos

entre releases (files y settings).

¿cómo  funciona?  •  En los servidores no hay que instalar nada •  Capistrano ejecuta comandos remotos en los

servidores sobre ssh •  > cap deploy

Deploy  flow   SSH  al  server  

Checkout  revision  de  GIT  

Copia  del  código  a  releases/;mestamp  

Se  añaden  los  symlinks  de  shared  a  la  release  

Se  actualiza  el  current  symlink  

•  Extendemos el comportamiento por defecto de capistrano con hooks

Deploy  flow:  hooks

•  cap deploy:rollback •  Deja el symlink “current” en la realese anterior (es

interactivo) •  Ojito la BD •  Para obtener listado completo de comandos:

–  cap -T

La  cagaste  Burt  Lancaster

Drupal  deploy  flow  

Backup  DB  

Checkout  revision  de  GIT  

Se  añaden  los  symlinks  de  files  y  seCngs  

drush  updb  drush  fra  -­‐-­‐force  

drush  cc  all  Tag  GIT  

Una  ejecución  completa

Una  ejecución  completa

Talk  is  cheap show  me  the  code!

Configuración general en deploy.rb

Multi-­stage  •  Podemos definir diferentes entornos de despliegue •  Normalmente configuramos las IPs de los servers,

rama de GIT, diferente docroot, … •  > cap <entorno> deploy

Server  roles  •  En entornos multiservidor algunos servidores son

diferentes: db, master, slave, etc…

Server  roles:  ejecución  deploy  

Tasks  para  Drupal:  build  

Tasks  para  Drupal:  drush  

Tasks  para  Drupal:  cache  

Tasks  para  Drupal:  rsync  

•  http://capistranorb.com •  Mis recetas:

•  https://github.com/davidgil/capistrano-drupal •  Basadas en:

•  https://github.com/mordonez/capistranorb-drupal •  https://github.com/generoi/capistrano-tasks

•  Lo mismo con Ansible •  http://blog.versioneye.com/2014/09/24/rebuilding-capistrano-like-

deployment-with-ansible/

•  GIT branching model •  http://nvie.com/posts/a-successful-git-branching-model/

Referencias  

¡Muchas  gracias!   David gil

[email protected]

http://www.biko2.com

@david_gil_biko2