Ansible – Components of Ansible (Part-2)

Components of Ansible

  1. Executables
  2. Modules
  3. Plugins
  4. Config file

1. Executables

Description:

  • These are the command-line tools that come with Ansible. They are used to perform various operations like running playbooks, managing inventory, and gathering facts about systems.

Key Executables:

  • ansible: Used to run a single task on a specified group of hosts.
$ ansible all -m ping

This command pings all hosts in the inventory to check connectivity.

ansible-playbook: Used to run playbooks, which are YAML files containing a list of tasks to be executed on the hosts.

$ ansible-playbook site.yml
  • This command runs the site.yml playbook.
  • ansible-galaxy: Used to manage Ansible roles, which are pre-packaged units of automation.
$ ansible-galaxy install geerlingguy.apache
  • This command installs the Apache role from Ansible Galaxy.

  • ansible-inventory: Used to display or manage the inventory, which is a list of hosts Ansible manages.
$ ansible-inventory --list
  • This command lists all the hosts and groups in the inventory.

2. Modules

Description:

  • Modules are the units of work that get executed by Ansible on the remote hosts. They can manage system resources like packages, files, and services.

Examples of Common Modules:

  • ansible.builtin.ping: Tests connectivity to the remote host.
- name: Ping the remote host
  ansible.builtin.ping:

ansible.builtin.yum: Manages packages on Red Hat-based systems.

- name: Install a package
  ansible.builtin.yum:
    name: httpd
    state: present

ansible.builtin.service: Manages services on the remote host.

- name: Ensure a service is running
  ansible.builtin.service:
    name: httpd
    state: started

ansible.builtin.copy: Copies files to remote hosts.

- name: Copy a file to the remote host
  ansible.builtin.copy:
    src: /local/path/to/file
    dest: /remote/path/to/file

3. Plugins

Description:

  • Plugins extend the core functionality of Ansible. They can be used for various purposes such as enhancing the execution of modules, providing additional functionality, and managing connections.

Types of Plugins:

  • Callback Plugins: Modify the way Ansible outputs information.
  • Connection Plugins: Manage communication between Ansible and the remote hosts (e.g., SSH, WinRM).
  • Lookup Plugins: Retrieve data from external sources (e.g., environment variables, files).
  • Filter Plugins: Transform data within playbooks.
  • Action Plugins: Modify the way actions are executed.

Example of a Filter Plugin:

  • json_query: Used to filter JSON data within a playbook
- name: Extract specific data from JSON
  ansible.builtin.debug:
    msg: "{{ some_json_variable | json_query('some.query.expression') }}"

4. Config file

Description:

  • The Ansible configuration file (ansible.cfg) is used to configure settings and behaviors for Ansible. It can be located in several places, including the current directory, the home directory, or /etc/ansible.

Example Configuration File (ansible.cfg):

[defaults]
inventory = ./inventory
remote_user = ansible
host_key_checking = False
retry_files_enabled = False

[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False
  • inventory: Specifies the path to the inventory file.
  • remote_user: Sets the default remote user for connections.
  • host_key_checking: Disables host key checking.
  • retry_files_enabled: Disables the creation of retry files.
  • become: Enables privilege escalation.
  • become_method: Sets the method for privilege escalation (e.g., sudo).
  • become_user: Specifies the user to become.
  • become_ask_pass: Disables the prompt for the privilege escalation password.

Conclusion

Ansible’s components include executables, modules, plugins, and the configuration file. Executables are command-line tools for running tasks and managing inventory. Modules are units of work executed on remote hosts. Plugins extend Ansible’s functionality, and the configuration file sets various operational parameters. Each component plays a crucial role in making Ansible a powerful and flexible automation tool.

Related Posts

Ansible Terminology

Here are simplified one-line explanations for key Ansible terminology: Mohammad Gufran Jahangir

Read More

Ansible interview questions that are commonly asked in interviews

Basic Questions Intermediate Questions How does Ansible handle authentication? What is the purpose of ansible.cfg? What are handlers in Ansible? What is Ansible Galaxy? Explain the difference…

Read More

Ansible Playbook for Patching & Upgrading Different Services

Playbook for Patching & Upgrading Linux APP Servers reating an Ansible playbook for patching and upgrading Linux application servers involves several steps. Below is a detailed playbook,…

Read More

Ansible – Vault in Ansible (Part-11)

What is Ansible Vault? Ansible Vault is a feature within Ansible that allows you to keep sensitive data, such as passwords, keys, and other secrets, secure. Vault…

Read More

Ansible – Inventory variables in Ansible (Part-11)

What are Inventory Variables in Ansible? Inventory variables in Ansible are key-value pairs that provide additional context and configuration for hosts and groups defined in your inventory….

Read More

Ansible – How Default Ansible Variables Work (Part-10)

How Default Variables Work 1.Default Variables in a Role Default variables for a role are defined in the defaults/main.yml file. These variables provide baseline values that the…

Read More
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x