In the rapidly evolving world of DevOps, automation is the key to efficiency, consistency, and scalability. Ansible, an open-source automation tool, has emerged as a powerful solution for automating IT tasks such as configuration management, application deployment, and orchestration. This guide will walk you through the essentials of Ansible, from installation to practical usage in DevOps workflows, including a hands-on example of installing MariaDB using an Ansible playbook.

Understanding Ansible: A Powerful Automation Tool for DevOps

Ansible is a simple yet robust automation tool designed for DevOps professionals. It operates without agents, requiring no software installed on its managed nodes. Ansible uses SSH (Secure Shell) to communicate with servers, making it secure and easy to deploy. Its playbooks in YAML provide an easy-to-read structure that can automate complex tasks.

The Advantages of Ansible in DevOps Workflows

Ansible offers several advantages that make it an ideal choice for DevOps automation:

  • Simplicity: Ansible’s playbooks are easy to write and understand, even for those new to automation.
  • Agentless Architecture: No need to install agents on remote nodes, reducing complexity and overhead.
  • Idempotency: Ensures that a task, once completed, doesn’t need to be repeated unless necessary, saving time and resources.
  • Extensibility: Ansible’s modules can be extended or customized to meet specific needs, making them highly adaptable.

Installing Ansible on Debian/Ubuntu and RedHat/Rocky/CentOS

On Debian/Ubuntu:

sudo apt update

sudo apt install ansible

On RedHat/Rocky/CentOS:

sudo yum install epel-release

sudo yum install ansible

This straightforward installation process makes Ansible accessible across various Linux distributions.

Configuring Ansible SSH Key for Secure Remote Access

For Ansible to securely communicate with your remote servers, you must configure SSH keys.

  1. Generate SSH Key:

    ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
  1. Copy SSH Key to Remote Server:

    ssh-copy-id user@remote_host

This configuration ensures secure, password-less SSH access for Ansible to execute commands on remote servers.

Creating an Ansible Inventory File for Managing Target Servers

An inventory file is crucial for managing and grouping your target servers. Here’s an example of a basic inventory file:

[webservers]

web1 ansible_host=192.168.1.10 ansible_user=root

web2 ansible_host=192.168.1.11 ansible_user=root

[dbservers]

db1 ansible_host=192.168.1.20 ansible_user=root

This inventory allows you to efficiently define groups, assign variables, and manage multiple servers.

Essential Ansible Commands and Usage Examples

Here are some key Ansible commands that you’ll find indispensable:

Ping all hosts:

ansible all -m ping

Run a command on a specific group:

ansible webservers -a “/bin/echo hello”

Check playbook syntax:

ansible-playbook playbook.yml –syntax-check

These commands provide the tools to interact with and manage your infrastructure effectively.

Illustrative Example: Installing MariaDB using Ansible Playbook

Let’s create a simple Ansible playbook to install MariaDB on a server.

Playbook: install_mariadb.yml

– hosts: dbservers

  become: yes

  tasks:

    – name: Install MariaDB

      yum:

        name: mariadb-server

        state: present

    – name: Start and enable MariaDB service

      systemd:

        name: mariadb

        state: started

        enabled: yes

    – name: Secure MariaDB installation

      command: mysql_secure_installation

      args:

        creates: /var/lib/mysql/.mysql_secure_installation

Executing the Ansible Playbook for MariaDB Installation

Once the playbook is ready, you can execute it with the following command:

ansible-playbook -i inventory install_mariadb.yml

This command will install MariaDB on all servers listed under the dbservers group in your inventory file.

Conclusion

Ansible is a versatile and powerful tool for automating DevOps workflows. Its simplicity and the ability to manage complex environments make it an essential tool for any DevOps engineer. Following this guide, you should understand Ansible’s capabilities and how to leverage them in your projects. From installing Ansible to executing playbooks, each step is designed to make your automation process smoother and more efficient.

References

Red Hat Ansible Automation Platform Subscription on AWS

Walkthrough: Creating associations that run Ansible playbooks