From d7372746231c58856e027e2b85012f292bcce08a Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <andrea.dellamico@isti.cnr.it>
Date: Wed, 21 Oct 2020 16:50:43 +0200
Subject: [PATCH] The http checks can be customized.

---
 defaults/main.yml        |  2 ++
 templates/haproxy.cfg.j2 | 11 ++++++++---
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/defaults/main.yml b/defaults/main.yml
index 486bbfa..3eabd79 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -9,6 +9,8 @@ docker_swarm_haproxy_swarm_port: '{{ docker_api_port }}'
 #
 docker_swarm_expose_api_via_haproxy: True
 docker_swarm_expose_api_hostname: 'swarm.example.com'
+docker_swarm_api_backend: 'dockersocket /var/run/docker.sock'
+docker_swarm_api_check_availability: True
 docker_swarm_api_networks_acl:
   - '127.0.0.1/8'
 # Portainer
diff --git a/templates/haproxy.cfg.j2 b/templates/haproxy.cfg.j2
index 07bdc15..641c53e 100644
--- a/templates/haproxy.cfg.j2
+++ b/templates/haproxy.cfg.j2
@@ -147,7 +147,11 @@ frontend docker_ft
 # swarm API
 backend swarm_api_bck
     mode http
-    server dockersocket /var/run/docker.sock
+{% if docker_swarm_api_check_availability %}
+    http-check send meth HEAD uri /version ver HTTP/1.1 hdr Host localhost
+    http-check expect rstatus (2|3)[0-9][0-9]
+{% endif %}
+    server {{ docker_swarm_api_backend }}
 {% endif %}
 
 {% if docker_swarm_cluster_portainer_install %}
@@ -165,8 +169,9 @@ backend {{ srv.acl_name }}_bck
     mode http
     option httpchk
     balance {{ srv.balance_type | default('roundrobin') }}
-    http-check send meth HEAD uri / ver HTTP/1.1 hdr Host localhost
-    http-check expect rstatus (2|3)[0-9][0-9]
+{% if srv.http_check_enabled is defined and srv.http_check_enabled %}
+    http-check send {{ srv.http_check }}
+    http-check expect {{ srv.http_check_expect }}
 {% if srv.stick_sessions %}
 {% if srv.stick_on_cookie %}
     cookie {{ srv.stick_cookie }}