What is Ansible

Ansible usage scenarios

In this blog post I try to give a short answer to the question "What is Ansible". Ansible is a powerful open source automation tool under Linux that can help administrators of Linux and Windows systems to accelerate and automate software distribution, configuration management, manual steps and routine or repetitive tasks.

Here are the typical areas of application:

  • automatic application delivery
  • automatic configuration
  • Orchestration
  • Security and Compliance
  • Deployment in the cloud

As we all know, if you were to manually configure multiple systems, you could never be sure that they are really configured the same way. Ansible guarantees an identical setup on every target system.

Ansible was launched as a project in 2012 and was taken over by RedHat in 2015, but it can run on all Linux distributions and will continue to be developed as an open source project.

Ansible architecture

Unlike most of its competitors, Ansible is agentless. No configuration steps are required on the Linux target systems, but WinRM must be activated and configured on the Windows target VMs with the following PowerShell script: ConfigureRemotingForAnsible.ps1

 

In general, Ansible consists of the following components:

  • Control node / controller
  • Inventories
  • Modules
  • Roles
  • Playbooks
  • API
  • Managed nodes / hosts / clients

Depending on the operating system, communication between the controller and the hosts takes place either via SSL (Linux and Unix) or WinRM (Windows). Ansible itself was written in Python.

Control node / controller

A controller is a central administrative unit that contains all the necessary components. Ansible initiates the connections to the hosts and sends the so-called "Ansible modules" to them. The modules are executed on the target system and then deleted.

Ansible can be installed on almost all Linux distributions. The only software requirement is a Python installation (Python 2, from version 2.6 or Python 3, from version 3.5.

The hardware requirements depend on the installation of the additional components, such as the Ansible Tower, as well as the intensity of use.

Managed nodes / hosts

As the name suggests, Managed Nodes are the units to be managed by Ansible. Ansible is able to manage the different servers / clients (Windows / Linux / Unix) and network components.

Inventory

Inventory is a .ini or YAML format file that contains a list of managed end systems (hosts). The most important information is the IP addresses and the host names. The hosts are grouped together for better manageability.

Example of an inventory file in ini format

[delivery controller]
  10.10.11.1
  10.10.11.2
[storefront-server]
  10.10.11.11
  10.10.11.12

Refer to the official documentation for a detailed description of the inventory files

Roles

The roles are often ready-made, downloadable components that are used to handle the various orchestration tasks. Automation tasks are provided. On Ansible Galaxy you will most likely find an existing role that you can use directly or use as an inspiration for your own configuration.

Several individual tasks can be combined into individual reusable roles in order to use them in different scenarios.

Modules

The modules are there to do the individual, specific, mostly recurring task (e.g. creating or copying files, installing, starting certain services). The models are a kind of building blocks that are combined with one another. The modules are carried out in a playbook or in a role.

Module Index - Ansible Documentation

Playbooks

Playbooks are a collection of individual modules / tasks / roles that are grouped together in a specific order. The playbooks contain the various tasks that describe a desired configuration. The playbooks are used both for configuration and for checking the configuration. For example, if you define an Ansible task to start a web server, the web server is started the first time it is run and the second only checks whether the web server is actually running.

The playbooks are created in the YAML language and can be put together with any complexity.

Ansible Tower / AWX

Ansible Tower / Ansible AWX are Apache-based websites that offer a GUI interface for Ansible and thus enable faster entry, since working with the command line is no longer required. Ansible Tower is chargeable and includes RedHat support. AWX is an open source based alternative.

 

Ansible for Citrix

As you can easily see, my site is very Citrix heavy. Ansible can offer visible added value in the area of ​​Citrix. The use of Ansible is particularly attractive for automating and managing the Citrix NetScaler infrastructure (regardless of the form factor).

Ansible for Citrix can take on a number of tasks, such as: creating and managing virtual servers, configuring and managing GSLB / content switching / session persistence. Ansible is integrated via the REST API (NITRO).

This document contains a detailed description of the solution and some configuration examples: White Paper | Automate NetScaler with Ansible

You can also find a full list of the modules at this link: https: //netscaler-ansible.readthedocs

Left: