HTTPD Service is not Idempotent in Nature — Make it using Ansible

Yash Hirulkar
4 min readDec 30, 2020

--

Agenda of this article:

HTTP Services is not idempotent in nature and also consume more resources suggest a way to rectify this challenge in Ansible Playbook.

What is Ansible?

Ansible is an open-source automation tool or platform used for in It sector for tasks such as configuration management, application deployment, orchestration, provisioning . Ansible is agentless, temporarily connecting remotely via SSH to do its tasks.

What is Apache Web Server?

Apache is an open-source and free web server software that powers around 40% of websites around the world. The official name is Apache HTTP Server, and it’s maintained and developed by the Apache Software Foundation.

What is Idempotence nature of ansible?

In general, idempotence is “the property of certain operations in mathematics and computer science that can be applied multiple times without changing the result beyond the initial application.

Hence, the principle that enables Ansible to be declarative and yet reliable is Idempotence.

Pre-requisits for this task:

Two RedHat Linux virtual machines on your system (Yum Configured).
1. Controller Node
2. Managed Node

Lets start the task:

  1. To check the Ansible version in Controller Node:

2. Ansible has the entry of target nodes in its Inventory file:

3. Command to re-check the number of Target Nodes in the inventory file:

4. Command to check the connection with Managed Nodes :

5. Now, our system is Configured.

We use YAML language to write plays in Ansible Playbook.

The Playbook we are going to use to configure HTTPD Web-server is as follows:

Here, as you can see in this Playbook I have used Handlers keyword before Service Module.

What are Handers?

Handlers are just like normal tasks in Ansible Playbook but they execute only when the task contains notify directive. It indicates that something has been changed in the task.

So, after starting the HTTP services once, if we try to restart the HTTP services without modifying the Index file of Web Server, services will not be restarted.

HTTP service will be restarted only when index file is modified. This saves the Server from restarting again and again and also saves Resources.

6. Now, lets start the services:

Now, as you can see Web Server has been configured successfully..!

Now, If we try to restart the HTTP services again, Handlers will not execute and hence services will not be restarted as the index file of the Server has not been modified.

Now, lets modify the index file of the Web Server before restarting services.

Re-starting HTTP services:

Now, as you can see HTTP service has been restarted as the index file was modified.

Hence, It proves that HTTP service can be made Idempotent in nature using Handlers in Ansible.

Thank you..!

Hope you learnt something new :)

--

--