Application Definition, Packaging and Delivery Automation for Diverse Environments
Chef® Habitat® is an open source solution that provides automation capabilities for defining, packaging and delivering applications to almost any environment regardless of operating system or deployment platform. Habitat enables DevOps and application teams to:
- Build continuous delivery pipelines across all applications and all change events
- Create artifacts that can be deployed on-demand to bare-metal, VMs or containers without any rewriting or refactoring
- Scale the adoption of agile delivery practices across development and operations
Jeff Moody, DevOps Manager, Intelligent Retail Lab by Walmart
Chef Habitat Key Benefits
Standardize application packaging and deployment practices across a wide range of systems.
Eliminate thousands of hours of developers individually configuring and scripting local test environments.
Simplify release and runtime processes and enable fully automated releases and the ability to rollback releases when needed.
Operationalize Agility with Sustainable Application Runbook Automation
Chef Habitat is a patented automation tool that enables companies to apply a consistent approach to application definition, packaging and delivery across all applications and environments. Scaling continuous delivery requires consistent patterns that are not tool or platform specific. By applying an as-code approach to application definition and packaging Chef is able to free application teams from the trappings of underlying tooling and platforms. For organizations looking to scale continuous delivery across all their applications and platforms Chef Habitat is the clear choice.
Overview of How Chef Habitat Works
The Chef Habitat Studio is a development kit for creating automated build and deployment plans for any application and then testing them in a clean-room environment.
- Define how your application is built, installed, and run with PowerShell or Bash and your code editor of choice.
- Isolate dependencies into atomic plans and then build an Application Manifest which links to all direct & transitive runtime dependencies and provides tuneable instructions to install and run the app.
- Leverage hundreds of pre-built plans for common dependencies such as .NET, jdk or gcc on the Chef Habitat community on GitHub.
Habitat packages the Application Manifest into an immutable artifact called the Habitat Application Artifact (.HART) file. Artifacts can be exported to run in a variety of runtimes with zero refactoring or rewriting.
- Create a package in the local Studio or integrate with any automated pipeline solution using the same commands and build processes.
- Simplify audit and compliance processes by explicitly defining application dependencies and packaging an application with only what is required.
- Easily export to tarball, Docker, or directly to container registries (Azure Container Registry, Amazon Elastic Container Registry, or Docker Hub).
The Habitat Supervisor is a light-weight agent that runs on/in a server, virtual machine, or container and manages the application according to the instructions defined in the Habitat Plan. Tasks are defined via pre-set scripts called lifecycle hooks that are included as part of the application definition.
- Deploy and upgrade an application to any environment on-demand.
- Automate health and compliance checks.
- Templatize your configuration settings and update them as needed during runtime.
Chef Habitat Delivers Consistency via Code
Chef Habitat explicitly models, defines and isolates dependencies as code and stores them in a common codebase along with the application binaries. By identifying and defining everything an application needs to be built, run and maintained as part of the development phase, failure identification is shifted-left from run-time to build-time. Chef Habitat then validates through each stage of the delivery pipeline that what was defined, packaged and configured is delivered successfully. Delivery teams can be confident that what they build, deploy and manage will behave consistently in any runtime environment.
Chef Habitat Use Cases
Deploy to Docker, containers, AWS ECR, Kubernetes, virtual machines, and more. All from a single build artifact.
Eliminate brittle build processes and enable self-service for all developers.
Accelerate the adoption of containers and cloud platforms by eliminating run-time errors caused by missing dependencies.
Enable continuous delivery across all teams, all change events and all environments.
Eliminate delivery failures, accelerate deployment frequency and drive business agility to the edge.
Align Dev, Ops and Security teams with a common tool set for delivering applications.
Cloud-Native Application Automation
Define and build microservice based applications that are easy to version and maintain.
COTS and Middleware Automation
Simplify delivery and maintenance of SQL, RabbitMQ and thousands of other applications.
Legacy Application Automation
Automate the delivery of legacy applications and run them wherever you want without rewriting or refactoring.
Chef Habitat Core Features
Strict Application Definitions for Failure Free Deployments
Chef Habitat gives application teams complete control of every dependency running within their environment. Each dependency is defined and stored as an independent and reusable object. This ensures consistency and that you don’t have the lingering “drift” problem that is common in organizations scaling agile development practice, container deployments and/or running multiple operating systems.
Pre-Built Content and a Robust Open Source User Community to Jump Start Adoption
Chef Habitat is 100% open source and users have access to hundreds of pre-built plans to get up and running quickly. These include common application dependencies such as .NET, jdk or gcc, utilities like Maven, Gradle, or NuGet, and middleware like Tomcat, HAProxy, or Memcached. Additionally, Chef Habitat supports scaffolding for languages like Ruby, Go, and Node.JS to further ease the build and install process.
Clean Rooms for Clean Builds
The Chef Habitat Studio is a development kit for creating automated build and deployment plans for any application and then testing them in a clean-room environment. This enables application teams to “shift-left” more testing into the build state. The Habitat Studio creates a localized and isolated clean room that separates the build environment from all other tools and applications running on the user’s machine. If a requirement or dependency is missing the build will then fail on the user’s machine. This ensures what is built and run in development will be exactly the same in production and eliminates the age-old “worked fine on my machine” excuse.
Single Artifacts for Simpler Pipelines
Chef Habitat packages the Application Manifest into an immutable artifact called the Habitat Application Artifact (.HART) file. By bundling dependencies, lifecycle events, and compiled code into a single artifact, Habitat greatly simplifies CI/CD pipelines in any environment by providing a single means to build or promote an app regardless of its language or target platform. Chef Habitat simplifies channel management, supports roll-backs, roll-forwards and multiple deployment patterns (Canary, Blue/Green, All At Once, or Feature Flag).
Universal Application Packages for Multi-Modal Delivery
Chef Habitat artifacts can be easily exported to run in a variety of runtimes. Available export formats include tarball, Docker, or directly to container registries (Azure Container Registry, Amazon Elastic Container Registry, or Docker Hub).
Advanced Run-Time Features for Layered Applications
The Habitat Supervisor is a light-weight agent that runs on/in a server, virtual machine, or container and manages the application according to the instructions defined in the Habitat Plan. Tasks are defined via pre-set scripts called lifecycle hooks that are included as part of the application definition. Lifecycle hooks can also be used to program the supervisor for advanced capabilities including dynamic service bindings, clustering topologies, service discovery, health status and many other capabilities - this enables DevOps teams to apply the same modern application management best practices they use for cloud-native applications to layered/SOA based applications.