Introduction to Ansible
In this blog Introduction to Ansible you will learn about the main components on Ansible.
What is Ansible?
Ansible is an open-source IT Configuration Management, Deployment & Orchestration tool. It aims to provide large productivity gains to a wide variety of automation challenges. This tool is very simple to use yet powerful enough to automate complex multi-tier IT application environments. Simple, powerful, and agentless IT automation that anyone can use. It uses SSH to connect to servers and run the configured Tasks. Ansible lets you control and configure nodes from a single machine. The project was found in 2013 and bought by Red Hat in 2015.
No Agent- As long as the box can be ssh’d into and it has python, it can be configured with Ansible. Idempotent- Ansible’s whole architecture is structured around the concept of idempotency. The core idea here is that you only do things if they are needed and that things are repeatable without side effects. Declarative Not Procedural- Other configuration tools tend to be procedural do this and then do that and so on. Ansible works by you writing a description of the state of the machine that you want and then it takes steps to fulfill that description.
Tiny Learning Curve- Ansible is quite easy to learn. It doesn’t require any extra knowledge.
Ansible Use Cases:
- Configuration Management
- App Deployment
- Continuous Delivery
- Security & Compliance
Architecture of Ansible:
Playbooks in Ansible?
- Plain-text YAML files that describe the desired state of something
- Human and Machine-readable
- Can be used to build the entire application environment
Inventories in Ansible?
- Static lines of servers
- Dynamic list of servers: AWS, Azure, GCP, etc.
- Other custom things
Modules in Ansible?
- Over 1000 modules provided by Ansible to automate
- Modules are like plugins that do the actual work in Ansible, they are what gets executed in each playbook task.
- Each module is mostly standalone and can be written in a standard scripting language (such as Python, Perl, Ruby, Bash, etc.)
What are roles in Ansible?
- Roles are a way to group tasks together into one container. We could have a role for setting up MySQL, another one for configuring ip tables.
- Roles make it easy to configure hosts. Any role can be performed on any host or group of hosts such as:
– hosts: all
Variables in Ansible?
There are many different ways to source variables:
- Inventories (group vars, host vars)
- Command-line Discovered Variables
- Ansible Tower
How to Run the Ansible Commands?
Ad-Hoc: Ansible <inventory> -m
AD-HOC Commands Examples:
Transferring file to many servers/machines
$ Ansible abc -m copy -a “src = /etc/yum.conf dest = /tmp/yum.conf“
Creating new directory
$ Ansible abc -m file -a “dest = /path/user1/new mode = 777 owner = user1 group = user1 state = directory“
Deleting whole directory and files
$ Ansible abc -m file -a “dest = /path/user1/new state = absent”
Ansible Tower is a GUI and REST interface for Ansible that supercharges it by adding RBAC, centralized logging, auto-scaling/provisioning call-backs, graphical inventory editing, and more.
This command line tool sends commands to the Tower API. It is capable of retrieving, creating, modifying, and deleting most resources within Tower.
A few potential uses include:
- Launching playbook runs (for instance, from Jenkins, TeamCity, Bamboo, etc.)
- Checking on job statuses
- Rapidly creating objects like organizations, users, teams, and more.
For any query related to Ansible comment below or contact us