Effortless is pattern to better manage Chef and Chef InSpec workloads using Chef Habitat.
-
Chef Infra - Chef Infra automates infrastructure configuration, ensuring every system is configured correctly and consistently.
-
Chef InSpec - Automate security tests, ensuring consistent standards are enforced in every environment, at every stage of development.
-
Chef Habitat - Codify how the application is built, how it runs, and all of its dependencies to free the app from underlying infrastructure and make updates easy.
-
Chef Automate - Enterprise dashboard and analytics tool enabling cross-team collaboration with actionable insights for configuration and compliance and an auditable history of changes to environments.
If you're already familiar with the Chef stack, here's a quick rundown of how Effortless works.
-
Effortless uses a build process to pull down all your cookbooks or profiles. The build creates a single, deployable package. For Chef Infra, it contains your cookbooks, an up-to-date Chef Infra client, and the latest best practices. For Chef InSpec, it contains your profiles, an up-to-date Chef InSpec client, and the latest best practices.
-
At runtime, Chef Infra works without Chef Infra Server. It uses Chef Solo mode.
-
At runtime, Chef InSpec works without pulling profiles from Chef Automate. All profiles, including those from Chef Automate, are vendored at build time.
-
Chef Habitat manages Chef Infra and Chef InSpec, and provides a pull-based update strategy for continuous delivery.
-
This workflow is a replacement for the environment and role cookbook patterns or Berkshelf way.
As of v0.26.0, the scaffolding-chef-infra has been updated to support Chef Infra Client 19:
| Change | Details |
|---|---|
| Ruby version (Linux/ARM) | core/ruby3_4 (was core/ruby31) |
| Ruby version (Windows) | core/ruby3_4-plus-devkit (was chef/ruby31-plus-devkit) |
| Habitat Builder channel | base-2025 (required for Chef 19 packages) |
| Platform | Architecture | Status |
|---|---|---|
| Linux | x86_64 | ✅ Certified |
| Linux | ARM | ✅ Certified |
| Windows | x86_64 | ✅ Certified |
| Windows | ARM | 🔄 In progress (CHEF-33898) |
| macOS | x86_64 | 🔄 In progress (CHEF-33898) |
| macOS | ARM | 🔄 In progress (CHEF-33898) |
If you are currently using the Effortless pattern with Chef 18, no changes to your user-facing plan.sh or plan.ps1 are required. The scaffolding automatically resolves the correct Ruby and Chef client versions. Simply update your pkg_scaffolding to pick up the latest chef/scaffolding-chef-infra from the base-2025 channel.
If you pin scaffold_chef_client explicitly, ensure it points to a Chef 19 package (e.g., chef/chef-infra-client/19.x.x).
Note: The scaffolding defaults
HAB_BLDR_CHANNELtobase-2025. You can override this per-package by settingscaffold_hab_bldr_channelin yourplan.sh/plan.ps1.
If you are new to the Effortless pattern checkout some of the below examples and walk throughs that will help you understand what you can do with this pattern.
