diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
index c5fec9d1071c4249530be1a8a6637fef5cc846b0..b2f88f9d1d360ecbd44ae1268788fad0cb2c9ebb 100644
--- a/ansible/roles/haproxy/tasks/precheck.yml
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -201,6 +201,52 @@
     - "{{ 'neutron_server' not in haproxy_stat }}"
     - inventory_hostname in groups['haproxy']
 
+- name: Checking free port for Nova API HAProxy
+  wait_for:
+    host: "{{ kolla_internal_vip_address }}"
+    port: "{{ nova_api_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - enable_nova | bool
+    - "{{ 'nova_api' not in haproxy_stat }}"
+    - inventory_hostname in groups['haproxy']
+
+- name: Checking free port for Nova Metadata HAProxy
+  wait_for:
+    host: "{{ kolla_internal_vip_address }}"
+    port: "{{ nova_metadata_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - enable_nova | bool
+    - "{{ 'nova_metadata' not in haproxy_stat }}"
+    - inventory_hostname in groups['haproxy']
+
+- name: Checking free port for Nova NoVNC HAProxy
+  wait_for:
+    host: "{{ kolla_internal_vip_address }}"
+    port: "{{ nova_novncproxy_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - enable_nova | bool
+    - "{{ 'nova_novncproxy' not in haproxy_stat }}"
+    - nova_console == 'novnc'
+    - inventory_hostname in groups['haproxy']
+
+- name: Checking free port for Nova Spice HTML5 HAProxy
+  wait_for:
+    host: "{{ kolla_internal_vip_address }}"
+    port: "{{ nova_spicehtml5proxy_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - enable_nova | bool
+    - "{{ 'nova_spicehtml5proxy' not in haproxy_stat }}"
+    - nova_console == 'spice'
+    - 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/nova/tasks/precheck.yml b/ansible/roles/nova/tasks/precheck.yml
index ed97d539c095cf1413af30cc23dea272095b97dd..5edcaa26c8ee47bd4c2c8ded328dc83dc8347079 100644
--- a/ansible/roles/nova/tasks/precheck.yml
+++ b/ansible/roles/nova/tasks/precheck.yml
@@ -1 +1,50 @@
 ---
+- name: Get container facts
+  kolla_container_facts:
+    name:
+      - nova_api
+      - nova_novncproxy
+      - nova_spicehtml5proxy
+  register: container_facts
+
+- name: Checking free port for Nova API
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ nova_api_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['nova_api'] is not defined
+    - inventory_hostname in groups['nova-api']
+
+- name: Checking free port for Nova Metadata
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ nova_metadata_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['nova_api'] is not defined
+    - inventory_hostname in groups['nova-api']
+
+- name: Checking free port for Nova NoVNC Proxy
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ nova_novncproxy_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['nova_novncproxy'] is not defined
+    - nova_console == 'novnc'
+    - inventory_hostname in groups['nova-novncproxy']
+
+- name: Checking free port for Nova Spice HTML5 Proxy
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ nova_spicehtml5proxy_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['nova_spicehtml5proxy'] is not defined
+    - nova_console == 'spice'
+    - inventory_hostname in groups['nova-spicehtml5proxy']
diff --git a/ansible/roles/prechecks/tasks/port_checks.yml b/ansible/roles/prechecks/tasks/port_checks.yml
index f7b86490117d6ceaa3e17ca96ad3e052b86bd34e..ae11b6e0a05702b97d4e946a7313405e7cbd3a89 100644
--- a/ansible/roles/prechecks/tasks/port_checks.yml
+++ b/ansible/roles/prechecks/tasks/port_checks.yml
@@ -233,90 +233,6 @@
     - enable_murano | bool
     - inventory_hostname in groups['haproxy']
 
-- name: Checking free port for Nova API
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ nova_api_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_nova | bool
-    - inventory_hostname in groups['nova-api']
-
-- name: Checking free port for Nova API HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ nova_api_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_nova | bool
-    - inventory_hostname in groups['haproxy']
-
-- name: Checking free port for Nova Metadata
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ nova_metadata_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_nova | bool
-    - inventory_hostname in groups['nova-api']
-
-- name: Checking free port for Nova Metadata HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ nova_metadata_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_nova | bool
-    - inventory_hostname in groups['haproxy']
-
-- name: Checking free port for Nova NoVNC Proxy
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ nova_novncproxy_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_nova | bool
-    - nova_console == 'novnc'
-    - inventory_hostname in groups['nova-novncproxy']
-
-- name: Checking free port for Nova NoVNC HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ nova_novncproxy_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_nova | bool
-    - nova_console == 'novnc'
-    - inventory_hostname in groups['haproxy']
-
-- name: Checking free port for Nova Spice HTML5 Proxy
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ nova_spicehtml5proxy_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_nova | bool
-    - nova_console == 'spice'
-    - inventory_hostname in groups['nova-spicehtml5proxy']
-
-- name: Checking free port for Nova Spice HTML5 HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ nova_spicehtml5proxy_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_nova | bool
-    - nova_console == 'spice'
-    - inventory_hostname in groups['haproxy']
-
 - name: Checking free port for RabbitMQ
   wait_for:
     host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"