$30 off During Our Annual Pro Sale. View Details »

Habitat - Learning from Configuration Management

Habitat - Learning from Configuration Management

Habitat is a new approach to automation that focuses on the application instead of the infrastructure it runs on. This talk explores some of the lessons learned from configuration management that helped influence the design of Habitat.

This talk was given by Nathen Harvey and Matt Ray at the Austin DevOps Meetup.

http://www.meetup.com/austin-devops/events/231889101/

Nathen Harvey

June 16, 2016
Tweet

More Decks by Nathen Harvey

Other Decks in Technology

Transcript

  1. Learning from Configuration Management Nathen Harvey Austin DevOps Meetup &

    June 16, 2016
  2. Nathen Harvey VP Community Development Chef Software, Inc. @nathenharvey Your

    Picture Goes Here
  3. Configuration Management

  4. Configuration Management Tools • CFEngine • Puppet • Chef •

    SaltStack • Ansible • Consul
  5. None
  6. None
  7. Things that could be better... Centralization

  8. Immutable Infrastructure Things that could be better...

  9. Things that could be better... Hidden Dependencies

  10. Things that could be better... Orchestration

  11. What we really want Choreography

  12. Things that could be better... Application Release Patterns

  13. Things that could be better... Toolchains

  14. What would it look like … if we built for

    choreography instead of orchestration?
  15. What would it look like

  16. What would it look like if we built • …

    for large distributed systems that are topology aware? • … a way to run immutable systems with flexibility and ease? • … a way to strip out hidden dependencies? • … a simplified toolchain?
  17. 18

  18. Config Management isn’t dead!

  19. 20

  20. Habitat Components

  21. Habitat Components • Habitat Studio - an application packager

  22. Habitat Components • Habitat Studio - an application packager •

    Habitat Plans - instructions to download, compile, and install
  23. Habitat Components • Habitat Studio - an application packager •

    Habitat Plans - instructions to download, compile, and install • Habitat Depot - a place to upload and download your app packages
  24. Habitat Components • Habitat Studio - an application packager •

    Habitat Plans - instructions to download, compile, and install • Habitat Depot - a place to upload and download your app packages • Habitat Supervisor - an intelligent runtime with deployment coordination and service discovery built in
  25. None
  26. Package Format (.hart) Plan Artifact Depot Bare Metal Containers AMI

    VM 1. Packaging an application starts with a plan. A Plan is as simple to create as a Dockerfile 2. Start by launching the isolated Build environment called a “Studio” a. Enter the studio (hab-studio enter) b. Define your Plan (vim plan.sh) to define the software build from source using standard BASH c. Define the Configuration template for the software, using Mustache (logic-less scripting language) d. Define the Configuration defaults, using TOML (configuration language) e. Define Hooks for supervisor behavior: initializing, running, defining a health check, etc f. Create Signing Keys for your Origin (hab origin key generate myOrigin) g. Build your Artifact (build myOrigin/myPlan) 3. Post-process Artifact for target environments: Docker, Rocket, CloudFoundry, Mesos, Kubernetes, etc... 4. Run and test Artifact (docker run -ti myOrigin/myPlan) Habitat Workflow
  27. Depot Artifact Supervisor: An Intelligent Run-Time Supervisor w/ REST API

    (hab-sup) Supervisor Supervisor Supervisor Supervisor Ring Leader Initializer Stand Alone • Part of an Artifact, the Supervisor manages Application node behavior at runtime, providing automation and intelligence: ◦ Utilizes predefined Plan to manage application behavior ◦ Built in service discovery ◦ Self-organizes with other Supervisor nodes on a Ring into topologies ◦ Rings have no single point of failure • Supervisor executes a variety of hooks for defined behavior: ◦ Init, run, health_check, reconfigure, file_update • Supervisor is accessible via REST API: ◦ /config, /health, /status, /gossip, /census, /election Habitat Technology
  28. Security & Management Secret Payloads Service Service Service Service Pub

    Key Symmetric Encryption Service Service Service Service Load Balancer • Enterprise-grade security allows for secure runtime management of configurations and payloads ◦ Encrypted, authenticated run-time configuration ◦ Automatic, safe, atomic software updates based upon policy (example: Blue/green deployments) ◦ Dynamic topology updates ◦ Handles inter-service discovery through binding 29 Habitat Technology
  29. Habitat Technology Plan Artifact Depot Build Service Supervisor Supervisor Supervisor

    Supervisor Ring Bare Metal Containers AMI VM Depot Build Service & Workflow Package Format Artifact Distribution Server Artifact Distribution Server Intelligent Run-Time Supervisor w/REST API Source Code Repo
  30. • Applications run as distributed, fully automated, and capable autonomous

    actors • Immutable applications, but flexible and easy to manage because automation travels with the application • Bundles what your apps need to run and nothing else • Embedded automation choreographs application cluster topology/behavior • A network with no reliance on external services and no single-point-of-failure • Provides continuous deployment without traditional Application Release Automation (ARA) tooling The solution is the same: • For new and legacy applications • No matter the application runtime environment Habitat’s approach
  31. “Cloud Native” is a code-word for “Rewrite it all”

  32. Habitat Application automation that enables modern application teams to build,

    deploy, and manage any application in any environment - from traditional data-centers to containerized microservices.
  33. > Operating System centric; application automation becomes complex > Focused

    on integrated SDKs; “Cloud Native” rewrites > Building tools around applications; pushing in the old direction > Focuses on the grid as the unit of automation; apps must be specialized > Focuses on the container as the unit of automation; apps are opaque. Wait, doesn’t X do that?
  34. We believe that all applications can be autonomous across any

    platform Plan Collaborate Inspect Build
  35. 36 Live Demo

  36. Try Habitat for yourself • https://www.habitat.sh/try • Tutorials • Getting

    started guide • Extensive documentation • Open Source! – https://github.com/habitat-sh/habitat Thank you! Q&A
  37. 38