Operations 5 min read

Master Automated Linux Deployments with Ansible: Step‑by‑Step Guide

This guide walks you through installing Ansible on Linux, configuring inventory and settings, writing playbooks to install and start web servers, and executing them, while also covering variables, roles, templates, handlers, conditionals, and error handling for robust automated deployments.

Raymond Ops
Raymond Ops
Raymond Ops
Master Automated Linux Deployments with Ansible: Step‑by‑Step Guide

Using Ansible on Linux enables efficient, flexible automation of deployment, configuration, and management through simple YAML playbooks.

1. Install Ansible

On Debian/Ubuntu:

<code>sudo apt update
sudo apt install ansible</code>

On RPM‑based systems (CentOS, RHEL):

<code>sudo yum install epel-release
sudo yum install ansible</code>

2. Configure Ansible

Inventory file : default location

/etc/ansible/hosts

. Example:

ansible.cfg (optional) : located at

/etc/ansible/ansible.cfg

, used to adjust defaults such as SSH parameters.

3. Create a Playbook

A playbook is a YAML file that defines tasks. Example that installs and starts a web server on both Debian‑based and RedHat‑based hosts:

<code>---
- name: Deploy web server
  hosts: webservers
  become: yes

  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present
      when: ansible_os_family == 'Debian'

    - name: Install httpd
      yum:
        name: httpd
        state: present
      when: ansible_os_family == 'RedHat'

    - name: Start Apache/httpd service
      service:
        name: "{{ 'apache2' if ansible_os_family == 'Debian' else 'httpd' }}"
        state: started
        enabled: yes</code>

4. Run the Playbook

Execute with the

ansible-playbook

command, e.g.:

<code>ansible-playbook web-deploy.yml</code>

5. Manage Variables, Roles, and Templates

Variables : defined in playbooks, inventory, or separate variable files for customization.

Roles : collections of tasks, variables, and files that promote reuse and organization.

Templates : Jinja2 templates generate configuration files with dynamic values.

6. Advanced Features

Handlers : run only when a task changes state, such as restarting a service.

Conditional execution : use

when

statements to run tasks based on facts.

Error handling : employ

ignore_errors

and

rescue

blocks to control failures.

By following these steps you can automate simple software installations to complex multi‑stage deployments with Ansible, and later explore dynamic inventories, secret management, and Ansible Tower for even greater efficiency.

AutomationDeploymentConfiguration ManagementLinuxAnsibleplaybook
Raymond Ops
Written by

Raymond Ops

Linux ops automation, cloud-native, Kubernetes, SRE, DevOps, Python, Golang and related tech discussions.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.