diff --git a/roles/keycloak/README.md b/roles/keycloak/README.md
index ef6cc01..f25420f 100644
--- a/roles/keycloak/README.md
+++ b/roles/keycloak/README.md
@@ -165,7 +165,7 @@ The following variables are _optional_:
|:---------|:------------|
|`keycloak_db_valid_conn_sql` | Override the default database connection validation query sql |
|`keycloak_admin_url` | Override the default administration endpoint URL |
-
+|`keycloak_jgroups_subnet`| Override the subnet match for jgroups cluster formation; if not defined, it will be inferred from local machine route configuration |
Example Playbook
-----------------
diff --git a/roles/keycloak/defaults/main.yml b/roles/keycloak/defaults/main.yml
index d0137a8..da98d24 100644
--- a/roles/keycloak/defaults/main.yml
+++ b/roles/keycloak/defaults/main.yml
@@ -42,6 +42,7 @@ keycloak_http_port: 8080
keycloak_https_port: 8443
keycloak_ajp_port: 8009
keycloak_jgroups_port: 7600
+keycloak_jgroups_subnet:
keycloak_management_port_bind_address: 127.0.0.1
keycloak_management_http_port: 9990
keycloak_management_https_port: 9993
diff --git a/roles/keycloak/meta/argument_specs.yml b/roles/keycloak/meta/argument_specs.yml
index 8e05939..5392cfc 100644
--- a/roles/keycloak/meta/argument_specs.yml
+++ b/roles/keycloak/meta/argument_specs.yml
@@ -347,6 +347,10 @@ argument_specs:
required: False
description: "Override the default administration endpoint URL"
type: "str"
+ keycloak_jgroups_subnet:
+ required: False
+ description: "Override the subnet match for jgroups cluster formation; if not defined, it will be inferred from local machine route configuration"
+ type: "str"
downstream:
options:
sso_version:
diff --git a/roles/keycloak/templates/standalone-ha.xml.j2 b/roles/keycloak/templates/standalone-ha.xml.j2
index f108d2d..f3ca185 100644
--- a/roles/keycloak/templates/standalone-ha.xml.j2
+++ b/roles/keycloak/templates/standalone-ha.xml.j2
@@ -662,7 +662,9 @@
-{% if ansible_default_ipv4 is defined %}
+{% keycloak_jgroups_subnet is defined and keycloak_jgroups_subnet | length > 0 %}
+
+{% elif ansible_default_ipv4 is defined and (ansible_default_ipv4.network + '/' + ansible_default_ipv4.netmask) | ansible.utils.ipaddr('net') | length > 0 %}
{% else %}
diff --git a/roles/keycloak/templates/standalone-infinispan.xml.j2 b/roles/keycloak/templates/standalone-infinispan.xml.j2
index 0d052ed..304b0fd 100644
--- a/roles/keycloak/templates/standalone-infinispan.xml.j2
+++ b/roles/keycloak/templates/standalone-infinispan.xml.j2
@@ -700,7 +700,9 @@
-{% if ansible_default_ipv4 is defined %}
+{% keycloak_jgroups_subnet is defined and keycloak_jgroups_subnet | length > 0 %}
+
+{% elif ansible_default_ipv4 is defined and (ansible_default_ipv4.network + '/' + ansible_default_ipv4.netmask) | ansible.utils.ipaddr('net') | length > 0 %}
{% else %}