Bob Automates Linux Administration with Ansible on AlmaLinux

Master Linux automation with Ansible by streamlining repetitive tasks like configuration management, software deployment, and system updates.

Bob’s next goal was to master Linux automation with Ansible. By streamlining repetitive tasks like configuration management, software deployment, and system updates, he aimed to improve efficiency and eliminate manual errors in system administration.

“Automation is the secret to scaling up—time to let Ansible handle the heavy lifting!” Bob said, diving into his next challenge.


Chapter Outline: “Bob Automates Linux Administration with Ansible”

  1. Introduction: Why Use Ansible for Automation?

    • Overview of Ansible and its key benefits.
    • Use cases for Ansible in Linux administration.
  2. Setting Up Ansible on AlmaLinux

    • Installing and configuring Ansible.
    • Setting up an inventory of managed nodes.
  3. Running Basic Ansible Commands

    • Executing ad-hoc tasks.
    • Using Ansible modules for common operations.
  4. Creating and Using Ansible Playbooks

    • Writing YAML playbooks for automation.
    • Deploying applications and configurations.
  5. Managing Complex Deployments

    • Organizing roles and variables.
    • Using Ansible Galaxy for reusable roles.
  6. Securing Ansible Automation

    • Managing secrets with Ansible Vault.
    • Ensuring secure communication with SSH.
  7. Conclusion: Bob Reflects on Automation Mastery


Part 1: Why Use Ansible for Automation?

Bob learned that Ansible is an agentless automation tool that uses SSH to manage remote systems. Its human-readable YAML syntax makes it accessible for beginners while remaining powerful for advanced tasks.

Key Benefits of Ansible

  • Simplifies repetitive tasks like updates and deployments.
  • Ensures consistency across systems.
  • Scales easily to manage hundreds of nodes.

“Ansible makes automation simple and scalable—perfect for my systems!” Bob said.


Part 2: Setting Up Ansible on AlmaLinux

Step 1: Installing Ansible

  • Install Ansible from the EPEL repository:

    sudo dnf install -y epel-release
    sudo dnf install -y ansible
    
  • Verify the installation:

    ansible --version
    

Step 2: Setting Up an Inventory

  • Create an inventory file:

    nano /etc/ansible/hosts
    

    Add:

    [webservers]
    web1 ansible_host=192.168.1.101
    web2 ansible_host=192.168.1.102
    
    [databases]
    db1 ansible_host=192.168.1.201
    
  • Test connectivity:

    ansible all -m ping
    

“Ansible is now ready to manage my systems!” Bob said.


Part 3: Running Basic Ansible Commands

Step 1: Executing Ad-Hoc Tasks

  • Check uptime on all nodes:

    ansible all -a "uptime"
    
  • Restart a service:

    ansible webservers -b -m service -a "name=httpd state=restarted"
    

Step 2: Using Ansible Modules

  • Create a directory:

    ansible webservers -m file -a "path=/var/www/html/myapp state=directory"
    
  • Copy a file:

    ansible databases -m copy -a "src=/etc/my.cnf dest=/etc/my.cnf.backup"
    

“Ad-hoc commands handle quick fixes across my network!” Bob noted.


Part 4: Creating and Using Ansible Playbooks

Step 1: Writing a YAML Playbook

  • Create a playbook for deploying a web application:

    ---
    - name: Deploy Web Application
      hosts: webservers
      become: yes
      tasks:
        - name: Install Apache
          yum:
            name: httpd
            state: present
    
        - name: Start Apache
          service:
            name: httpd
            state: started
    
        - name: Deploy Website
          copy:
            src: /home/bob/mywebsite/index.html
            dest: /var/www/html/index.html
    
  • Save the file as deploy.yml.

Step 2: Running the Playbook

  • Execute the playbook:

    ansible-playbook deploy.yml
    

“Playbooks automate complex workflows in just a few lines of code!” Bob said.


Part 5: Managing Complex Deployments

Step 1: Organizing Roles and Variables

  • Create a role structure:

    ansible-galaxy init webserver
    
  • Define variables in roles/webserver/vars/main.yml:

    http_port: 80
    
  • Use the variable in a task:

    - name: Configure Apache
      template:
        src: httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
    

Step 2: Using Ansible Galaxy

  • Install a community role:

    ansible-galaxy install geerlingguy.mysql
    
  • Use the role in a playbook:

    - name: Install MySQL
      hosts: databases
      roles:
        - geerlingguy.mysql
    

“Roles make large deployments modular and reusable!” Bob said.


Part 6: Securing Ansible Automation

Step 1: Managing Secrets with Ansible Vault

  • Create a vaulted file:

    ansible-vault create secrets.yml
    
  • Encrypt variables:

    db_password: my_secure_password
    
  • Use the vaulted file in a playbook:

    ansible-playbook --ask-vault-pass deploy.yml
    

Step 2: Securing Communication

  • Use SSH keys for Ansible:

    ssh-keygen -t rsa
    ssh-copy-id user@managed-node
    

“Ansible Vault and SSH ensure secure automation workflows!” Bob noted.


Conclusion: Bob Reflects on Automation Mastery

Bob successfully automated Linux administration with Ansible, handling tasks like system updates, application deployment, and configuration management. By creating secure, reusable playbooks, he saved time and improved consistency across his systems.

Next, Bob plans to explore Advanced Shell Scripting in AlmaLinux, diving deeper into scripting for powerful automation.