Day 59 of 90 Days of DevOps Challenge: Introduction to Configuration Management and Ansible

Vaishnavi DVaishnavi D
4 min read

Over the past several days, I’ve built a solid foundation in Infrastructure as Code (IaC) using Terraform. Here's a quick summary of what I’ve covered:

  • Started with the basics of Terraform: providers, resources, variables, and outputs.

  • Designed reusable, modular infrastructure using root and child modules.

  • Learned how to manage multi-environment deployments using workspaces.

  • Handled lifecycle control using taint and replace for safe resource recreation.

  • Built environment-specific infrastructure with isolated state files using *.tfvars.

With Terraform, I now know how to provision and manage infrastructure automatically, but there’s still one major component left in the DevOps toolkit: Configuration Management.

Now that infrastructure provisioning is automated, the next step in my DevOps journey is learning how to configure and manage those machines efficiently. That’s where Ansible comes in.

Understanding Configuration Management

Configuration Management (CM) refers to the process of maintaining computer systems, servers, and software in a desired, consistent state. It includes tasks such as:

  • Installing required software packages on target systems

  • Applying operating system updates and security patches

  • Distributing configuration files and templates

  • Managing system services and user accounts

There are two primary approaches to configuration management:

  1. Manual Configuration Management
    This involves system administrators logging into each machine and performing changes manually. This process is time-consuming, repetitive, error-prone, and difficult to scale or audit. It often leads to configuration drift, where systems become inconsistent over time.

  2. Automated Configuration Management
    This approach uses automation tools to define system configurations as code and apply them across infrastructure in a consistent and repeatable way. Automation reduces human error, ensures uniform environments, and supports scalability.

To overcome the limitations of manual processes, automated configuration management has become a best practice in modern DevOps workflows.

Several tools exist in the market to automate system configuration:

  • Puppet – A mature configuration tool written in Ruby

  • Chef – Also Ruby-based, uses recipes and cookbooks to define configurations

  • Ansible – A newer, simpler tool that is agentless and uses YAML for configuration

While Puppet and Chef are powerful, they have steeper learning curves and require agents to be installed on target machines. In contrast, Ansible is currently one of the most popular tools due to its simplicity, flexibility, and agentless architecture.

What is Ansible?

Ansible is an open-source automation platform initially developed by Michael DeHaan and now maintained by Red Hat. It is written in Python and uses YAML to define automation tasks in files called Playbooks.

Ansible is widely adopted for its ease of use, extensibility, and suitability for managing both small-scale and enterprise-level infrastructure.

Key Characteristics of Ansible

  • Agentless Architecture: Ansible connects to target systems using SSH, so no additional software (agent) needs to be installed on managed machines.

  • Simple Syntax: Ansible playbooks are written in YAML, making them human-readable and easy to understand.

  • Idempotency: Ansible ensures that running the same playbook multiple times does not result in unintended changes.

  • Extensible Modules: A wide variety of built-in modules are available, and users can write their own custom modules in Python.

What Can Ansible Do?

Ansible can be used for a broad range of automation tasks in IT operations and DevOps pipelines, including but not limited to:

  1. Configuration Management

    • Installing software packages

    • Configuring system settings

    • Managing files, directories, and users

  2. Application Deployment

    • Deploying applications to servers

    • Managing application dependencies

    • Rolling updates and zero-downtime deployments

  3. Orchestration

    • Coordinating tasks across multiple servers in a defined order

    • Automating complex multi-tier deployments

  4. Provisioning and Integration

    • Integrating with tools like Terraform for full infrastructure + configuration automation

    • Preparing cloud or virtual machines with the necessary software and security configurations

Why Ansible is Essential in DevOps

In modern DevOps environments, speed, consistency, and automation are critical. Ansible plays a vital role in enabling:

  • Rapid provisioning of fully configured infrastructure

  • Elimination of manual configuration errors

  • Seamless integration into CI/CD pipelines

  • Consistent environments across development, staging, and production

By incorporating Ansible into a DevOps workflow, teams can achieve faster deployments, fewer production issues, and more predictable infrastructure behavior.

Final Thoughts

Today marks a significant transition point in my #90DaysOfDevOps journey — from infrastructure provisioning with Terraform to configuration automation with Ansible. Understanding the distinction and relationship between the two is crucial for building reliable and scalable systems.

Terraform lays the foundation by provisioning resources, and Ansible builds upon that by configuring those resources into usable environments. The combination of both tools forms a complete and powerful infrastructure automation strategy.

In the upcoming days, I will explore Ansible in more depth, starting with its architecture, inventory management, and writing basic playbooks to automate tasks on real machines.

Stay tuned for Day 60, where I begin implementing Ansible hands-on.

0
Subscribe to my newsletter

Read articles from Vaishnavi D directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Vaishnavi D
Vaishnavi D