Slide 1

Slide 1 text

ВЫКЛАДКА БЕЗ БОЛИ С CAPISTRANO PAINLESS DEPLOYMENT WITH CAPISTRANO / Николай Кугаевский @kugaevsky

Slide 2

Slide 2 text

TRUE OLD SCHOOL Rsync SCP FTP

Slide 3

Slide 3 text

NOT SO OLD ssh → git pull Fabric

Slide 4

Slide 4 text

MONSTAZ! Puppet Chef Salt Ansible

Slide 5

Slide 5 text

CAPISTRANO TO THE RESCUE

Slide 6

Slide 6 text

CAPISTRANO Capistrano is a remote server automation and deployment tool written in Ruby. It supports the scripting and execution of arbitrary tasks, and includes a set of sane-default deployment workflows.

Slide 7

Slide 7 text

CAPISTRANO Ruby Open source Expressive DSL Simity 0-time deploy/rollback Multistaging Roles

Slide 8

Slide 8 text

INSTALL AND INIT $ c d m y _ p e r f e c t _ a p p $ g e m i n s t a l l c a p i s t r a n o $ c a p i n s t a l l

Slide 9

Slide 9 text

CONFIG # c o n f i g / d e p l o y . r b s e t : a p p l i c a t i o n , ' s l i d e s ' s e t : r e p o _ u r l , ' g i t @ g i t h u b . c o m : k u g a e v s k y / s l i d e s . g i t ' # c o n f i g / d e p l o y / s t a g i n g . r b r o l e : a p p , % w { n i c k @ k u g a e v s k y . r u } s e t : d e p l o y _ t o , ' / h o m e / k u g a e v s k y / w w w / s l i d e s . k u g a e v s k y . r u ' s e t : u s e r , ' n i c k '

Slide 10

Slide 10 text

ANATOMY LOCAL m y _ p e r f e c t _ a p p ├ ─ ─ C a p f i l e ├ ─ ─ c o n f i g │ ├ ─ ─ d e p l o y │ │ ├ ─ ─ p r o d u c t i o n . r b │ │ ├ ─ ─ s t a g i n g . r b │ │ └ ─ ─ . . . │ └ ─ ─ d e p l o y . r b └ ─ ─ l i b └ ─ ─ c a p i s t r a n o └ ─ ─ t a s k s

Slide 11

Slide 11 text

ANATOMY HOST m y _ p e r f e c t _ a p p ├ ─ ─ c u r r e n t → . . / r e l e a s e s / 2 0 1 4 1 2 0 9 2 2 2 1 0 3 ├ ─ ─ r e l e a s e s │ ├ ─ ─ 2 0 1 4 1 2 0 9 2 2 0 7 0 3 │ ├ ─ ─ 2 0 1 4 1 2 0 9 2 2 2 1 0 3 │ └ ─ ─ . . . ├ ─ ─ r e p o │ ├ ─ ─ b r a n c h e s │ ├ ─ ─ c o n f i g │ ├ ─ ─ d e s c r i p t i o n │ └ ─ ─ . . . └ ─ ─ s h a r e d ├ ─ ─ n o d e _ m o d u l e s ├ ─ ─ u p l o a d s ├ ─ ─ v e n d o r └ ─ ─ . . .

Slide 12

Slide 12 text

DEPLOY FLOW d e p l o y : s t a r t i n g # s t a r t a d e p l o y m e n t , m a k e s u r e e v e r y t h i n g i s r e a d y d e p l o y : s t a r t e d # s t a r t e d h o o k ( f o r c u s t o m t a s k s ) d e p l o y : u p d a t i n g # u p d a t e s e r v e r ( s ) w i t h a n e w r e l e a s e d e p l o y : u p d a t e d # u p d a t e d h o o k d e p l o y : p u b l i s h i n g # p u b l i s h t h e n e w r e l e a s e d e p l o y : p u b l i s h e d # p u b l i s h e d h o o k d e p l o y : f i n i s h i n g # f i n i s h t h e d e p l o y m e n t , c l e a n u p e v e r y t h i n g d e p l o y : f i n i s h e d # f i n i s h e d h o o k

Slide 13

Slide 13 text

ROLLBACK FLOW d e p l o y : s t a r t i n g d e p l o y : s t a r t e d d e p l o y : r e v e r t i n g # r e v e r t s e r v e r ( s ) t o p r e v i o u s r e l e a s e d e p l o y : r e v e r t e d # r e v e r t e d h o o k d e p l o y : p u b l i s h i n g d e p l o y : p u b l i s h e d d e p l o y : f i n i s h i n g _ r o l l b a c k # f i n i s h t h e r o l l b a c k , c l e a n u p e v e r y t h i n g d e p l o y : f i n i s h e d

Slide 14

Slide 14 text

PLUGINS! # C a p f i l e r e q u i r e ' c a p i s t r a n o / r v m ' r e q u i r e ' c a p i s t r a n o / r b e n v ' r e q u i r e ' c a p i s t r a n o / c h r u b y ' r e q u i r e ' c a p i s t r a n o / b u n d l e r ' r e q u i r e ' c a p i s t r a n o / r a i l s / a s s e t s ' r e q u i r e ' c a p i s t r a n o / r a i l s / m i g r a t i o n s '

Slide 15

Slide 15 text

REAL WORLD EXAMPLE # c o n f i g / d e p l o y . r b d e s c ' C r e a t e s y m l i n k s f o r n p m m o d u l e s ' t a s k : n p m d o o n r o l e s ( : a p p ) d o e x e c u t e " l n - n f s # { s h a r e d _ p a t h } / n o d e _ m o d u l e s # { r e l e a s e _ p a t h } / n o d e _ m o d u l e s " e n d e n d d e s c ' I n s t a l l n p m m o d u l e s ' t a s k : n p m d o o n r o l e s ( : a p p ) d o e x e c u t e " c d # { r e l e a s e _ p a t h } & & n p m i n s t a l l " e n d e n d d e s c ' C o m p i l e a s s e t s ' t a s k : c o m p i l e _ a s s e t s d o o n r o l e s ( : a p p ) d o e x e c u t e " c d # { r e l e a s e _ p a t h } & & # { s h a r e d _ p a t h } / n o d e _ m o d u l e s / . b i n / g u l p c o m p i l e : p r o d u c t i o e n d e n d

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

ALTERNATIVES Vlad the Deployer Mina

Slide 18

Slide 18 text

READING Capistrano official site Repository on GitHub How To Use Capistrano to Automate Deployments

Slide 19

Slide 19 text

СПАСИБО ВЫКЛАДКА БЕЗ БОЛИ С CAPISTRANO PAINLESS DEPLOYMENT WITH CAPISTRANO для http://slides.kugaevsky.ru/ Николай Кугаевский rannts#3