Drupal deployments met
                          Capistrano
                          Openminds techtalk - 17/10/2012
                                   @openminds
                                www.openminds.be




donderdag 25 oktober 12
Hoe deploy je nu?

                    • Backup database
                    • Code updaten (met git? scp? sftp?)
                    • updatedb uitvoeren
                    • cache flushen


donderdag 25 oktober 12
Wat is daar mis mee?


                          Teveel manuele handelingen verhogen de kans
                                           op fouten.




donderdag 25 oktober 12
Ideaal scenario

                • Snel deployen door alle manuele processen te
                          automatiseren
                • Manuele processen individueel oproepen adhv
                          ‘tasks’
                • Snel een deploy ‘ongedaan’ maken



donderdag 25 oktober 12
• Open Source
                • Gemaakt om Rails Apps te deployen
                • Ruby




donderdag 25 oktober 12
Rubygems

                          gem install capistrano capistrano-ext railsless-deploy
                          capistrano-drupal




donderdag 25 oktober 12
SSH
                     Keypair          Machines

                          Pri          Laptop


                          Pub          Server


                                       Github




donderdag 25 oktober 12
Versiecontrole

                    • Git, SVN, ...
                    • code bijhouden in versies
                    • te ‘pushen’ naar een repository (repo)
                    • Capistrano zal code van repo halen


donderdag 25 oktober 12
DEMO




donderdag 25 oktober 12
• Geen benodigde software op de server
                • Capistrano voert commandos uit over ssh
                • Uitbreidbaar adhv tasks




donderdag 25 oktober 12
Aanpassen voor Drupal
                          Bij deploy:setup:
                • Symlink voor sites/default/files -> shared/files
                • sites/default/settings.php -> shared/settings.php
                          Na deploy:
                • Tasks voor drush commands




donderdag 25 oktober 12
donderdag 25 oktober 12
capistrano-drupal gem

                • Veelvoorkomende Drupal deployment tasks
                          (Drush commands)
                • implementeert before en after hooks




donderdag 25 oktober 12
capistrano-drupal gem

                          deploy:setup
                • files directory in shared
                • settings.php in shared




donderdag 25 oktober 12
capistrano-drupal gem
                          drupal:symlink_shared
                • settings.php en files directory symlinken naar
                          shared
                • after deploy:symlink




donderdag 25 oktober 12
capistrano-drupal gem

                          drush:update
                • drush updatedb
                • after ‘deploy:symlink’




donderdag 25 oktober 12
capistrano-drupal gem

                          drush:cache_clear
                • drush cc
                • after ‘deploy:symlink’




donderdag 25 oktober 12
capistrano-drupal gem
                                Update Code

                           Symlink files directory &
                                 settings.php

                                 Update DB

                                Flush caches




donderdag 25 oktober 12
DEMO




donderdag 25 oktober 12
Probleem

                • alle configuratie zit in de database
                • Continuous Integration moeilijk
                • wat met meerdere developers?




donderdag 25 oktober 12
Ideale situatie
                          2-richtingsverkeer
                • Content komt terug upstream, naar Stag en
                          Dev
                • Configuratie downstream: Stag en Prod




donderdag 25 oktober 12
Oplossing
                          Configuratie in code
                •         Versiecontrole (Git, SVN, ...)
                •         Te debuggen
                •         Te diffen
                •         Reproduceerbare resultaten
                •         opdeling tussen content en configuratie




donderdag 25 oktober 12
donderdag 25 oktober 12
Context en Features
                                 Module
                • Context zijn set regels tijdens page load, ziet
                          wat actief is
                • Features pakt dit in met ‘code’ (views, node,
                          types)
                • Features te enablen met ‘drush’
                • Drush runnen vanuit capistrano


donderdag 25 oktober 12
Features Drush


                • drush features-update feature_name
                • drush features-revert feature_name




donderdag 25 oktober 12
Capo.io



donderdag 25 oktober 12
End



donderdag 25 oktober 12

Drupal deployments met capistrano

  • 1.
    Drupal deployments met Capistrano Openminds techtalk - 17/10/2012 @openminds www.openminds.be donderdag 25 oktober 12
  • 2.
    Hoe deploy jenu? • Backup database • Code updaten (met git? scp? sftp?) • updatedb uitvoeren • cache flushen donderdag 25 oktober 12
  • 3.
    Wat is daarmis mee? Teveel manuele handelingen verhogen de kans op fouten. donderdag 25 oktober 12
  • 4.
    Ideaal scenario • Snel deployen door alle manuele processen te automatiseren • Manuele processen individueel oproepen adhv ‘tasks’ • Snel een deploy ‘ongedaan’ maken donderdag 25 oktober 12
  • 5.
    • Open Source • Gemaakt om Rails Apps te deployen • Ruby donderdag 25 oktober 12
  • 6.
    Rubygems gem install capistrano capistrano-ext railsless-deploy capistrano-drupal donderdag 25 oktober 12
  • 7.
    SSH Keypair Machines Pri Laptop Pub Server Github donderdag 25 oktober 12
  • 8.
    Versiecontrole • Git, SVN, ... • code bijhouden in versies • te ‘pushen’ naar een repository (repo) • Capistrano zal code van repo halen donderdag 25 oktober 12
  • 9.
  • 10.
    • Geen benodigdesoftware op de server • Capistrano voert commandos uit over ssh • Uitbreidbaar adhv tasks donderdag 25 oktober 12
  • 11.
    Aanpassen voor Drupal Bij deploy:setup: • Symlink voor sites/default/files -> shared/files • sites/default/settings.php -> shared/settings.php Na deploy: • Tasks voor drush commands donderdag 25 oktober 12
  • 12.
  • 13.
    capistrano-drupal gem • Veelvoorkomende Drupal deployment tasks (Drush commands) • implementeert before en after hooks donderdag 25 oktober 12
  • 14.
    capistrano-drupal gem deploy:setup • files directory in shared • settings.php in shared donderdag 25 oktober 12
  • 15.
    capistrano-drupal gem drupal:symlink_shared • settings.php en files directory symlinken naar shared • after deploy:symlink donderdag 25 oktober 12
  • 16.
    capistrano-drupal gem drush:update • drush updatedb • after ‘deploy:symlink’ donderdag 25 oktober 12
  • 17.
    capistrano-drupal gem drush:cache_clear • drush cc • after ‘deploy:symlink’ donderdag 25 oktober 12
  • 18.
    capistrano-drupal gem Update Code Symlink files directory & settings.php Update DB Flush caches donderdag 25 oktober 12
  • 19.
  • 20.
    Probleem • alle configuratie zit in de database • Continuous Integration moeilijk • wat met meerdere developers? donderdag 25 oktober 12
  • 21.
    Ideale situatie 2-richtingsverkeer • Content komt terug upstream, naar Stag en Dev • Configuratie downstream: Stag en Prod donderdag 25 oktober 12
  • 22.
    Oplossing Configuratie in code • Versiecontrole (Git, SVN, ...) • Te debuggen • Te diffen • Reproduceerbare resultaten • opdeling tussen content en configuratie donderdag 25 oktober 12
  • 23.
  • 24.
    Context en Features Module • Context zijn set regels tijdens page load, ziet wat actief is • Features pakt dit in met ‘code’ (views, node, types) • Features te enablen met ‘drush’ • Drush runnen vanuit capistrano donderdag 25 oktober 12
  • 25.
    Features Drush • drush features-update feature_name • drush features-revert feature_name donderdag 25 oktober 12
  • 26.
  • 27.