diff --git a/ansible/prechecks.yml b/ansible/prechecks.yml
deleted file mode 100644
index 49903a95b920dc4bb902a08e59ad16583dcb39b5..0000000000000000000000000000000000000000
--- a/ansible/prechecks.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-- hosts: all
-  roles:
-    - prechecks
diff --git a/ansible/roles/aodh/tasks/precheck.yml b/ansible/roles/aodh/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/aodh/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/barbican/tasks/precheck.yml b/ansible/roles/barbican/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/barbican/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/baremetal/tasks/precheck.yml b/ansible/roles/baremetal/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/baremetal/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/bifrost/tasks/precheck.yml b/ansible/roles/bifrost/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/bifrost/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/ceilometer/tasks/precheck.yml b/ansible/roles/ceilometer/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/ceilometer/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/ceph/tasks/precheck.yml b/ansible/roles/ceph/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/ceph/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/certificates/tasks/precheck.yml b/ansible/roles/certificates/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/certificates/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/cinder/tasks/precheck.yml b/ansible/roles/cinder/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/cinder/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/cloudkitty/tasks/precheck.yml b/ansible/roles/cloudkitty/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/cloudkitty/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/collectd/tasks/precheck.yml b/ansible/roles/collectd/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/collectd/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/common/tasks/precheck.yml b/ansible/roles/common/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/common/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/congress/tasks/precheck.yml b/ansible/roles/congress/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/congress/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/destroy/tasks/precheck.yml b/ansible/roles/destroy/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/destroy/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/elasticsearch/tasks/precheck.yml b/ansible/roles/elasticsearch/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/elasticsearch/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/etcd/tasks/precheck.yml b/ansible/roles/etcd/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/etcd/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/glance/tasks/precheck.yml b/ansible/roles/glance/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/glance/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/gnocchi/tasks/precheck.yml b/ansible/roles/gnocchi/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/gnocchi/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/grafana/tasks/precheck.yml b/ansible/roles/grafana/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/grafana/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/heat/tasks/precheck.yml b/ansible/roles/heat/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/heat/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/horizon/tasks/precheck.yml b/ansible/roles/horizon/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/horizon/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/influxdb/tasks/precheck.yml b/ansible/roles/influxdb/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/influxdb/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/ironic/tasks/precheck.yml b/ansible/roles/ironic/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/ironic/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/iscsi/tasks/precheck.yml b/ansible/roles/iscsi/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/iscsi/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/keystone/tasks/precheck.yml b/ansible/roles/keystone/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/keystone/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/kibana/tasks/precheck.yml b/ansible/roles/kibana/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/kibana/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/kuryr/tasks/precheck.yml b/ansible/roles/kuryr/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/kuryr/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/magnum/tasks/precheck.yml b/ansible/roles/magnum/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/magnum/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/manila/tasks/precheck.yml b/ansible/roles/manila/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/manila/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/mariadb/tasks/precheck.yml b/ansible/roles/mariadb/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/mariadb/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/memcached/tasks/precheck.yml b/ansible/roles/memcached/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/memcached/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/mistral/tasks/precheck.yml b/ansible/roles/mistral/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/mistral/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/mongodb/tasks/precheck.yml b/ansible/roles/mongodb/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/mongodb/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/multipathd/tasks/precheck.yml b/ansible/roles/multipathd/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/multipathd/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/murano/tasks/precheck.yml b/ansible/roles/murano/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/murano/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/neutron/tasks/precheck.yml b/ansible/roles/neutron/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/neutron/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/nova/tasks/precheck.yml b/ansible/roles/nova/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/nova/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/prechecks/tasks/precheck.yml b/ansible/roles/prechecks/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/prechecks/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/rabbitmq/tasks/precheck.yml b/ansible/roles/rabbitmq/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/rabbitmq/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/rally/tasks/precheck.yml b/ansible/roles/rally/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/rally/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/sahara/tasks/precheck.yml b/ansible/roles/sahara/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/sahara/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/searchlight/tasks/precheck.yml b/ansible/roles/searchlight/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/searchlight/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/senlin/tasks/precheck.yml b/ansible/roles/senlin/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/senlin/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/swift/tasks/precheck.yml b/ansible/roles/swift/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/swift/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/telegraf/tasks/precheck.yml b/ansible/roles/telegraf/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/telegraf/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/tempest/tasks/precheck.yml b/ansible/roles/tempest/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/tempest/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/vmtp/tasks/precheck.yml b/ansible/roles/vmtp/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/vmtp/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/roles/watcher/tasks/precheck.yml b/ansible/roles/watcher/tasks/precheck.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/ansible/roles/watcher/tasks/precheck.yml
@@ -0,0 +1 @@
+---
diff --git a/ansible/site.yml b/ansible/site.yml
index c0151eeff86714404a6852fc85b4cd66157169c5..feeaed0e96944fd317bb472018de1407faf65f80 100644
--- a/ansible/site.yml
+++ b/ansible/site.yml
@@ -13,6 +13,12 @@
     - setup:
   tags: always
 
+- hosts:
+    - all
+  roles:
+    - role: prechecks
+      when: action == "precheck"
+
 - hosts:
     - ceph-mon
     - ceph-osd
diff --git a/tools/kolla-ansible b/tools/kolla-ansible
index 97a7c358cb63b38a424c09668f82104795b4f943..16891734b28423663fc94515399e7edaad6bbb7f 100755
--- a/tools/kolla-ansible
+++ b/tools/kolla-ansible
@@ -148,7 +148,7 @@ case "$1" in
 
 (prechecks)
         ACTION="Pre-deployment checking"
-        PLAYBOOK="${BASEDIR}/ansible/prechecks.yml"
+        EXTRA_OPTS="$EXTRA_OPTS -e action=precheck"
         ;;
 (mariadb_recovery)
         ACTION="Attempting to restart mariadb cluster"