diff --git a/ansible/roles/aodh/tasks/precheck.yml b/ansible/roles/aodh/tasks/precheck.yml
index 084cc8d5df..075ffa4d40 100644
--- a/ansible/roles/aodh/tasks/precheck.yml
+++ b/ansible/roles/aodh/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - aodh_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Aodh API
diff --git a/ansible/roles/barbican/tasks/precheck.yml b/ansible/roles/barbican/tasks/precheck.yml
index 344fd6ba9b..909b7b3838 100644
--- a/ansible/roles/barbican/tasks/precheck.yml
+++ b/ansible/roles/barbican/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - barbican_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Barbican API
diff --git a/ansible/roles/blazar/tasks/precheck.yml b/ansible/roles/blazar/tasks/precheck.yml
index 75ddff57ea..02408a2f7e 100644
--- a/ansible/roles/blazar/tasks/precheck.yml
+++ b/ansible/roles/blazar/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - blazar_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for blazar API
diff --git a/ansible/roles/cinder/tasks/precheck.yml b/ansible/roles/cinder/tasks/precheck.yml
index 7cd8825d7c..049b9599fc 100644
--- a/ansible/roles/cinder/tasks/precheck.yml
+++ b/ansible/roles/cinder/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - cinder_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Cinder API
@@ -48,6 +49,7 @@
   register: result
   changed_when: false
   failed_when: result is failed
+  check_mode: false
   when:
     - enable_cinder | bool
     - enable_cinder_backend_lvm | bool
diff --git a/ansible/roles/cloudkitty/tasks/precheck.yml b/ansible/roles/cloudkitty/tasks/precheck.yml
index ee023e2410..f5e2a56f84 100644
--- a/ansible/roles/cloudkitty/tasks/precheck.yml
+++ b/ansible/roles/cloudkitty/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - cloudkitty_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Cloudkitty API
diff --git a/ansible/roles/cyborg/tasks/precheck.yml b/ansible/roles/cyborg/tasks/precheck.yml
index 57341399f2..819913a21c 100644
--- a/ansible/roles/cyborg/tasks/precheck.yml
+++ b/ansible/roles/cyborg/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - cyborg_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for cyborg API
diff --git a/ansible/roles/designate/tasks/precheck.yml b/ansible/roles/designate/tasks/precheck.yml
index e8fe4b81a1..d1b023c207 100644
--- a/ansible/roles/designate/tasks/precheck.yml
+++ b/ansible/roles/designate/tasks/precheck.yml
@@ -13,6 +13,7 @@
       - designate_api
       - designate_backend_bind9
       - designate_mdns
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for designate API
diff --git a/ansible/roles/etcd/tasks/precheck.yml b/ansible/roles/etcd/tasks/precheck.yml
index 04916eb76b..0a1cc78f41 100644
--- a/ansible/roles/etcd/tasks/precheck.yml
+++ b/ansible/roles/etcd/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - etcd
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Etcd Peer
diff --git a/ansible/roles/freezer/tasks/precheck.yml b/ansible/roles/freezer/tasks/precheck.yml
index d47566deca..55a681dd3a 100644
--- a/ansible/roles/freezer/tasks/precheck.yml
+++ b/ansible/roles/freezer/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - freezer_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Freezer API
diff --git a/ansible/roles/glance/tasks/precheck.yml b/ansible/roles/glance/tasks/precheck.yml
index d0aa31ff07..d7d54c7f19 100644
--- a/ansible/roles/glance/tasks/precheck.yml
+++ b/ansible/roles/glance/tasks/precheck.yml
@@ -10,6 +10,7 @@
   kolla_container_facts:
     container_engine: "{{ kolla_container_engine }}"
     name: "{{ glance_services.values() | map(attribute='container_name') | list }}"
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Glance API
diff --git a/ansible/roles/gnocchi/tasks/precheck.yml b/ansible/roles/gnocchi/tasks/precheck.yml
index 3820be7fa4..95d41e8ef8 100644
--- a/ansible/roles/gnocchi/tasks/precheck.yml
+++ b/ansible/roles/gnocchi/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - gnocchi_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Gnocchi API
diff --git a/ansible/roles/grafana/tasks/precheck.yml b/ansible/roles/grafana/tasks/precheck.yml
index fe32bc4a22..78f1b048f6 100644
--- a/ansible/roles/grafana/tasks/precheck.yml
+++ b/ansible/roles/grafana/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - grafana
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Grafana server
diff --git a/ansible/roles/hacluster/tasks/precheck.yml b/ansible/roles/hacluster/tasks/precheck.yml
index 8909d82a82..c77f7c78b2 100644
--- a/ansible/roles/hacluster/tasks/precheck.yml
+++ b/ansible/roles/hacluster/tasks/precheck.yml
@@ -5,6 +5,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - hacluster_pacemaker_remote
+  check_mode: false
   register: container_facts
 
 # NOTE(yoctozepto): Corosync runs over UDP so one cannot use wait_for to check
diff --git a/ansible/roles/influxdb/tasks/precheck.yml b/ansible/roles/influxdb/tasks/precheck.yml
index f063881c0d..b754b2af34 100644
--- a/ansible/roles/influxdb/tasks/precheck.yml
+++ b/ansible/roles/influxdb/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - influxdb
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Influxdb Http
diff --git a/ansible/roles/ironic/tasks/precheck.yml b/ansible/roles/ironic/tasks/precheck.yml
index 6037b7fd92..71502944a4 100644
--- a/ansible/roles/ironic/tasks/precheck.yml
+++ b/ansible/roles/ironic/tasks/precheck.yml
@@ -13,6 +13,7 @@
       - ironic_api
       - ironic_inspector
       - ironic_http
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Ironic API
diff --git a/ansible/roles/iscsi/tasks/precheck.yml b/ansible/roles/iscsi/tasks/precheck.yml
index 4d0e949c99..d2811246e5 100644
--- a/ansible/roles/iscsi/tasks/precheck.yml
+++ b/ansible/roles/iscsi/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - iscsid
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for iscsi
diff --git a/ansible/roles/keystone/tasks/precheck.yml b/ansible/roles/keystone/tasks/precheck.yml
index 201ec59f1f..0513f7411e 100644
--- a/ansible/roles/keystone/tasks/precheck.yml
+++ b/ansible/roles/keystone/tasks/precheck.yml
@@ -12,6 +12,7 @@
     name:
       - keystone
       - keystone_ssh
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Keystone Public
diff --git a/ansible/roles/kuryr/tasks/precheck.yml b/ansible/roles/kuryr/tasks/precheck.yml
index 03ca0f6de7..078d1dd9e8 100644
--- a/ansible/roles/kuryr/tasks/precheck.yml
+++ b/ansible/roles/kuryr/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - kuryr
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Kuryr
diff --git a/ansible/roles/loadbalancer/tasks/precheck.yml b/ansible/roles/loadbalancer/tasks/precheck.yml
index 615fcd5782..bf09d5c2ae 100644
--- a/ansible/roles/loadbalancer/tasks/precheck.yml
+++ b/ansible/roles/loadbalancer/tasks/precheck.yml
@@ -13,12 +13,14 @@
       - haproxy
       - proxysql
       - keepalived
+  check_mode: false
   register: container_facts
 
 - name: Group hosts by whether they are running keepalived
   group_by:
     key: "keepalived_running_{{ container_facts['keepalived'] is defined }}"
   changed_when: false
+  check_mode: false
   when:
     - enable_keepalived | bool
     - inventory_hostname in groups['loadbalancer']
@@ -27,6 +29,7 @@
   group_by:
     key: "haproxy_running_{{ container_facts['haproxy'] is defined }}"
   changed_when: false
+  check_mode: false
   when:
     - enable_haproxy | bool
     - inventory_hostname in groups['loadbalancer']
@@ -35,6 +38,7 @@
   group_by:
     key: "proxysql_running_{{ container_facts['proxysql'] is defined }}"
   changed_when: false
+  check_mode: false
   when:
     - enable_proxysql | bool
     - inventory_hostname in groups['loadbalancer']
@@ -108,6 +112,7 @@
   register: ping_output
   changed_when: false
   failed_when: ping_output.rc != 1
+  check_mode: false
   with_items:
     - "{{ kolla_internal_vip_address }}"
     - "{{ kolla_external_vip_address }}"
@@ -187,6 +192,7 @@
   failed_when: >-
     ( ip_addr_output is failed or
      kolla_internal_vip_address | ipaddr(ip_addr_output.stdout.split()[3]) is none)
+  check_mode: false
   when:
     - enable_haproxy | bool
     - enable_keepalived | bool
@@ -198,6 +204,7 @@
   shell: echo "show stat" | {{ kolla_container_engine }} exec -i haproxy socat unix-connect:/var/lib/kolla/haproxy/haproxy.sock stdio  # noqa risky-shell-pipe
   register: haproxy_stat_shell
   changed_when: false
+  check_mode: false
   when: container_facts['haproxy'] is defined
 
 - name: Setting haproxy stat fact
@@ -827,6 +834,7 @@
       register: firewalld_is_active
       changed_when: false
       failed_when: false
+      check_mode: false
 
     - name: Fail if firewalld is not running
       fail:
diff --git a/ansible/roles/magnum/tasks/precheck.yml b/ansible/roles/magnum/tasks/precheck.yml
index 2f795bf96c..d3eb58ceba 100644
--- a/ansible/roles/magnum/tasks/precheck.yml
+++ b/ansible/roles/magnum/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - magnum_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Magnum API
diff --git a/ansible/roles/manila/tasks/precheck.yml b/ansible/roles/manila/tasks/precheck.yml
index 81446c1dec..7f47557ba8 100644
--- a/ansible/roles/manila/tasks/precheck.yml
+++ b/ansible/roles/manila/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - manila_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Manila API
diff --git a/ansible/roles/mariadb/tasks/precheck.yml b/ansible/roles/mariadb/tasks/precheck.yml
index d9810d07dd..7706fa716b 100644
--- a/ansible/roles/mariadb/tasks/precheck.yml
+++ b/ansible/roles/mariadb/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - mariadb
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for MariaDB
diff --git a/ansible/roles/masakari/tasks/precheck.yml b/ansible/roles/masakari/tasks/precheck.yml
index 5c2cd3fe7c..c77403bfba 100644
--- a/ansible/roles/masakari/tasks/precheck.yml
+++ b/ansible/roles/masakari/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - masakari_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Masakari API
diff --git a/ansible/roles/memcached/tasks/precheck.yml b/ansible/roles/memcached/tasks/precheck.yml
index 7c27f914cb..0601c6d733 100644
--- a/ansible/roles/memcached/tasks/precheck.yml
+++ b/ansible/roles/memcached/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - memcached
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Memcached
diff --git a/ansible/roles/mistral/tasks/precheck.yml b/ansible/roles/mistral/tasks/precheck.yml
index cf56d87113..19264fc578 100644
--- a/ansible/roles/mistral/tasks/precheck.yml
+++ b/ansible/roles/mistral/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - mistral_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Mistral API
diff --git a/ansible/roles/murano/tasks/precheck.yml b/ansible/roles/murano/tasks/precheck.yml
index 1b9df9c6ff..602eb3bf74 100644
--- a/ansible/roles/murano/tasks/precheck.yml
+++ b/ansible/roles/murano/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - murano_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Murano API
diff --git a/ansible/roles/neutron/tasks/precheck.yml b/ansible/roles/neutron/tasks/precheck.yml
index 36804ae794..5b2c602d9c 100644
--- a/ansible/roles/neutron/tasks/precheck.yml
+++ b/ansible/roles/neutron/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - neutron_server
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Neutron Server
diff --git a/ansible/roles/nova-cell/tasks/precheck.yml b/ansible/roles/nova-cell/tasks/precheck.yml
index 18f14f05c8..dcb11eadef 100644
--- a/ansible/roles/nova-cell/tasks/precheck.yml
+++ b/ansible/roles/nova-cell/tasks/precheck.yml
@@ -15,6 +15,7 @@
       - nova_serialproxy
       - nova_spicehtml5proxy
       - nova_ssh
+  check_mode: false
   register: container_facts
 
 - name: Checking available compute nodes in inventory
diff --git a/ansible/roles/nova/tasks/precheck.yml b/ansible/roles/nova/tasks/precheck.yml
index 7287f59fa8..b09fbfdd94 100644
--- a/ansible/roles/nova/tasks/precheck.yml
+++ b/ansible/roles/nova/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - nova_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Nova API
diff --git a/ansible/roles/octavia/tasks/precheck.yml b/ansible/roles/octavia/tasks/precheck.yml
index d95b525e77..f3335b6c7c 100644
--- a/ansible/roles/octavia/tasks/precheck.yml
+++ b/ansible/roles/octavia/tasks/precheck.yml
@@ -12,6 +12,7 @@
     name:
       - octavia_api
       - octavia_health_manager
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Octavia API
diff --git a/ansible/roles/opensearch/tasks/precheck.yml b/ansible/roles/opensearch/tasks/precheck.yml
index 11e2b8aaad..997c030dda 100644
--- a/ansible/roles/opensearch/tasks/precheck.yml
+++ b/ansible/roles/opensearch/tasks/precheck.yml
@@ -12,6 +12,7 @@
     name:
       - opensearch
       - elasticsearch
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Opensearch
diff --git a/ansible/roles/openvswitch/tasks/precheck.yml b/ansible/roles/openvswitch/tasks/precheck.yml
index 94540a072f..b3d411e96c 100644
--- a/ansible/roles/openvswitch/tasks/precheck.yml
+++ b/ansible/roles/openvswitch/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - openvswitch_db
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for OVSDB
diff --git a/ansible/roles/ovn-db/tasks/precheck.yml b/ansible/roles/ovn-db/tasks/precheck.yml
index d98c98a4be..341ddcf288 100644
--- a/ansible/roles/ovn-db/tasks/precheck.yml
+++ b/ansible/roles/ovn-db/tasks/precheck.yml
@@ -6,6 +6,7 @@
     name:
       - ovn_nb_db
       - ovn_sb_db
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for OVN northbound db
diff --git a/ansible/roles/placement/tasks/precheck.yml b/ansible/roles/placement/tasks/precheck.yml
index 8862d36ee9..8131e20809 100644
--- a/ansible/roles/placement/tasks/precheck.yml
+++ b/ansible/roles/placement/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - placement_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Placement API
diff --git a/ansible/roles/prechecks/tasks/host_os_checks.yml b/ansible/roles/prechecks/tasks/host_os_checks.yml
index 12dc80e5dc..2d1c96160e 100644
--- a/ansible/roles/prechecks/tasks/host_os_checks.yml
+++ b/ansible/roles/prechecks/tasks/host_os_checks.yml
@@ -23,6 +23,7 @@
   command: grep -q Stream /etc/os-release
   register: stream_status
   changed_when: false
+  check_mode: false
   when:
     - ansible_facts.distribution == 'CentOS'
 
diff --git a/ansible/roles/prechecks/tasks/package_checks.yml b/ansible/roles/prechecks/tasks/package_checks.yml
index 272f9cbed7..617dba5ca9 100644
--- a/ansible/roles/prechecks/tasks/package_checks.yml
+++ b/ansible/roles/prechecks/tasks/package_checks.yml
@@ -3,6 +3,7 @@
   command: "{{ ansible_facts.python.executable }} -c \"import docker; print(docker.__version__)\""
   register: result
   changed_when: false
+  check_mode: false
   when:
     - inventory_hostname in groups['baremetal']
     - kolla_container_engine == 'docker'
diff --git a/ansible/roles/prechecks/tasks/service_checks.yml b/ansible/roles/prechecks/tasks/service_checks.yml
index cbab1f6aab..f6c208be1e 100644
--- a/ansible/roles/prechecks/tasks/service_checks.yml
+++ b/ansible/roles/prechecks/tasks/service_checks.yml
@@ -4,6 +4,7 @@
   command: "{{ kolla_container_engine }} --version"
   register: result
   changed_when: false
+  check_mode: false
   when: inventory_hostname in groups['baremetal']
   failed_when: result is failed
                or result.stdout | regex_replace('.*\\b(\\d+\\.\\d+\\.\\d+)\\b.*', '\\1') is version(docker_version_min, '<')
@@ -19,12 +20,14 @@
   register: result
   changed_when: false
   failed_when: result.stdout | regex_replace('(.*ssh_key.*)', '') is search(":")
+  check_mode: false
 
 - name: Check if nscd is running
   command: pgrep nscd
   ignore_errors: yes
   failed_when: false
   changed_when: false
+  check_mode: false
   register: nscd_status
 
 - name: Fail if nscd is running
diff --git a/ansible/roles/prechecks/tasks/timesync_checks.yml b/ansible/roles/prechecks/tasks/timesync_checks.yml
index d676a69785..c6a9bd2a07 100644
--- a/ansible/roles/prechecks/tasks/timesync_checks.yml
+++ b/ansible/roles/prechecks/tasks/timesync_checks.yml
@@ -14,6 +14,7 @@
       register: systemctl_is_active
       changed_when: false
       failed_when: false
+      check_mode: false
 
     - name: Fail if a host NTP daemon is not running
       fail:
@@ -31,6 +32,7 @@
       command: timedatectl status
       register: timedatectl_status
       changed_when: false
+      check_mode: false
 
     - name: Fail if the clock is not synchronized
       fail:
diff --git a/ansible/roles/prechecks/tasks/user_checks.yml b/ansible/roles/prechecks/tasks/user_checks.yml
index 82f273e57e..94fd5b4668 100644
--- a/ansible/roles/prechecks/tasks/user_checks.yml
+++ b/ansible/roles/prechecks/tasks/user_checks.yml
@@ -17,3 +17,4 @@
   register: result
   failed_when: result is failed
   changed_when: False
+  check_mode: false
diff --git a/ansible/roles/prometheus/tasks/precheck.yml b/ansible/roles/prometheus/tasks/precheck.yml
index fe5d763059..af0592a3a5 100644
--- a/ansible/roles/prometheus/tasks/precheck.yml
+++ b/ansible/roles/prometheus/tasks/precheck.yml
@@ -22,6 +22,7 @@
       - prometheus_blackbox_exporter
       - prometheus_libvirt_exporter
       - prometheus_msteams
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Prometheus server
diff --git a/ansible/roles/rabbitmq/tasks/precheck.yml b/ansible/roles/rabbitmq/tasks/precheck.yml
index 8743f5c8aa..3b0b6efd8a 100644
--- a/ansible/roles/rabbitmq/tasks/precheck.yml
+++ b/ansible/roles/rabbitmq/tasks/precheck.yml
@@ -12,6 +12,7 @@
     name:
       - rabbitmq
       - outward_rabbitmq
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for RabbitMQ
@@ -63,6 +64,7 @@
     nss_database: "{{ 'ahostsv4' if api_address_family == 'ipv4' else 'ahostsv6' }}"
   command: "getent {{ nss_database }} {{ hostvars[item].ansible_facts.hostname }}"
   changed_when: false
+  check_mode: false
   register: rabbitmq_hostnames
   with_items: "{{ groups['rabbitmq'] }}"
 
@@ -150,6 +152,7 @@
     nss_database: "{{ 'ahostsv4' if api_address_family == 'ipv4' else 'ahostsv6' }}"
   command: "getent {{ nss_database }} {{ hostvars[item].ansible_facts.hostname }}"
   changed_when: false
+  check_mode: false
   register: outward_rabbitmq_hostnames
   with_items: "{{ groups['outward-rabbitmq'] }}"
   when:
diff --git a/ansible/roles/redis/tasks/precheck.yml b/ansible/roles/redis/tasks/precheck.yml
index 8a89d2ab85..e9abc14aa4 100644
--- a/ansible/roles/redis/tasks/precheck.yml
+++ b/ansible/roles/redis/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - redis
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Redis
diff --git a/ansible/roles/sahara/tasks/precheck.yml b/ansible/roles/sahara/tasks/precheck.yml
index 401e517a4c..a0e3080496 100644
--- a/ansible/roles/sahara/tasks/precheck.yml
+++ b/ansible/roles/sahara/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - sahara_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Sahara API
diff --git a/ansible/roles/senlin/tasks/precheck.yml b/ansible/roles/senlin/tasks/precheck.yml
index 738b3319d2..6ae8963396 100644
--- a/ansible/roles/senlin/tasks/precheck.yml
+++ b/ansible/roles/senlin/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - senlin_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Senlin API
diff --git a/ansible/roles/solum/tasks/precheck.yml b/ansible/roles/solum/tasks/precheck.yml
index f817194d48..82b4f6fd46 100644
--- a/ansible/roles/solum/tasks/precheck.yml
+++ b/ansible/roles/solum/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - solum_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Solum Application Deployment
diff --git a/ansible/roles/swift/tasks/precheck.yml b/ansible/roles/swift/tasks/precheck.yml
index 73e088757b..c81c4de0e4 100644
--- a/ansible/roles/swift/tasks/precheck.yml
+++ b/ansible/roles/swift/tasks/precheck.yml
@@ -14,6 +14,7 @@
       - swift_container_server
       - swift_object_server
       - swift_proxy_server
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Swift Account Server
diff --git a/ansible/roles/tacker/tasks/precheck.yml b/ansible/roles/tacker/tasks/precheck.yml
index 3db48fa026..5dce1aa66f 100644
--- a/ansible/roles/tacker/tasks/precheck.yml
+++ b/ansible/roles/tacker/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - tacker_server
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Tacker Server
diff --git a/ansible/roles/trove/tasks/precheck.yml b/ansible/roles/trove/tasks/precheck.yml
index 58d477ce78..08743e633a 100644
--- a/ansible/roles/trove/tasks/precheck.yml
+++ b/ansible/roles/trove/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - trove_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Trove API
diff --git a/ansible/roles/venus/tasks/precheck.yml b/ansible/roles/venus/tasks/precheck.yml
index 9fcde07a44..1a57aed326 100644
--- a/ansible/roles/venus/tasks/precheck.yml
+++ b/ansible/roles/venus/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - venus_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Venus API
diff --git a/ansible/roles/vitrage/tasks/precheck.yml b/ansible/roles/vitrage/tasks/precheck.yml
index 5517f09cdf..809f9d53df 100644
--- a/ansible/roles/vitrage/tasks/precheck.yml
+++ b/ansible/roles/vitrage/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - vitrage_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for vitrage API
diff --git a/ansible/roles/watcher/tasks/precheck.yml b/ansible/roles/watcher/tasks/precheck.yml
index 1f9a872fab..f75833aeb3 100644
--- a/ansible/roles/watcher/tasks/precheck.yml
+++ b/ansible/roles/watcher/tasks/precheck.yml
@@ -11,6 +11,7 @@
     container_engine: "{{ kolla_container_engine }}"
     name:
       - watcher_api
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for watcher API
diff --git a/ansible/roles/zun/tasks/precheck.yml b/ansible/roles/zun/tasks/precheck.yml
index e8322b1e2f..bc79ff8bc9 100644
--- a/ansible/roles/zun/tasks/precheck.yml
+++ b/ansible/roles/zun/tasks/precheck.yml
@@ -13,6 +13,7 @@
       - zun_api
       - zun_wsproxy
       - zun_cni_daemon
+  check_mode: false
   register: container_facts
 
 - name: Checking free port for Zun API
diff --git a/releasenotes/notes/prechecks-check-mode-65a7cb4cac82f4c7.yaml b/releasenotes/notes/prechecks-check-mode-65a7cb4cac82f4c7.yaml
new file mode 100644
index 0000000000..5d1c5fc77e
--- /dev/null
+++ b/releasenotes/notes/prechecks-check-mode-65a7cb4cac82f4c7.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fixes an issue where some prechecks would fail or not run when running in
+    check mode. `LP#2002657
+    <https://bugs.launchpad.net/kolla-ansible/+bug/2002657>`__