Chef is an infrastructure-as-code framework that automates how servers are configured and kept in the desired state across fleets. You describe system intent in Ruby-based “recipes” and “cookbooks” made of resources (packages, files, services, users, registries, and more) that converge idempotently, so repeated runs only change what’s necessary. Its client regularly gathers system facts, evaluates policy, and enforces drift correction, which makes environments reproducible from bare metal to cloud instances and containers. Chef’s ecosystem includes roles, environments, and Policyfiles to scope configuration for different stages and teams, plus handlers and notifications for operational visibility. It integrates with secrets stores, package managers, and service managers on Linux and Windows, while custom resources let you encapsulate domain-specific logic cleanly.
Features
- Write infrastructure configurations as code using recipes and cookbooks (declare resources to ensure system state)
- Mode flexibility: client-server or standalone “chef-solo” for smaller or more isolated environments
- Support for a wide variety of platforms and operating systems for managed nodes, including Windows, various Linux distros, macOS, etc.
- Integration with cloud providers for provisioning (AWS, Azure, etc.), automating deployments and configuration in those environments
- System for managing dependencies, versioning of cookbooks, testing tools (Test Kitchen etc.)
- Compliance, audit, drift detection (detect when systems diverge from desired configuration)