Ansible is open-source software, which creates platform for configuration management and the computer management. It combines multi-node deployment of software, configuration management and ad hoc performing tasks. Ansible uses SSH or PowerShell for the pc management in network. It has minimal demands on the installed software, for Linux nodes can manage with Python 2.4 or higher and nodes with MS Windows with PowerShell 3.0 or higher.
Ansible uses modules, which work with JSON and have standard output. They can be written in any programming language. YAML is used for reusable descriptions of states’ nodes.
Michael DeHaan is the author of Ansible, same as the author of provisioning server Cobbler for Linux and co-author of Func framework for distant administration. Ansible belongs to the Linux distribution Fedora, which is created by Red Hat company, it is also in a form of EPEL packages, i. e. Extra Packages for Enterprise Linux, available for Red Hat Enterprise Linux, CentOS, Scientific Linux and other operating systems.
Same as most of the systems for configuration management, Ansible can distinguish two different types of servers, control machine and nodes. Orchestration is controlled from one central or control machine, which uses SSH for the access to the manged nodes. Managed nodes are described to the control machine by the inventory.
Ansible uses modules for nodes orchestration. With the help of these modules the Ansible gets to the nodes and executes them using the SSH. These modules are then temporarily saved on nodes and communicate with control machine with the use of JSON protocol in a standard output. When Ansible doesn’t manage nodes anymore, it does not consume any resources, because on these managed nodes aren’t running any programs or demons.
Big part of often used systems for configuration management, as is Chef, Puppet or CFEngine, use agents. For these types of systems is needed to install demon on every node, which then communicates with control machine. Ansible uses architecture without agents, which brings lower network traffic, because individual nodes don’t communicate with the control machine independently.
Among design goals of Ansible can be classified: