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

Juju and Puppet - Rapid Harmonious Deployment

Marc Cluet
September 23, 2011

Juju and Puppet - Rapid Harmonious Deployment

Marc Cluet

September 23, 2011
Tweet

More Decks by Marc Cluet

Other Decks in Technology

Transcript

  1. 3 You've got the tools already • Hardware • Virtualization

    • Platform (OS) • Configuration Management • … need to tie that together into something whole.
  2. 6 Juju is DevOps distilled. Charms are a shareable, re-usable,

    and repeatable expressions of DevOps best practices. You can use them unmodified, or easily change and connect them to fit your needs. Deploying a formula is similar to installing a package on Ubuntu: ask for it and it’s there, remove it and it’s completely gone.
  3. 7 Juju is a community of DevOps expertise. Most of

    the application you want will be available in Juju. Juju provides direct and free access to a DevOps community- contributed collection of formulas
  4. 8 Juju provides service orchestration. Juju focuses on managing the

    service units you need to deliver a single solution, above simply configuring the machines or cloud instances needed to run them. Charms developed, tested, and deployed on your own hardware will operate the same in an EC2 API compatible cloud.
  5. 9 Juju is intelligent. Juju exposes re-usable service units and

    well-defined interfaces that allow you to quickly and organically adjust and scale solutions without repeating yourself.
  6. 10 Juju is easy. There’s no need to learn a

    domain specific language (DSL) to use Juju or create formulas. You can be up and running with your own formula in minutes.
  7. 12 Charms • Reusable, codified best-practice. • Distilled deployment expertise.

    • Communication via interfaces. • Doesn't require foreknowledge of who will use them or how
  8. 15 Relations • A high-level interface describing the interactions between

    services • Services have `provides` and `requires` interfaces • Juju models the relationship between services, not machines
  9. 17 Services Services change during their lifetime: • Number of

    instances? • Which machines they run on? • What services they depend on? • And how those services are implemented?
  10. 18 $ juju bootstrap $ juju deploy hadoop-master $ juju

    deploy hadoop-slave $ juju add-relation hadoop-master hadoop- slave $ juju add-unit hadoop-slave
  11. 19 $ juju bootstrap $ juju deploy hadoop-master $ juju

    deploy hadoop-slave $ juju add-relation hadoop-master hadoop- slave $ juju add-unit hadoop-slave $ juju add-unit hadoop-slave
  12. 20 $ juju bootstrap $ juju deploy hadoop-master $ juju

    deploy hadoop-slave $ juju add-relation hadoop-master hadoop- slave $ juju add-unit hadoop-slave $ juju add-unit hadoop-slave $ juju add-unit hadoop-slave
  13. 21 Presentation by B.Saller, N.Barcet Juju Juju treats individual services

    as atoms that are described as formulas and can be instantiated one or many times. Juju environment and dependency solver Cloud app Cloud app Cloud app
  14. 22 Presentation by B.Saller, N.Barcet Juju Each formula (or atom)

    define dependencies and/or provides. Cloud app Cloud app Cloud app Load Balancer HAProxy SQL Database MySQL Juju environment and dependency solver Depends Provides Provides Depends
  15. 23 Presentation by B.Saller, N.Barcet Juju Multiple formulas can provide

    the same service and can be easily switched. Cloud app Cloud app Cloud app Load Balancer HAProxy SQL Database MySQL Juju environment and dependency solver Depends Provides Provides Depends Varnish
  16. 24 Presentation by B.Saller, N.Barcet Juju Juju maintains the relations

    between the services so that you don't need to care about the elasticity of your environment. Relations are to formulas what bounds are to atoms. Services are loosely coupled but highly cohesive. Cloud app Cloud app Cloud app Varnish Varnish MySQL MySQL MySQL Juju Relation Juju environment and dependency solver Juju Relation
  17. 25 Presentation by B.Saller, N.Barcet Juju Cloud app Cloud app

    Cloud app Varnish MySQL MySQL Juju Relation Juju environment and dependency solver* Juju Relation *coming soon Juju maintains the relations between the services so that you don't need to care about the elasticity of your environment. Relations are to formulas what bounds are to atoms. Services are loosely coupled but highly cohesive.
  18. 27

  19. 29 Strong Points Juju • Linear deployment • Relationship bonding

    • High level scope • Deployment consistent Puppet • Rapid templating • Smart dependencies • Very good at low level • Continuous consistency
  20. 30 Weak Points Juju • Config Templating • Sync Puppet

    • High level dependencies • Async
  21. 31 Juju + Puppet • Best of both worlds! •

    Juju gives high level scope • Juju accepts charms in any language • Puppet is very good at system templating • We can use puppet DSL in charms
  22. 33 Presentation by B.Saller, N.Barcet Juju Juju environment and dependency

    solver Puppetmaster Hadoop-master Hadoop-slave Hadoop-slave Hadoop-slave Hadoop-slave Hadoop-slave Puppetmaster
  23. 35 Presentation by B.Saller, N.Barcet Juju Juju environment and dependency

    solver Puppetmaster Hadoop-master Hadoop-slave Hadoop-slave Hadoop-slave Hadoop-slave Hadoop-slave Puppetmaster + nginx Pupetmaster + nginx HA Proxy MySQL
  24. 37 Presentation by B.Saller, N.Barcet Juju Cloud app MySQL Juju

    Relation Juju environment and dependency solver Juju Relation Varnish Puppet Puppet Puppet
  25. • All development is public • Communication is open Join

    Us • IRC: #juju on irc.freenode.net • Launchpad: https://launchpad.net/juju • Web: https://juju.ubuntu.com/