diff --git a/inventory/sample/group_vars/k8s_cluster/addons.yml b/inventory/sample/group_vars/k8s_cluster/addons.yml
index 013f30bf6d580d290081cd07f6d71a11483dd061..66b6d45f5f7e9d8909474f942e0e29269aad5abd 100644
--- a/inventory/sample/group_vars/k8s_cluster/addons.yml
+++ b/inventory/sample/group_vars/k8s_cluster/addons.yml
@@ -139,6 +139,8 @@ metallb_enabled: false
 metallb_speaker_enabled: true
 # metallb_ip_range:
 #   - "10.5.0.50-10.5.0.99"
+# metallb_pool_name: "loadbalanced"
+# matallb_auto_assign: true
 # metallb_speaker_nodeselector:
 #   kubernetes.io/os: "linux"
 # metallb_controller_nodeselector:
diff --git a/roles/kubernetes-apps/metallb/defaults/main.yml b/roles/kubernetes-apps/metallb/defaults/main.yml
index 38e95b78ee1aef0fdd5ed91878759581169ad64e..68ba1fc09a757632e2c881e3c104b7760ab79eec 100644
--- a/roles/kubernetes-apps/metallb/defaults/main.yml
+++ b/roles/kubernetes-apps/metallb/defaults/main.yml
@@ -19,3 +19,4 @@ metallb_speaker_tolerations:
     operator: Exists
 metallb_controller_tolerations: []
 metallb_pool_name: "loadbalanced"
+matallb_auto_assign: true
diff --git a/roles/kubernetes-apps/metallb/templates/metallb-config.yml.j2 b/roles/kubernetes-apps/metallb/templates/metallb-config.yml.j2
index 6157d63c215f3c526a2aed635b7bac9334ccfdf3..7e33ce21dbb425f678ff7cb5e1971fb7b97eacb9 100644
--- a/roles/kubernetes-apps/metallb/templates/metallb-config.yml.j2
+++ b/roles/kubernetes-apps/metallb/templates/metallb-config.yml.j2
@@ -21,6 +21,9 @@ data:
 {% for ip_range in metallb_ip_range %}
       - {{ ip_range }}
 {% endfor %}
+{% if matallb_auto_assign == false %}
+      auto-assign: false
+{% endif %}
 {% if metallb_additional_address_pools is defined %}{% for pool in metallb_additional_address_pools %}
     - name: {{ pool }}
       protocol: {{ metallb_additional_address_pools[pool].protocol }}