diff --git a/ansible/roles/neutron/tasks/precheck.yml b/ansible/roles/neutron/tasks/precheck.yml
index 36804ae7940214aa5a01f2f1c354776539fab7a4..119dd6d9e0953c48738952c14cac6e6a24db2f73 100644
--- a/ansible/roles/neutron/tasks/precheck.yml
+++ b/ansible/roles/neutron/tasks/precheck.yml
@@ -25,31 +25,30 @@
     - inventory_hostname in groups['neutron-server']
 
 - name: Checking number of network agents
-  fail:
-    msg: "Number of network agents are less than two when enabling agent ha"
+  assert:
+    that:
+      - groups['neutron-dhcp-agent'] | length > 1
+      - groups['neutron-l3-agent'] | length > 1
+    fail_msg: "Number of network agents are less than two when enabling agent ha"
   changed_when: false
   run_once: True
   when:
     - enable_neutron_agent_ha | bool
-    - groups['neutron-dhcp-agent'] | length < 2
-      or groups['neutron-l3-agent'] | length < 2
 
 - name: Checking tenant network types
+  assert:
+    that: item in type_drivers
+    fail_msg: "Tenant network type '{{ item }}' is not in type drivers [{{ neutron_type_drivers }}]"
+  with_items: "{{ tenant_network_types }}"
   vars:
     type_drivers: "{{ neutron_type_drivers.replace(' ', '').split(',') | reject('equalto', '') | list }}"
     tenant_network_types: "{{ neutron_tenant_network_types.replace(' ', '').split(',') | reject('equalto', '') | list }}"
-  fail:
-    msg: "Tenant network type '{{ item }}' is not in type drivers [{{ neutron_type_drivers }}]"
-  changed_when: false
-  when: item not in type_drivers
   run_once: true
-  with_items: "{{ tenant_network_types }}"
 
 - name: Checking whether Ironic enabled
-  fail:
-    msg: "Ironic must be enabled when using networking-baremetal/ironic-neutron-agent"
-  changed_when: false
+  assert:
+    that: enable_ironic | bool
+    fail_msg: "Ironic must be enabled when using networking-baremetal/ironic-neutron-agent"
   run_once: True
   when:
     - enable_ironic_neutron_agent | bool
-    - not (enable_ironic | bool)