diff --git a/ansible/roles/etcd/tasks/precheck.yml b/ansible/roles/etcd/tasks/precheck.yml
index ed97d539c095cf1413af30cc23dea272095b97dd..e8179afaf02c0ed93574256cef9b2707f4a5bf33 100644
--- a/ansible/roles/etcd/tasks/precheck.yml
+++ b/ansible/roles/etcd/tasks/precheck.yml
@@ -1 +1,26 @@
 ---
+- name: Get container facts
+  kolla_container_facts:
+    name:
+      - etcd
+  register: container_facts
+
+- name: Checking free port for Etcd Peer
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ etcd_peer_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['etcd'] is not defined
+    - inventory_hostname in groups['etcd']
+
+- name: Checking free port for Etcd Client
+  wait_for:
+    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
+    port: "{{ etcd_client_port }}"
+    connect_timeout: 1
+    state: stopped
+  when:
+    - container_facts['etcd'] is not defined
+    - inventory_hostname in groups['etcd']
diff --git a/ansible/roles/prechecks/tasks/port_checks.yml b/ansible/roles/prechecks/tasks/port_checks.yml
index f7b86490117d6ceaa3e17ca96ad3e052b86bd34e..274241c817a8abb541b0fd7bc6db746392b6004a 100644
--- a/ansible/roles/prechecks/tasks/port_checks.yml
+++ b/ansible/roles/prechecks/tasks/port_checks.yml
@@ -33,26 +33,6 @@
                 kolla_internal_vip_address | ipaddr(ip_addr_output.stdout.split()[3]) is none"
   when: enable_haproxy | bool
 
-- name: Checking free port for Etcd Peer
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ etcd_peer_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_etcd | bool
-    - inventory_hostname in groups['etcd']
-
-- name: Checking free port for Etcd Client
-  wait_for:
-    host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
-    port: "{{ etcd_client_port }}"
-    connect_timeout: 1
-    state: stopped
-  when:
-    - enable_etcd | bool
-    - inventory_hostname in groups['etcd']
-
 - name: Checking free port for Kuryr
   wait_for:
     host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"