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

Deployment in a new Cloud Era

Rach Belaid
September 20, 2013

Deployment in a new Cloud Era

Presentation about shipping and tooling

Rach Belaid

September 20, 2013
Tweet

More Decks by Rach Belaid

Other Decks in Technology

Transcript

  1. Who I am. Python charmer Git Lover PostgreSQL Fan I

    build web products and love learning something new.
  2. Boom! magic rollback! What about servers? How do I version

    them? Unfortunately I cannot do: g i t r e s e t - - h a r d < p r e v i o u s >
  3. What is an application? Is it just code? Or, does

    it include all its components?
  4. What's a Good release? Self Contained Easy to rollback Fast

    to deploy Easy to upgrade (less legacy) Easy to duplicate Testable in parallel
  5. Example: Create Wheels p i p i n s t

    a l l w h e e l p i p w h e e l - - w h e e l - d i r = / l o c a l / w h e e l s - r r e q u i r e m e n t s . t x t p i p w h e e l - - w h e e l - d i r = / l o c a l / w h e e l s . / a p p
  6. Example: Install Wheels p i p i n s t

    a l l - - u s e - w h e e l - - n o - i n d e x - - f i n d - l i n k s = h t t p : / / m y f a n c y u r l /
  7. Fundamental Principle: “ IF FPM IS NOT HELPING YOU MAKE

    PACKAGES EASILY, THEN THERE IS A BUG IN FPM.”
  8. Example: Create Package f p m - s p y

    t h o n - t d e b . / a p p / s e t u p . p y f p m - s d i r - t d e b a p p _ f o l d e r _ w i t h _ v e n v /
  9. Application are more complex and not just code they have

    dependencies!! Redis Postgres System Libs
  10. But they are not easy to rollback ... even if

    you keep it in a VCS. It's not enough.
  11. What's docker Docker, the Linux Container Runtime, an application to

    pack, ship and run any application as a lightweight container
  12. Get Started g i t c l o n e

    h t t p s : / / g i t h u b . c o m / d o t c l o u d / d o c k e r . g i t c d d o c k e r v a g r a n t u p v a g r a n t s s h s u d o d o c k e r
  13. What's packer Packer is a tool for creating identical machine

    images for multiple platforms from a single source configuration.
  14. Simple JSON to describe 3 steps: Provisioning (shell, files, Salt,

    Chef) Build (AWS, DigitalOcean, VMWare, OpenStack ) Post-Process (Vagrant, Compress)
  15. Examples { " b u i l d e r

    s " : [ { " t y p e " : " a m a z o n - e b s " , " r e g i o n " : " u s - e a s t - 1 " , " s o u r c e _ a m i " : " a m i - e 5 0 e 8 8 8 c " , " i n s t a n c e _ t y p e " : " t 1 . m i c r o " , " s s h _ u s e r n a m e " : " u b u n t u " , " a m i _ n a m e " : " p a c k e r - e x a m p l e { { t i m e s t a m p } } " } ] , " p r o v i s i o n e r s " : [ { " t y p e " : " s h e l l " , " i n l i n e " : [ " e c h o ' I c a n c h a i n P r o v i s i o n e r s ' " ] } , { " t y p e " : " s a l t - m a s t e r l e s s " , " b o o t s t r a p _ a r g s " : " g i t v 0 . 1 6 . 0 " , " l o c a l _ s t a t e _ t r e e " : " p a t h / t o / s t a t e s " , " l o c a l _ p i l l a r _ r o o t s " : " p a t h / t o / p i l l a r " } ] }
  16. What to use where There is no rules. They all

    can play well together (with a shoehorn)