Chef é uma plataforma de Infrastructure as Code (IaC) que automatiza a configuração, implantação e gerenciamento de servidores por meio de código declarativo escrito em uma DSL baseada em Ruby. Criada em 2009 pela Chef Software e hoje mantida pela Progress Software (como Progress Chef), a ferramenta transforma a infraestrutura em artefatos versionáveis, testáveis e reutilizáveis.
Como funciona o Chef?
O Chef adota o modelo pull: cada nó gerenciado executa um agent (Chef Client / Chef Infra Client) que se conecta periodicamente ao Chef Server, baixa o run-list aplicável e converge a máquina para o estado desejado. O desenvolvedor edita cookbooks na Chef Workstation, envia (com o comando knife upload) para o servidor central e cada nó aplica a configuração de forma idempotente.
Arquitetura do Chef
- Chef Workstation: ambiente do desenvolvedor onde recipes e cookbooks são criados e testados (inclui knife, Test Kitchen e InSpec).
- Chef Server: central que armazena cookbooks, atributos, policies e metadados dos nós.
- Chef Client (Chef Infra Client): agent instalado em cada nó gerenciado, responsável por aplicar as receitas.
- Chef Zero / Chef Solo: modos sem servidor para pequenas implantações ou testes locais.
Recipes e Cookbooks
A recipe é um arquivo Ruby (.rb) que descreve, de forma declarativa, os recursos (resources) desejados — pacotes, serviços, arquivos, templates, usuários. O cookbook é o pacote que agrupa recipes, templates ERB, atributos, metadata e testes. O Chef Supermarket é o repositório público oficial de cookbooks compartilhados pela comunidade.
Linguagem e idempotência
Os recursos do Chef são declarativos: você descreve o estado desejado (por exemplo, package ‘nginx’ do action :install end) e o engine se encarrega de garantir a convergência. Guards como not_if e only_if e o mecanismo notifies permitem controlar execuções condicionais, tornando as receitas idempotentes — podem rodar várias vezes sem alterar o resultado final.
Para que serve o Chef?
O Chef é usado para gerenciar grandes frotas de servidores Linux e Windows, aplicar padrões de hardening, garantir compliance contínuo e integrar infraestrutura ao fluxo CI/CD. Segundo o State of DevOps Report (2024), equipes que adotam IaC em larga escala reduzem em até 60% o tempo de provisionamento de novos ambientes.
Exemplos de uso
- Bancos e seguradoras com milhares de nós Linux regulados por PCI-DSS.
- Datacenters híbridos (on-premises + cloud) onde o Terraform cuida da camada de provisionamento e o Chef da configuração.
- SaaS B2B que precisa manter paridade entre ambientes de dev, staging e produção.
Chef vs Ansible, Puppet e Terraform
O Chef compete diretamente com Puppet (também pull-based, baseado em DSL própria) e Ansible (push-based, agentless, YAML). O Terraform, por sua vez, não concorre: foca em provisionamento de recursos em nuvem (criar VMs, VPCs, buckets), enquanto o Chef cuida da configuração interna da máquina. É comum combiná-los.
Ecossistema Progress Chef
- Chef InSpec: framework de compliance como código para auditar servidores contra benchmarks CIS, PCI-DSS e HIPAA.
- Chef Habitat: automação de aplicações empacotadas de forma portátil.
- Chef Automate: painel central de observabilidade, compliance e deployment contínuo.
Quando escolher Chef
Escolha Chef quando o time tiver proficiência em Ruby, operar datacenters híbridos de grande porte ou precisar de compliance contínuo auditável. Para times pequenos ou cloud-native puro, Ansible ou Terraform costumam ser mais ágeis.
Leia mais no blog
Para um mergulho completo em Chef — recipes, cookbooks, arquitetura client-server e comparação detalhada com Ansible, Puppet e Terraform — leia o artigo completo no blog da Shiftmind.


