Debakar Roy

Day 16: Introduction to configuration management

1 min read

Now it’s time for configuration management.

What is configuration management?

Configuration management is the practice of systematically defining, organizing, and maintaining the configuration of systems, servers, and applications. The goal: machines set up the same way across environments, reproducibly rather than by hand. Configuration management tools automate deployment and system setup, reducing human error and keeping environments consistent and reliable.

Why it matters

  • Consistency: identically configured systems mean fewer surprises, less downtime.
  • Efficiency: automation removes repetitive manual work so the team can focus elsewhere.
  • Scalability: new machines inherit the same configuration instead of being hand-built.
  • Compliance: managed, auditable configuration helps meet security and regulatory requirements.

Tooling

A quick look at the popular options, each installing and starting an Apache server:

Ansible

An open-source, agentless automation tool. Tasks are defined in human-readable YAML, and no software needs to be pre-installed on managed hosts.

---
- name: Install and configure Apache
  hosts: webservers
  become: true
  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present

    - name: Start and enable Apache
      service:
        name: apache2
        state: started
        enabled: true

Puppet

An open-source tool using a declarative language to describe the desired system state. It follows an agent–master architecture: agents on managed nodes pull configuration from a central Puppet server.

package { 'apache2':
  ensure => installed,
}

service { 'apache2':
  ensure => running,
  enable => true,
}

Chef

An open-source tool using a Ruby-based DSL to define the desired state. It follows a client–server architecture, with a central Chef server distributing cookbooks to managed nodes.

package 'apache2' do
  action :install
end

service 'apache2' do
  action [:enable, :start]
end