Ansible

Ansible is a configuration management system written in Python with the usage of the declarative markup language for the configuration description. This system is used to automate the process of setting and installing software. In the majority of cases, it's used with Linux-based nodes, but the system also supports Windows. The system supports network devices with Python 2.4 and higher onboard via SSH or WinRM connection.

See More!
Ansible

The platform was created by Michael DeHaan, who developed Cobbler system intended for the software deployment, as well as Func framework for the remote administration. Ansible is included in the majority of Linux distributives. There are special packages for Solaris, FreeBSD, and MacOS. Ansible Inc. was providing support and updates of Ansible until the day of October 16, 2015, when Red Hat Inc. announced the acquisition of Ansible Inc.

‘Ansible’ word is used to define an imaginary system of the immediate hyperspace connection. This system was described in ‘Ender’s Game’ by Orson Scott Card, while the name of the system was created by Ursula Kroeber Le Guin in her ‘Rocannon's World’ written in 1966.

In case if you don’t want to waste your precious time, scroll down the page, where you will find Ansible tutorial.

Architecture


Such solutions as Ansible, Chef, Puppet, and SaltStack are considered the most popular configuration management systems for Linux. The key difference of Ansible in comparison with other solutions is the fact the one doesn't have to install a client module or an agent to the target systems.

The user of Ansible has to create so-called playbooks in YAML format, thus describing required states of the managed system. A playbook is a thorough description of the state of the system resources required at the given moment in time. It includes the list of installed packages, running services, created files and many other parameters. Ansible checks if a specific resource has the required state, and tries to change it if it doesn't correspond with the requirements.

Ansible Architecture

There's a special system of modules used to perform the tasks. Each task contains the name, the module, and the list of the parameters, which define the task. Ansible supports variables, variable processing filters (by using Jinja2 library), predicted execution of the tasks, parallelizing, and the file templates. Addresses and the settings of the target systems can be found in the inventory files. The system supports grouping of the parameters. There's a system of roles, which can be used to perform a set of similar tasks.

Ansible Tower

Ansible Tower is a graphical interface that was developed to control and monitor Ansible. It was offered on the commercial basis, but the source code was published in 2017 after the acquisition of Ansible Inc. by RedHat. The new project was called AWX Project, and it's used as the foundation for the commercial version of Ansible Tower.

Ansible Tower.png

It offers the following functionality:

  • Visual status panel
  • Access lists, groups, and roles of the users
  • Centralized logging and audit of the system

Ansible tutorial


We kindly offer you to spend some of your time to watch the offered Ansible tutorial videos. We collected the most important and useful tutorials in one place!


Please start the educational process from the following Ansible tutorial for beginners:



Please check also these Ansible Playbook tutorial videos:

Ansible AWS tutorial (2 videos):

You can also open the Ansible tutorial PDF (click on it) in order to read it right away.

Modules


Here's the list of module categories and performed tasks:

  • Cloud: supports Amazon EC2/ECS/S3, Azure, Cloudstack, Digital Ocean, Docker, LXC, OpenStack, Rackspace, VMWare etc.
  • Clustering: supports Consul, ZooKeeper, Kubernetes.
  • Command: can be used to execute console commands and scripts.
  • Database: supports MySQL, PostgreSQL, Vertica, MongoDB, Redis, and Riak databases.
  • File: allows working with files (copy, sync, edit, check, archive etc.).
  • Inventory: allows working with hostnames or IP addresses.
  • Messaging: supports RabbitMQ.
  • Monitoring: supports DataDog, Nagios, Zabbix and other monitoring systems.
  • Network: allows working with network equipment and software via F5 BIG-IP, Cisco IOS/NXOS, Juniper JunOS, OpenSwitch, Cumulus Linux.
  • Notification: allows sending messages to Campfire, HipChat, Jabber, Pushbullet, Slack via email or SMS.
  • Packaging: allows working with package managers: apt, FreeBSD Ports, Gentoo, homebrew, pacman, opkg, Red Hat software channels, yum, xbps, and zypper.
  • Source Control: supports version control systems: git, mercurial, subversion.
  • System: allows working with Linux/Unix system components - cron, iptables, LVM, SELinux, sshd, zfs.
  • Utilities: implements the internal logic of the playbooks.
  • Web Infrastructure: allows working with Apache, Django, JBoss, JIRA.
  • Windows: supports Windows components, including IIS, Windows Firewall, and Windows Registry.

In case if you think that the information on this page is valuable and useful, we kindly ask you to share it with your friends on social networks!