diff --git a/roles/kubernetes-apps/metallb/tasks/main.yml b/roles/kubernetes-apps/metallb/tasks/main.yml
index a874be05aaf284e42b67aaa944b2194a393f0ff1..952275a8d4ed0e731dc8e67a78239b78c8379cb6 100644
--- a/roles/kubernetes-apps/metallb/tasks/main.yml
+++ b/roles/kubernetes-apps/metallb/tasks/main.yml
@@ -13,9 +13,10 @@
 
 - name: Kubernetes Apps | Check BGP peers for MetalLB
   fail:
-    msg: "metallb_peers is mandatory when metallb_protocol is bgp"
+    msg: "metallb_peers is mandatory when metallb_protocol is bgp and metallb_speaker_enabled"
   when:
-    - metallb_protocol == 'bgp' and metallb_peers is not defined
+    - metallb_protocol == 'bgp' and metallb_speaker_enabled
+    - metallb_peers is not defined or not metallb_peers
 
 - name: Kubernetes Apps | Check AppArmor status
   command: which apparmor_parser