Skip to main content
Ansible is an open-source automation tool that simplifies IT automation, configuration management, and application deployment. It is agentless, meaning it does not require any special software to be installed on the managed nodes. Instead, it uses SSH to connect to the managed nodes and execute tasks on them. It is written in Python and uses YAML for its playbooks.
Full reference documentation is available at docs.ansible.com.

The problem Ansible solves

Without automation, managing many servers is tedious and error-prone. The two scenarios below illustrate the difference.
Imagine you have 10 servers and you need to install Git on all of them. You would SSH into each server individually and run the install command:
ssh user@server1 "sudo apt update && sudo apt install git -y"
ssh user@server2 "sudo apt update && sudo apt install git -y"
ssh user@server3 "sudo apt update && sudo apt install git -y"
ssh user@server4 "sudo apt update && sudo apt install git -y"
ssh user@server5 "sudo apt update && sudo apt install git -y"
ssh user@server6 "sudo apt update && sudo apt install git -y"
ssh user@server7 "sudo apt update && sudo apt install git -y"
ssh user@server8 "sudo apt update && sudo apt install git -y"
ssh user@server9 "sudo apt update && sudo apt install git -y"
ssh user@server10 "sudo apt update && sudo apt install git -y"
This is tedious and time-consuming. With 100 servers, the risk of human error increases significantly.

Another example: adding a user

The same pattern applies to any repetitive task, such as creating a new user across your fleet.
ssh user@server1
sudo adduser newuser
With Ansible you define the desired state of your infrastructure. Ansible figures out what needs to change to reach that state, and skips servers that are already correct.

Build docs developers (and LLMs) love