diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
index c287c1c6e8..efb49ac369 100644
--- a/ansible/roles/haproxy/tasks/precheck.yml
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -280,6 +280,17 @@
     - nova_console == 'spice'
     - inventory_hostname in groups['haproxy']
 
+- name: Checking free port for RabbitMQ Management HAProxy
+  wait_for:
+    host: "{{ kolla_internal_vip_address }}"
+    port: "{{ rabbitmq_management_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - enable_rabbitmq | bool
+    - "{{ 'rabbitmq_management' not in haproxy_stat }}"
+    - inventory_hostname in groups['haproxy']
+
 - name: Checking free port for Sahara API HAProxy
   wait_for:
     host: "{{ kolla_internal_vip_address }}"
diff --git a/ansible/roles/prechecks/tasks/port_checks.yml b/ansible/roles/prechecks/tasks/port_checks.yml
index 2aa15f0dd2..dcba40e442 100644
--- a/ansible/roles/prechecks/tasks/port_checks.yml
+++ b/ansible/roles/prechecks/tasks/port_checks.yml
@@ -173,69 +173,6 @@
     - enable_mariadb | bool
     - inventory_hostname in groups['mariadb']
 
-- name: Checking free port for RabbitMQ
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ rabbitmq_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_rabbitmq | bool
-    - inventory_hostname in groups['rabbitmq']
-
-- name: Checking free port for RabbitMQ Management
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ rabbitmq_management_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_rabbitmq | bool
-    - inventory_hostname in groups['rabbitmq']
-
-- name: Checking free port for RabbitMQ Management HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ rabbitmq_management_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_rabbitmq | bool
-    - inventory_hostname in groups['haproxy']
-
-- name: Checking free port for RabbitMQ Cluster
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ rabbitmq_cluster_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_rabbitmq | bool
-    - inventory_hostname in groups['rabbitmq']
-
-- name: Checking free port for RabbitMQ EPMD
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ rabbitmq_epmd_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_rabbitmq | bool
-    - inventory_hostname in groups['rabbitmq']
-
-- name: Check if all rabbit hostnames are resolvable
-  command: "getent ahostsv4 {{ hostvars[item]['ansible_hostname'] }}"
-  changed_when: false
-  register: rabbitmq_hostnames
-  with_items: "{{ groups['rabbitmq'] }}"
-  when: enable_rabbitmq | bool
-
-- fail: msg="Hostname has to resolve to IP address of api_interface"
-  with_items: "{{ rabbitmq_hostnames.results }}"
-  when:
-    - "'{{ hostvars[item['item']]['ansible_' + hostvars[item['item']]['api_interface']]['ipv4']['address'] }}' not in '{{ item.stdout }}'"
-    - enable_rabbitmq | bool
-
 - name: Checking free port for Mongodb
   wait_for:
     host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
diff --git a/ansible/roles/rabbitmq/tasks/precheck.yml b/ansible/roles/rabbitmq/tasks/precheck.yml
index ed97d539c0..e125fb4de5 100644
--- a/ansible/roles/rabbitmq/tasks/precheck.yml
+++ b/ansible/roles/rabbitmq/tasks/precheck.yml
@@ -1 +1,57 @@
 ---
+- name: Get container facts
+  kolla_container_facts:
+    name:
+      - rabbitmq
+  register: container_facts
+
+- name: Checking free port for RabbitMQ
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ rabbitmq_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['rabbitmq'] is not defined
+    - inventory_hostname in groups['rabbitmq']
+
+- name: Checking free port for RabbitMQ Management
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ rabbitmq_management_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['rabbitmq'] is not defined
+    - inventory_hostname in groups['rabbitmq']
+
+- name: Checking free port for RabbitMQ Cluster
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ rabbitmq_cluster_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['rabbitmq'] is not defined
+    - inventory_hostname in groups['rabbitmq']
+
+- name: Checking free port for RabbitMQ EPMD
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ rabbitmq_epmd_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['rabbitmq'] is not defined
+    - inventory_hostname in groups['rabbitmq']
+
+- name: Check if all rabbit hostnames are resolvable
+  command: "getent ahostsv4 {{ hostvars[item]['ansible_hostname'] }}"
+  changed_when: false
+  register: rabbitmq_hostnames
+  with_items: "{{ groups['rabbitmq'] }}"
+
+- fail: msg="Hostname has to resolve to IP address of api_interface"
+  with_items: "{{ rabbitmq_hostnames.results }}"
+  when:
+    - "'{{ hostvars[item['item']]['ansible_' + hostvars[item['item']]['api_interface']]['ipv4']['address'] }}' not in '{{ item.stdout }}'"