This document compares configuration management tools Puppet, Ansible, and Chef. It discusses their approaches, languages, stored data formats, use of agents, and provides examples of configuration in each. Chef uses Ruby and JSON files, supports hierarchical execution and searching, and can run with or without a server. Puppet uses Ruby, YAML files and dependency-based configuration. Ansible is agentless and uses YAML files and Python plugins.