Writing an Ansible-playbook to configure Haproxy and update the conf file dynamically
This article helps in how to configure the “proxy” server, update its conf file dynamically when a new “Apache” webserver is added into inventory.
🚧 Use Ansible playbook to Configure Reverse Proxy i.e. Haproxy and update its configuration file automatically each time a new Managed node (Configured With Apache Webserver) join the inventory
What is HAproxy server?
HAProxy is free, open-source software that provides a high availability load balancer and proxy server for TCP and HTTP-based applications that spreads requests across multiple servers.
It helps us in balancing the load, managing the backend applications when added into it.
Every time we launch a new webserver, we have to tell to haproxy that a new webserver has come up and you need to add it to the inventory. This can be time-consuming and error-prone.
To tackle this problem we can use the ansible inventory file. Every time we add a webserver we can just update the inventory file. Using the template file ansible will go to config file and update its inventory dynamically.
Now we know what is haproxy server, let's set up the server in one instance.
Inventory file of ansible
We can see we have two instances in the backend group, and one instance in the load balancer group. We use this inventory to update the config file of proxy.
Run the following command and update the last line as follows
copy config file to working folder,
cp /etc/haproxy/haproxy.cfg /ansible-ws/task-10
This will copy the file to the working folder,
Now we can use jinja language to help ansible know that they have to update inventory there, normally when we add jinja to any file we use extension j2 at the end of the file.
Add these lines starting from the backend. This helps ansible to update IP’s of the backend servers to it.
Now we configure the webservers,
Configuring webservers is simple,
- download the httpd software
- Copy the HTML file in /var/www/html folder
- start the httpd service
This is the whole code for this task,
Now run the playbook using
The playbook run successfully,
To check if the load balancer is working or not:
It is working completely fine. This completes our task.
connect me on Linkedin: https://www.linkedin.com/in/tejesh-itha-59083215a