Core Concepts of Ansible
Introduction
Ansible is an open-source automation tool that streamlines the process of managing and configuring systems. It uses a declarative language to describe system configurations, supports orchestration and provisioning, and is agentless, which simplifies deployment.
Key Concepts
- Playbooks: YAML files that define the desired state of a system.
- Inventory: A file that lists the managed nodes.
- Modules: Reusable scripts that Ansible executes on target nodes.
- Roles: A way of organizing playbooks and related files into reusable components.
Installation
To install Ansible, you can use pip, the Python package manager:
pip install ansible
Alternatively, you can use your system's package manager:
sudo apt-get install ansible # For Debian/Ubuntu
sudo yum install ansible # For RHEL/CentOS
Architecture
Ansible operates in a masterless architecture, where the control machine communicates directly with the managed nodes over SSH:
graph TD;
A[Control Machine] -->|SSH| B[Managed Node 1];
A -->|SSH| C[Managed Node 2];
A -->|SSH| D[Managed Node 3];
Playbooks
Playbooks are the heart of Ansible's configuration management. They are written in YAML and can include multiple plays:
- hosts: webservers
tasks:
- name: Install nginx
apt:
name: nginx
state: present
- name: Start nginx
service:
name: nginx
state: started
Inventory
Ansible uses an inventory file to define the managed hosts. The inventory can be static or dynamic:
[webservers]
server1.example.com
server2.example.com
Roles
Roles allow you to group tasks, handlers, variables, and files. They help in organizing your playbooks:
roles/
├── webserver/
│ ├── tasks/
│ ├── handlers/
│ ├── files/
│ ├── templates/
│ └── vars/
FAQ
What is Ansible?
Ansible is an IT automation tool that simplifies the management and configuration of servers through a declarative language.
How does Ansible connect to managed nodes?
Ansible connects to nodes via SSH without requiring an agent installed on the managed hosts.
What language is used for writing playbooks?
Playbooks are written in YAML, a human-readable data serialization format.