From e9fdd107a6b5fc8ecd629d62e8e5a443bfdeb6bc Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <andrea.dellamico@isti.cnr.it>
Date: Wed, 29 May 2024 18:41:01 +0200
Subject: [PATCH] jgrops configuration to bind a specific address.

---
 defaults/main.yml           |  2 ++
 templates/cache-ispn.xml.j2 | 12 ++++++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/defaults/main.yml b/defaults/main.yml
index bd7e52e..afde7b8 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -93,5 +93,7 @@ keycloak_cache_container_name: keycloak
 keycloak_jgroups_multicast_port: 46655
 keycloak_jgroups_multicast_address: 228.6.7.8
 keycloak_jgroups_bind_port: 55200
+keycloak_jgroups_bind_specific_ip: false
+keycloak_jgroups_bind_ip_address: "{{ ansible_default_ipv4.address }}"
 keycloak_jgroups_extended_stack: false
 keycloak_jgroups_extended_stack_name: "extended-{{ keycloak_cache_stack }}"
diff --git a/templates/cache-ispn.xml.j2 b/templates/cache-ispn.xml.j2
index cfc7926..4d472e3 100644
--- a/templates/cache-ispn.xml.j2
+++ b/templates/cache-ispn.xml.j2
@@ -21,11 +21,19 @@
         xsi:schemaLocation="urn:infinispan:config:11.0 http://www.infinispan.org/schemas/infinispan-config-11.0.xsd"
         xmlns="urn:infinispan:config:11.0">
 
+{% if keycloak_jgroups_bind_specific_ip %}
+    <interfaces>
+        <interface name="public">
+          <inet-address value="{{ keycloak_jgroups_bind_ip_address }}"/>
+        </interface>
+    </interfaces>
+{% endif %}
+
 {% if keycloak_jgroups_extended_stack %}
     <!-- custom stack goes into the jgroups element -->
     <jgroups>
         <stack name="{{ keycloak_jgroups_extended_stack_name }}" extends="{{ keycloak_cache_stack }}">
-            <UDP bind_addr="${jgroups.bind.address,jgroups.udp.address:SITE_LOCAL}"
+            <UDP bind_addr="{% if keycloak_jgroups_bind_specific_ip %}{{ keycloak_jgroups_bind_ip_address }}{% else %}${jgroups.bind.address,jgroups.udp.address:SITE_LOCAL}{% endif %}"
                 bind_port="{{ keycloak_jgroups_bind_port }}"
                 mcast_addr="{{ keycloak_jgroups_multicast_address }}"
                 mcast_port="{{ keycloak_jgroups_multicast_port }}"
@@ -109,4 +117,4 @@
             <memory max-count="-1"/>
         </distributed-cache>
     </cache-container>
-</infinispan>
\ No newline at end of file
+</infinispan>