How to use ansible for server automation

April 11, 2025
3 min read
By Cojocaru David & ChatGPT

Table of Contents

This is a list of all the sections in this post. Click on any of them to jump to that section.

index

How to Use Ansible for Server Automation: A Step-by-Step Guide

Ansible simplifies server automation by allowing you to define tasks in easy-to-read YAML playbooks. Whether you need to deploy applications, manage configurations, or orchestrate workflows, Ansible’s agentless architecture and idempotent execution make it a top choice for DevOps teams. In this guide, you’ll learn how to install Ansible, write playbooks, and automate server tasks efficiently.


Why Ansible is the Best Tool for Server Automation

Ansible stands out for its simplicity, scalability, and powerful automation capabilities. Unlike other tools, it requires no agents—just SSH and YAML playbooks.

Key Features of Ansible

  • Agentless Design: Uses SSH for communication, reducing setup complexity.
  • Idempotency: Ensures tasks run only when needed, preventing redundant changes.
  • YAML Playbooks: Human-readable syntax for defining automation workflows.
  • Extensive Module Library: Supports cloud, networking, containers, and more.

“Automation is not about replacing humans; it’s about amplifying their potential.” — Unknown


Step 1: Installing and Configuring Ansible

Prerequisites

  • A Linux-based control node (e.g., Ubuntu, CentOS).
  • SSH access to managed servers.

Installation Steps

  1. Update Packages:

    sudo apt update  
  2. Install Ansible:

    sudo apt install ansible -y  
  3. Verify Installation:

    ansible --version  

Setting Up the Inventory File

The inventory file (/etc/ansible/hosts) lists your managed servers. Example:

[webservers]  
web1.example.com  
web2.example.com  
 
[dbservers]  
db1.example.com  

Step 2: Writing Your First Ansible Playbook

Let’s automate Nginx installation on a group of servers.

Example Playbook (nginx_install.yml)

---  
- name: Install and Start Nginx  
  hosts: webservers  
  become: yes  
  tasks:  
    - name: Install Nginx  
      apt:  
        name: nginx  
        state: present  
      notify: Start Nginx  
 
  handlers:  
    - name: Start Nginx  
      service:  
        name: nginx  
        state: started  

Running the Playbook

ansible-playbook nginx_install.yml  

Step 3: Essential Ansible Techniques

Ad-Hoc Commands

Execute one-off tasks without playbooks. Example:

ansible webservers -m apt -a "name=curl state=present" -b  

Variables and Templates

Use variables for dynamic configurations:

vars:  
  app_port: 8080  

Roles for Reusability

Organize playbooks into reusable roles:

ansible-galaxy init webserver_role  

Advanced Automation Strategies

Handlers for Conditional Actions

Restart services only when changes occur:

tasks:  
  - name: Update Config  
    template:  
      src: nginx.conf.j2  
      dest: /etc/nginx/nginx.conf  
    notify: Restart Nginx  
 
handlers:  
  - name: Restart Nginx  
    service:  
      name: nginx  
      state: restarted  

Dynamic Inventory

Auto-discover servers (e.g., AWS EC2):

ansible-inventory -i aws_ec2.yml --list  

Best Practices for Ansible Automation

  • Version Control: Track playbooks with Git.
  • Minimal Privileges: Use become sparingly.
  • Testing: Run --check mode before production.
  • Modularize: Break tasks into roles.
  • Secure Secrets: Encrypt sensitive data with Ansible Vault.

#Ansible #ServerAutomation #DevOps #InfrastructureAsCode