Friday, March 21, 2025

Ansible Modules | Overview.

Ansible Modules - Overview.

Focus:

    • Tailored for:
      • Devop, 
      • DevSecOps,
      • Cloud Engineers.

Breakdown:

  • Intro,
  • Key Aspects of Ansible modules,
  • The Concept:  Ansible Modules,
  • Types of Ansible Modules (scripts),
  • Key Features of Ansible Modules (scripts),
  • Sample of  Ansible Modules (scripts) in a Playbook,
  • Popular Ansible Modules (scripts),
  • Using Ansible Modules in DevOps,
  • Insights.

Intro:

    • Ansible modules are scripts (small programs) usually written in Python, that perform specific tasks or actions on managed hosts, APIs, or the local machine. 
    • Ansible modules are the building blocks of Ansible automation and are called directly within playbooks to execute tasks
    • In DevOps, Ansible is a popular open-source automation tool used for configuration management, application deployment, and task automation.
    • One of the key components that make Ansible powerful is its modules. 
    • Ansible modules are reusable, standalone units of code (scripts or playbooks)  that perform specific tasks, such as installing software, managing services, or configuring systems.

Key Aspects of Ansible modules
Functionality:
    •  Each module is designed to perform a single, atomic task, such as managing users (ansible.builtin.user), copying files (ansible.builtin.copy), or managing lines in a text file (ansible.builtin.lineinfile).
Execution:
    •  When a playbook runs, Ansible executes the module on the target host, and once the task is complete, the module exits.
Idempotency:
    •  Many modules are designed to be idempotent, meaning they ensure the system is in a desired state without making changes if the state is already correct. 
    • This simplifies automation by preventing unintended modifications on repeated runs.
Collections:
    • Modules are organized into collections. Modules in ansible-core use the ansible.builtin identifier (e.g., ansible.builtin.debug). Many others are available through Ansible Galaxy.
Documentation:
    •  twtech can learn about available modules and their options using the command line tool ansible-doc or by consulting the official Ansible documentation.
Custom Development:
    •  If a built-in or community module does not meet specific needs, developers can write their own custom modules, typically in Python. 
    • In essence, playbooks define the automation workflow, while modules are the tools that carry out the actual work

The Concept:  Ansible Modules

    • Ansible modules are scripts that define a specific task or action that Ansible can execute. 
    • Ansible modules provide the actual functionality and are the building blocks of Ansible playbooks (which define a set of tasks to be run on managed hosts). 
    • Ansible modules allow twtech to automate complex tasks across its infrastructure in a simple, idempotent, and declarative way.
    • Each Ansible module is designed to perform a specific task and returns a standardized output.
    • Modules (scripts) are written in various programming languages like Python, but they abstract away the complexity, making them simple to use without requiring deep programming knowledge.

Types of Ansible Modules

  • There are many types of Ansible modules/
  •  Each  module is designed to handle different tasks in twtech DevOps workflow. 
  • Some key categories include:

  1. System Modules:
    • Used to manage system configurations, packages, users, services, and more.
    • Example modules: user, package, service, file, group, cron.
  2. Cloud Modules:
    • These modules allow twtech to manage cloud resources across various cloud providers like AWS, …
    • Example modules: ec2
  3. Network Modules:
    • Used to configure and manage network devices, such as routers, switches, firewalls, and load balancers.
    • Example modules: ios_config, nxos_config, juniper_junos.
  4. Database Modules:
    • Manage databases, users, permissions, and other database-related tasks.
    • Example modules: mongodb_user, mysql_db, postgresql_user.
  5. Security Modules:
    • These modules are designed for managing security-related tasks, such as handling SSH keys, configuring firewalls, or managing encryption.
    • Example modules: firewalld, authorized_key, ufw.
  6. Deployment Modules:
    • Focus on tasks related to application deployment and orchestration.
    • Example modules: git, docker_container, k8s, template.
  7. Monitoring and Logging Modules:
    • Used to configure and interact with monitoring tools, log aggregation systems, and notification services.
    • Example modules: cloudwatch, slack, syslog.

Key Features of Ansible Modules (scripts)

Idempotency:
    • Ansible modules are idempotent, meaning that running the same task multiple times will not cause any unintended side effects if the task’s desired state has already been achieved. 
    • For example, if a package is already installed, Ansible won’t reinstall it.
Declarative Nature:
    •  twtech describe the desired state of the system, and Ansible modules automatically determine the necessary actions to bring the system into that state.
Cross-Platform:
    • Many modules are designed to work on different platforms, like Linux, Windows, macOS, or cloud providers, making Ansible highly versatile in managing a diverse infrastructure.
Simplified Syntax:
    •  Modules are designed to be easy to use. Most modules follow a simple key-value argument pattern, making them user-friendly and easy to integrate into playbooks.
Standardized Output:
    • Modules produce a consistent output format (success, failed, changed, skipped) that helps in troubleshooting and logging.

Sample of  Ansible Modules (scripts) in a Playbook

    • Here’s a simple example of an Ansible playbook using modules to install Apache on a target machine and ensure the service is running:

# installapche.yaml
---
- name: Install Apache and start the service
  hosts: twtech-webservers
  become: yes
  tasks:
    - name: Install Apache package
      ansible.builtin.yum:
        name: httpd
        state: present
    - name: Start the Apache service
      ansible.builtin.service:
        name: httpd
        state: started
        enabled: yes

# In this playbook:

    • The yum module is used to install the Apache package (httpd).
    • The service module is used to start the Apache service and ensure it starts on boot.

Popular Ansible Modules (scripts)

    1. ansible.builtin.yum: Manages packages using the yum package manager (for RedHat-based systems).
    2. ansible.builtin.apt: Manages packages using the apt package manager (for Debian-based systems).
    3. ansible.builtin.service: Manages services (start, stop, restart, enable, disable).
    4. ansible.builtin.file: Manages files and directories (permissions, ownership, etc.).
    5. ansible.builtin.user: Manages users and groups on the system.
    6. ansible.builtin.docker_container: Manages Docker containers.
    7. ansible.builtin.git: Manages Git repositories (clone, pull, checkout).

Using Ansible Modules in DevOps

    • Ansible modules are widely used in DevOps to automate repetitive tasks, configure infrastructure, manage cloud environments, and ensure consistency across environments

Some Ansible use cases in DevOps include:

Infrastructure as Code (IaC):
    •  Ansible modules help define infrastructure and configurations as code, enabling version control and reproducibility.
Configuration Management:
    • Modules ensure that systems are configured correctly and consistently.
Automated Deployments:
    • Using modules like docker_container or k8s, you can automate application deployments in containers or Kubernetes clusters.
Provisioning Cloud Resources:
    • Modules for EC(AWS) allow for the automatic provisioning of virtual machines and other cloud resources in the server (Host).
Managing Security
    • : Security modules help automate tasks such as firewall configuration, SSH key management, and user access control.

twtech insights:

    •  Ansible modules are a powerful feature of Ansible that help:
      • Automate tasks, 
      • Ensuring that twtech infrastructure is consistently configured, 
      • And its applications are deployed efficiently in a DevOps pipeline.





No comments:

Post a Comment

Amazon EventBridge | Overview.

Amazon EventBridge - Overview. Scope: Intro, Core Concepts, Key Benefits, Link to official documentation, What EventBridge  Really  Is (Deep...