Ansible Oneshot

Tushar PantTushar Pant
4 min read

Introduction

What is Ansible?

Ansible is an open-source IT automation tool that enables configuration management, application deployment, and orchestration of services. Using simple YAML syntax, Ansible lets you automate complex tasks on multiple systems simultaneously with ease, making it a powerful tool for DevOps.

Why Use Ansible?

  • Agentless: Ansible doesn’t require an agent on the nodes, using SSH instead for communication.

  • Simple Configuration: Playbooks, written in YAML, are easy to read and learn.

  • Scalable: Ansible can manage thousands of nodes with minimal setup.

  • Idempotent: Tasks can be run repeatedly without altering the system beyond the intended state.

Prerequisites

Before starting with Ansible, ensure you have:

  • A basic understanding of Linux and SSH.

  • Python installed (usually default on most Linux distributions).

  • Access to a remote server for testing (optional).


Getting Started Installation

To install Ansible on a Linux system, use:

sudo apt update
sudo apt install -y ansible

Or, install it using pip:

pip install ansible

Basic Commands

Once Ansible is installed, you can begin by using some basic commands:

  • ansible --version: Display the Ansible version.

  • ansible all -m ping: Test connectivity to all hosts in the inventory by sending a ping.


Understanding Ansible Concepts

  1. Inventory: An inventory file lists the servers that Ansible manages, organized by groups.

    Example inventory file:

     [webservers]
     192.168.1.10
     192.168.1.11
    
     [dbservers]
     192.168.1.20
    
  2. Modules: Ansible modules are reusable scripts that automate specific tasks. For example, the ping module tests server connectivity, and the yum module manages packages on Red Hat-based systems.

  3. Playbooks: Ansible playbooks are YAML files that define tasks for automated processes. Playbooks describe which tasks to run on which hosts and in which order.

    Example Playbook:

     ---
     - hosts: webservers
       tasks:
         - name: Install Nginx
           apt:
             name: nginx
             state: present
    

    Run the playbook with:

     ansible-playbook playbook.yml
    
  4. Working with Modules

    Here are some common Ansible modules to get started:

    1. Package Management: Install, remove, or update packages.

       - name: Install Apache
         apt:
           name: apache2
           state: present
      
    2. Service Management: Start, stop, or restart services.

       - name: Start Apache Service
         service:
           name: apache2
           state: started
      
    3. File Management: Create, modify, or delete files and directories.

       - name: Create a file
         file:
           path: /tmp/sample.txt
           state: touch
      
  5. Ad-Hoc Commands: Ad-hoc commands let you perform quick tasks without writing a playbook.

    Examples:

     ansible webservers -m ping
     ansible dbservers -a "df -h"
    
  6. Ansible Roles: Roles are a way to structure Ansible content by grouping related tasks, variables, files, and templates. Roles make it easy to reuse and share configurations.

    To create a role, use:

     ansible-galaxy init my_role
    

    In a playbook, you can call a role with:

     ---
     - hosts: all
       roles:
         - my_role
    
  7. Ansible Vault: Ansible Vault allows you to encrypt sensitive information in your playbooks and inventory files, such as passwords and API keys.

    To encrypt a file:

     ansible-vault encrypt secrets.yml
    

    To decrypt:

     ansible-vault decrypt secrets.yml
    

Best Practices

  • Use descriptive names for tasks and roles.

  • Use variable files to store environment-specific settings.

  • Test playbooks on staging servers before running on production.

  • Use Ansible Vault for sensitive data and credentials.


Ansible and Automation

Ansible can be integrated into CI/CD pipelines for continuous deployment and orchestration. Many organizations use Ansible alongside other tools like Jenkins, Docker, and Kubernetes to automate workflows.


Conclusion

Ansible is a flexible and powerful tool for automating system configurations and deployments. By learning the core concepts and following best practices, you can use Ansible to simplify infrastructure management and ensure consistent system states across multiple environments.

Key Takeaways:

  • Ansible provides automation without requiring agent installation.

  • The main building blocks of Ansible are inventories, playbooks, and modules.

  • Ad-hoc commands are useful for quick tasks, while playbooks and roles enable reusable automation.

  • Security and best practices help secure and streamline your Ansible setups.


This guide provides a solid foundation for getting started with Ansible and setting up basic configurations and automation tasks.

1
Subscribe to my newsletter

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

Written by

Tushar Pant
Tushar Pant