Ansible Workflow

Ansible Workflow: It works on the principle of passing small packets or blocks of the program to the nodes for connection. These small programs are known as "Ansible modules." After the execution of these programs, the requirement of these modules ends up, and hence they are removed.  There is no need for servers or databases because the modules can stay on any machine or system. They make things more convenient.

Ansible Workflow

In the given diagram, as you can see, the root node or the brain node is controlling the sub-nodes such as playbook, which itself is a large node having a lot of workloads requires continuous execution of nodes.

On the other hand, in the inventory file, the ansible modules run regularly due to the simultaneous working of the host. But the main thing is how these components are connected through ssh keys, which not only connect and execute the services of ansible module on the host machines but also help in the installation of software on the host machine.

It works so effectively as when the modules are used, and they are removed without leaving a sign of execution or presence. It follows a straightforward path at the time of executing information, installing software, followed by removing those modules at the end, which get copied into the host system.

Its wide range of connectivity makes it more flexible and agile to connect with N numbers of systems representing a host.

Now Ansible has a particular module that is the "authorized key" module, which gives control to both machines and hosts of what they can access.

Following are some of the ssh commands:

ssh-agent bash
ssh-add~/.ssh/id_rsa

For the addition of new machines, no extra SSL signing servers are present; that's why sometimes a particular machine cannot connect due to some DNS and NTP issues. A plain text inventory is so simple to create and easy to understand, as shown below:

[webservers]
 www1.example10.com
 www2.example11.com
 [dbservers]  <-(database server)
 Db10.xyz.com 
Ansible Workflow

After entering the command cd /etc/ansible, write the host file name and press enter.

Ansible Workflow

From the example-2 given in the above image, you can see the collection of database servers in ‘dbservers’ as well as a simple text inventory having two devices configured with it. 

Oncethe hosts are listed by Db11.xyz.com (a type of database server) in inventory files, variables got assigned to the hosts in simple text format.

We can perform a parallel task by using ad hoc. as no extra setup is required; you can instantly use it as shown below:

ansible all -m ping
ansible hello.example1.com -m yum -a “name=httpd state=installed”
ansible hello.example2.com -a “/usr/sbin/reboot” 

Ansible contains over 750 built-in-modules in its library.

Playbooks are the most important and exciting part of Ansible as it provides so much detailing in situations where you have to deal with multiple machine tasks. A playbook has a very simple structure, as you can see below:

---                                                                                                                                      
 Hosts: webservers
     roles:
 -common
 -webapp
 -website
 . 
 .
 .

________________________________________________________________________

For creating a playbook, you have to write the command "nano playbook," as shown in the given image.

Ansible Workflow

With the help of the above-given structure, we will now write the playbook, followed by adding some tasks and roles as per the requirements. Next, we will save the playbook with the yml extension as playbook1.yml.

Ansible Workflow

Similarly, in the same manner, it can have many simultaneous tasks that can be handled flawlessly.

Also, we can configure an application using it, which we will learn in this tutorial's upcoming topics.

This is just a teaser. There is a lot of things that you can do besides these mentioned tasks; for example, you can monitor windows, you can set some variables, and prompt them for others. By observing the output of one statement, you can opt whether you want to execute another one or not. Here one server knows the IP address of others; after collecting information from those, the master host can dynamically configure other servers.

It has no limit as Ansible modules can be written in any other language. Since it is an emerging python-based language, it is preferred more than any other language to write Ansible modules, due to the simplicity of python language and its large programming community, help programmers while dealing with errors. It's not stereotypical, or it doesn’t sound strict with one connection type such as SSH, you can use various python APIs to extend ansible connection types.