Table of Contents
Automation plays a crucial role in IT companies. Ever increasing complexity in IT environments which often require maintenance, monitoring, updates, up scaling, day to day administration tasks which would otherwise require a large and skilled team to manage and quite daunting. Keeping everything up to date manually is a burden with automation. Complex and repetitive tasks can be simplified and allow developers, operations teams and system administrators to manage redundant tasks in a more efficient way while focusing on tasks which add value to business.
In today’s article we would venture more in detail about one such tool which helps in automation of complex tasks – Ansible, we would learn about its architecture, how it works and use cases and so on.
What is Ansible?
In the year 2015, world leading open-source software provider Red Hat Inc. acquired Ansible, a software automation platform which is a configuration and orchestration tool. It is used for a variety of tasks by administrators in configuration management, cloud provisioning, application deployment, intra-service orchestration, patch updates on endpoints and servers, and almost everything an administrator does as a part of its day-to-day operations.
Ansible does not depend on any agent installation or no additional custom security infrastructure. It uses straightforward YAML language to describe automation jobs which makes it easy to use.
Features of Ansible
- Configuration management is simpler , reliable and consistent .
- Let you quickly deploy multi tier applications .
- It uses automated workflows, provisioning, and makes orchestration task easier and once infrastructure is defined using a playbook same playbook can be used to deploy same orchestration wherever required.
- Site wide security policies can be deployed along with other automated processes.
- Let you provision cloud platforms , virtualized hosts, network devices and bare metal servers.
Use cases
- Provisioning cloud infrastructures
- Setup virtual private networks
- Setup auto scaling policies
- Security tasks automation
- Deployment of multi-tier applications
- Automation of configuration tasks
- Infrastructure automation
- Container automation within Ansible
Ansible Architecture & Working
Ansible works by connecting to the server using SSH and thereby pushing small programs, known as Ansible modules onto it. Ansible playbooks are used to automate tasks using YAML code.
Let’s have a look at Ansible architecture and it’s working more in detail.
1. Inventories
Ansible inventories are lists of hosts and IP addresses, servers and databases, templates and tasks which are to be managed via an SSH for UNIX, Linux, or networking devices, and WinRM for Windows systems.
2. Application programming interfaces (APIs)
APIs or application programming interfaces are used as a mode of transport over public and private cloud services.
3. Modules
Modules can be executed directly on remote hosts using Ansible playbooks and can control resources like services, packages, files or execute system commands. They act on system files, installation of packages and make API calls to service networks. There are over 450 ansible modules which automate various tasks in an environment such as cloud modules to create or delete an AWS cloud formation stack. Modules allow direct interaction with clouds like AWS or on premises resources like Hyper-V.
4. Plugins
Plugins are pieces of code that augment Ansible core functionalities and allow execution of Ansible tasks as job build steps. Ansible ships with several ready to use plugins and one can write its own plugin.
5. Networking
Ansible makes use of simple , powerful agent less automation framework to automate network tasks, it uses separate data module and spans across several different network hardware.
6. Hosts
Hosts are nodes or systems which are object of automation by Ansible.
7. Playbooks
Playbooks are simple files in YAML language format to describe tasks to be executed by Ansible. Playbooks can declare configurations, orchestrate steps of any manual process and can launch various tasks.
8. CMDB (Configuration Management Database)
CMBD is a configuration management database which holds data and it is a repository or data warehouse where all kinds of data is stored along with its relationship between assets.
9. Cloud
Network of remote servers hosted on the Internet for storing, managing, and processing data. Everything from servers, desktop computers to network configurations and applications can be stored in Public/Private cloud.
Quick facts !
Ansible has 47.91% market share in the configuration market.