Chef is an open source configuration management tool that allows automation of infrastructure through code. It uses a "client-server" model where Chef clients on nodes connect to a Chef server to check their configuration state and apply any changes needed to ensure they match their defined state. Chef models infrastructure as "nodes" that can be configured through reusable "roles" and "recipes" made up of declarative "resources" that define what state a node or its components should be in. This allows automated deployment and management of servers through an infrastructure-as-code approach.