diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
index 69cbf03bb0..13dccc31d5 100644
--- a/ansible/roles/haproxy/tasks/precheck.yml
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -199,7 +199,7 @@
     state: stopped
   when:
     - enable_haproxy | bool
-    - container_facts['haproxy'] is not defined
+    - "host_running_haproxy == 'None'"
     - inventory_hostname in groups['haproxy']
     - api_interface_address != kolla_internal_vip_address
 
diff --git a/releasenotes/notes/fix-haproxy-monitor-precheck-487b85f4e93313b1.yaml b/releasenotes/notes/fix-haproxy-monitor-precheck-487b85f4e93313b1.yaml
new file mode 100644
index 0000000000..933afee4b1
--- /dev/null
+++ b/releasenotes/notes/fix-haproxy-monitor-precheck-487b85f4e93313b1.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fixes an issue with the HAProxy monitor VIP precheck when some instances of
+    HAProxy are running and others are not. See `bug 1866617
+    <https://launchpad.net/bugs/1866617>`__.