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.
Ansible
Terms:
- Controller Machine: The machine where Ansible is installed,
responsible for running the provisioning on the servers you are managing.
- Inventory: The
“inventory” is a configuration file where you define the host information.
In the above /etc/ansible/hosts example, we declared two servers under
test-hosts.
- Playbook: In
most cases – especially in enterprise environments – you should use
Ansible playbooks. A playbook is where you define how to apply policies,
declare configurations, orchestrate steps and launch tasks either
synchronously or asynchronously on your servers. Each playbook is composed
of one or more “plays”. Playbooks are normally maintained and managed in a
version control system like Git. They are expressed in YAML (Yet Another Markup Language).
- Task: A
block that defines a single procedure to be executed, e.g. Install a
package.
- Module: A
module typically abstracts a system task, like dealing with packages or
creating and changing files. Ansible has a multitude of built-in modules,
but you can also create custom ones.
- Role: A
role is the Ansible way of bundling automation content and making it
reusable. Roles are organizational components that can be assigned to a
set of hosts to organize tasks. Therefore, instead of creating a
monolithic playbook, we can create multiple roles, with each role assigned
to complete a unit of work. For example: a webserver role can be defined
to install Apache and Varnish on a specified group of servers.
- Play: A
provisioning executed from start to finish is called a play. In
simple words, execution of a playbook is called a play.
- Facts:
Global variables containing information about the system, like network
interfaces or operating system.
- Handlers: Handlers
are similar to tasks except that a handler will be executed only when it
is called by an event. For example, a handler that will start the httpd
service after a task installed httpd. The handler is called by the
[notify] directive. Important: the name of the notify directive and the
handler must be the same.
- Templates: Templates files are based on
Python’s Jinja2 template engine and have a .j2 extension. You can, if you
need, place contents of your index.html file into a template file. But the
real power of these files comes when you use variables. You can use
Ansible’s [facts] and even call custom variables in these template files.
- Variables: As the name suggests, you can include custom-made
variables in your playbooks. Variables can be defined in five different
ways:
1. Variables defined in the play
under vars_files attribute:
vars_files:
- "/path/to/var/file"
2. Variables defined in <role>/vars/apache-install.yml
3. Variables passed through the command line:
ansible-playbook apache-install.yml -e "http-port=80"
4. Variables defined in the play under vars
vars: http_port: 80
5. Variables defined in group_vars/ directory
vars_files:
- "/path/to/var/file"
2. Variables defined in <role>/vars/apache-install.yml
3. Variables passed through the command line:
ansible-playbook apache-install.yml -e "http-port=80"
4. Variables defined in the play under vars
vars: http_port: 80
5. Variables defined in group_vars/ directory
Ansible is a helpful tool that allows you to create
groups of machines, describe how these machines should be configured or what
actions should be taken on them. Ansible issues all commands from a central
location to perform these tasks.
No other
client software is installed on the node machines. It uses SSH to connect to
the nodes. Ansible only needs to be installed on the control machine (the
machine from which you will be running commands) which can even be your laptop.
It is a simple solution to a complicated problem.
Advantages Of Using Ansible
Simple: Ansible uses a simple syntax
written in YAML called playbooks. YAML is a human-readable data serialization
language. It is extraordinarily simple. So, no special coding skills are
required and even people in your IT organization, who do not know what is
Ansible can likely read a playbook and understand what is happening. Ansible
always executes tasks in order.
Agentless: Finally, Ansible is
completely agentless. There are no agents/software or additional firewall
ports that you need to install on the client systems or hosts which
you want to automate. You do not have to separately set up a
management infrastructure which includes managing your entire systems, network
and storage. Ansible further reduces the effort required for your team to start
automating right away.
Powerful & Flexible: Ansible
has powerful features that can enable you to model even the most complex IT
workflows. In this aspect, Ansible’s batteries
included approach (This philosophy means that
something is self-sufficient, comes out-of-the-box ready to use, with everything
that is needed) can manage the infrastructure, networks, operating systems
and services that you are already using, as Ansible provides you with hundreds
of modules to manage them. Together Ansible’s capabilities allow you to
orchestrate the entire application environment regardless of where it is
deployed.
Efficient: No extra software on your
servers means more resources for your applications. Also, since Ansible modules
work via JSON, Ansible is extensible with modules written in a programming
language you already know. Ansible introduces modules as basic building blocks
for your software. So, you can even customize it as per your needs. For e.g. If
you have an existing message sending module which sends messages in plain-text,
and you want to send images too, you can add image sending features on top of
it.
very useful and valuable information.
ReplyDeleteand also we are providing E-Learning Portal Videos for students and working Professionals
Hurry Up! Bag All Courses in Rs - 10000 /- + taxes
41 Career building courses.
Designed by 33 industrial experts
600+ hours of video Content
DevOps and Cloud E-Learning Portal