Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 31 Publicité

Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012

Télécharger pour lire hors ligne

Version HTML accessible à http://gaspaio.github.com/capistranoPHPTour2012

Capistrano est un outil de gestion de tâches optimisé pour le déploiement continu.

Bien qu'écrit en Ruby et développé initialement pour les besoins des applications Ruby On Rails, Capistrano est actuellement assez mur pour déployer tout type d'applications Web, dont celles en PHP.

Il s'agit peut-être même du meilleur outil disponible pour le faire. Cette présentation propose d'explorer les fonctionnalités qui font de Capistrano un tel outil d'exception pour les déploiements PHP.

Version HTML accessible à http://gaspaio.github.com/capistranoPHPTour2012

Capistrano est un outil de gestion de tâches optimisé pour le déploiement continu.

Bien qu'écrit en Ruby et développé initialement pour les besoins des applications Ruby On Rails, Capistrano est actuellement assez mur pour déployer tout type d'applications Web, dont celles en PHP.

Il s'agit peut-être même du meilleur outil disponible pour le faire. Cette présentation propose d'explorer les fonctionnalités qui font de Capistrano un tel outil d'exception pour les déploiements PHP.

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (18)

Les utilisateurs ont également aimé (18)

Publicité

Similaire à Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012 (20)

Publicité

Plus récents (20)

Capistrano : un outil pour déployer vos applications PHP | PHP Tour Nantes 2012

  1. 1. Capistrano Un outil pour déploier vos applications PHP Rodolfo Ripado rodolfo.ripado@alterway.fr
  2. 2. Rodolfo Ripado Développeur PHP depuis 6 ans Membre actif de la communauté Drupal Son dada : l'Industrialisation/DevOps/Automation Consultant Drupal chez Alter Way
  3. 3. Qu'est-ce que Capistrano ? Moteur d'exécution de tâches à distance Connections via SSH Execution en parallèle (S')écrit en ruby Open-source ( GitHub ) et bien documenté ( Capistranorb.com ) Mais ... à quoi ça sert, en gros ?
  4. 4. Déploiement Continu
  5. 5. pour la petite histoire ...
  6. 6. Installer Capistrano : dépendances Sur la machine locale : Ruby (incl. rubygems) Client SSH Sur les machines cible : Server SSH (compatible OpenSSH) Environnement Linux-like
  7. 7. Installer Capistrano : sur Ubuntu
  8. 8. Les concepts de base Capfile Fichier de configuration avec la définition des tâches et leurs variables de configuration. Appelé aussi la "recipe". Tâches Un groupe d'actions. Actions Opérations à effectuer sur un ensemble de serveurs. Rôles Un groupe de serveurs. Variables Définissent les paramètres de connexion, les accès VCS, etc.
  9. 9. L'exemple habituel : Hello World! st:sr vgat e ue,"arn" ds M eoehlowrdts. ec"yrmt el ol ak" ts hlowrd hss= "icv" de.t]d ak:el_ol,:ot >[ms.t,"dvv" o  rn"co'el ol'  u eh HloWrd" ed n
  10. 10. Les variables Pour manipuler des variables : st) ne(,eit(,.. e(,ust) xss) .             #Ti srb,s hs:  hsi uy oti  st:sr vgat e ue,"arn" #i h aea hs:  stesm sti  st:asod vgat) e(pswr,"arn"
  11. 11. Quelques unes des variables disponibles #SHcneto aaees  S oncinprmtr st:sr vgat e ue,"arn" st:asod vgat e pswr,"arn" st:s_pin,{ e shotos   'ot:88,  pr' 81 } st:eal_niomn,{ e dfutevrnet   'NVR >'oeau'  EVA'= smvle, } #Stagtwytogtwiht unltecnetos  e  aea huh hc otne h oncin st:aea,"w.yaea.r" e gtwy wwmgtwyog Il y en a plein d'autres : 2.x Significant Configuration Variables
  12. 12. Les roles et les servers rl(ae sres trbts{,&lc) oenm,*evr,atiue=} bok sre(ot rls trbts{) evrhs,*oe,atiue=} st:sr vgat e ue,"arn" #e  oe  e n bsres St2rls:wbadd evr rl wb sre1cm,"evr.o" oe:e,"evr.o" sre2cm rl wb sre3cm,:atr= re oe:e,"evr.o" mse >tu rl d,"evr.o" sre5cm oe:b sre4cm,"evr.o" #d  evrt ohrls Adasre obt oe sre sre6cm,:b wb evr"evr.o" d,:e ds M eoehlowrdts ntemse e evrol. ec"yrmt el ol ako h atrwbsre ny" ts hlowrd rls= wb ol >{mse >tu}d ak:el_ol,:oe >:e,:ny= :atr= re o  rn"co'el ol'  u eh HloWrd" ed n
  13. 13. Les actions : exécution de commandes rncd pin=} bok u(m,otos{,&lc) Execute cmd en parallèle sur un ensemble de serveurs rn"oeomn oeaa" rls= wb u smCmadsmPrm,:oe >:e rn"oeomn oeaa" oc >tu u smCmadsmPrm,:ne= re L'alternative r n l c l ypermet d'exécuter une commande u_oal localement sd(pin=} uootos{) Retourne une string pour composer des commandes sudo rn"{uo:s= mne' oeomn oeaa" u #sd a >'aul}smCmadsmPrm
  14. 14. Les actions : transfert de données ptdt,pt,otos{) u(aa ah pin=} pt"iecnet" /t/oep/ofg,:oe >:e u fl otns,"ecsmapcni" rls= wb gtfo,t,otos{,&lc) e(rm o pin=} bok gt"ecsmapcni" dwlassmapcni" e /t/oep/ofg,"onod/oep_ofg ula(rm o pin=} bok podfo,t,otos{,&lc) ula dt/oei" /a" rcrie= re pod"aasmDr,"vr,:eusv >tu dwla(rm o pin=} bok onodfo,t,otos{,&lc) dwla /a/oei" /aasmDr$AITAOHS$ onod"vrsmDr,"dt/oei/CPSRN:OT"
  15. 15. Les tâches ts(ae pin=} bok aknm,otos{,&lc) ds Syn el ses. ec"aighloi ay" ts hlowrd rls= wbd ak:el_ol,:oe >:e o  rn"{uo evc pce tp  u #sd}srieaah2so"  rn"{uo evc pce tr"  u #sd}srieaah2sat ed n bfr(aknm,*ak,&lc) eoets_ae tss bok atrts_ae tss bok fe(aknm,*ak,&lc) atr:el_ol,:yaes fe hlowrd mNmI atr:el_ol o fe hlowrdd  rn"co'ody l."  u eh Gobeal' ed n
  16. 16. Les namespaces nmsaenm,&lc) aepc(ae bok #Nmsae lo o ogopyu ak  aepcsalwyut ru ortss nmsae:elyd aepc dpo o  ts hlowrd rls= wbd  ak:el_ol,:oe >:e o   #oecmad   sm omns  ed  n ed n #Yucnroe  aepc ntm.Yucn  o a epnanmsaeayie o a #oerd rvosydfndtssado d e ns  vriepeiul eie ak n/radnwoe. nmsae:elyd aepc dpo o  ts m_aei,:oe >:e o  ak:ynm_s rls= wbd   #oecmad   sm omns  ed  n ed n
  17. 17. Contrôle d'exécution Que fait-on si une commande échoue ? tascin&lc) rnato(bok o_olak&lc) nrlbc(bok #Dpoe n ovlevrind 'plcto  élyruenuel eso elapiain ts dpo o ak:elyd  tascind  rnato o   udt_oe   paecd  ed  n ed n #Pae n ovlevrind oedn nnueurpror  lcruenuel eso ucd asu ova éetie ts udt_oed ak:paecd o  o_olakd  nrlbc o   rn"m­f#rlaept}   u r r {ees_ah"  ed  n  suc.hcotrlaept)  oreceku(ees_ah ed n
  18. 18. Les composants de nos Recipes : Variables de configuration Serveurs, rôles, attributs Actions Transactions, Tâches, Namespaces
  19. 19. Railsless-deploy Une recipe générique de déploiement : Installation via Rubygems : Et dans note Capfile : #Icueteatraiedpo eey  nld h lentv elyrcp rqie'uyes eur rbgm' rqie'alls­ely eur risesdpo' #Cso eiiin ee  utmdfntoshr
  20. 20. Les tâches par défaut : ue@evr~cp­ srsre:/a T [.] .. cpdpo         ely orpoet a ely       #Dposyu rjc. cpdpo:lau     la podrlae. a elycenp   #Cenu l eess cpdpo:edn     ipastecmissneyu atdpo. a elypnig   #Dsly h omt ic orls ely cpdpo:edn:if  ipaste`if ic orls ely a elypnigdf #Dsly h df'sneyu atdpo. cpdpo:olak    ol akt  rvosvrinadrsat. a elyrlbc   #Rlsbc oapeiu eso n etrs cpdpo:olakcd  ol akt h rvosydpoe eso. a elyrlbc:oe#Rlsbc otepeiul elydvrin cpdpo:eu      rprsoeo oesresfrdpomn. a elystp    #Peae n rmr evr o elyet cpdpo:yln     pae h yln otems eety.. a elysmik   #Udtstesmikt h otrcnl . cpdpo:pae     oisyu rjc n pae h yln. a elyudt    #Cpe orpoetadudtstesmik cpdpo:paecd   oisyu rjc otermt evr. a elyudt_oe #Cpe orpoett h eoesres [.] ..
  21. 21. Comment ça marche ? Sur le(s) serveur(s) cible : [elyt] dpo_o [elyt]rlae/0889012 dpo_o/eess2001012 [elyt]rlae/. dpo_o/eess.. [elyt]sae/. dpo_o/hrd.. [elyt]cret­ dpo_o/eess21010 dpo_o/urn >[elyt]rlae/0089 012 12 Il faudra définir : La stratégie de déploiment Le système de contrôle de version utilisé Et un tas de petites choses ...
  22. 22. Un Capfile simple : rqie"uyes eur rbgm" rqie"alls­ely eur risesdpo" rl wb wbevr oe:e,"esre" st:sr vgat e ue,"arn" #Rqie  sdfralsrso eal aus  eurd:ue o l ot fdfutvle st:plcto,"yplcto" e apiain MApiain #Rqie  h eoioyfo hc oceku h plcto oe  eurs:Terpstr rmwiht hcotteapiaincd st:eoioy gt/gtu.o/oen/oeeo e rpstr,"i:/ihbcmsmoesmrp" #TeVSietfes  h C dniir st:c,:i e sm gt st:c_sr m" e smue,"e #Tedpomn taey  h elyetsrtg #Psil aus:cp,ceku,epr,rmt_ah,..  osbevle  oy hcot xot eoecce . st:elyva rmt_ah e dpo_i,:eoecce st:oyecue smDrnneDt" e cp_xld,"oei/oWbaa #Tedpomn aedrcoy  h elyetbs ietr st:elyt,"vrww#apiain" e dpo_o /a/w/{plcto}
  23. 23. Démo !
  24. 24. L'interface web : Webistrano Application RoR, installable via bundler Disponible sur GitHub : https://github.com/peritor/webistrano Comment faire : Web Application Deployment Using Webistrano and Capistrano Utile mais ... Très spécifique RoR. Plus maintenue ? De nombreux forks "vivants" existent...
  25. 25. Alternatives à Webistrano Strano Disponible sur GitHub Toujours en Ruby/RoR Pour des déploiments à partir de Gitub Plus d'infos : http://developwithstyle.com/strano Jenkins Envisageable si vous l'utilisez déjà pour l'IC de vos projets
  26. 26. Extensions à Capistrano Capistrano Multistage Définition de roles et serveurs par stage ue@evr~cppouto ely srsre:/a rdcindpo Fait désormais partie de Capistrano. Capifony Installation via Rubygems Tâches, variables et répertoires conçus pour déployer des projets Symfony 1 & 2. Plus d'informations : http://capifony.org/
  27. 27. Extensions à Capistrano Drupal Disponible sur GitHub : https://github.com/gaspaio/Drupal-Capistrano-Deploy Et autres encore : capcake capistrano_rsync_with_remote_cache capistrano-deploytags capistrano-windows-server
  28. 28. Vous n'aimez vraiment pas Ruby ? :-( Fabric fo arcaiipr n,rn rmfbi.p motev u Une alternative solide, en Python. dfsthss) e e_ot(: Sur GitHub :   evhss=[hs1,'ot'   n.ot  'ot' hs2] https://github.com/fabric/fabric dfmts(: e yak)   rn's/a/w'   u(l vrww) Ploy & WePloy Crée par Rasmus Lerdorf pour les besoins de WePay . Clone simplifié de Capistrano en PHP. Aucun commit fait depuis 2 ans. Et autres encore : Control Tier , Func , Mcollective
  29. 29. Merci ! Des questions ? Retrouver les slides : http://www.slideshare.net/rodolforipado Me suivre : @gaspaio Me joindre : rodolfo.ripado@alterway.fr ggaspaio@gmail.com

×