diff --git a/ansible/roles/openvswitch/tasks/post-config.yml b/ansible/roles/openvswitch/tasks/post-config.yml
index 6edbbaed3d10de8bc0c23a2da31b0ce722443ee1..2c0b4610659e01ef9aa666a974aa8f85ac755ba8 100644
--- a/ansible/roles/openvswitch/tasks/post-config.yml
+++ b/ansible/roles/openvswitch/tasks/post-config.yml
@@ -20,12 +20,31 @@
 
 - name: Ensuring OVS bridge is properly setup
   become: true
-  command: "{{ kolla_container_engine }} exec openvswitch_db /usr/local/bin/kolla_ensure_openvswitch_configured {{ item.0 }} {{ item.1 }}"
-  register: status
-  changed_when: status.stdout.find('changed') != -1
+  kolla_toolbox:
+    container_engine: "{{ kolla_container_engine }}"
+    user: root
+    module_name: openvswitch_bridge
+    module_args:
+      bridge: "{{ item.0 }}"
+      fail_mode: secure
+  loop:
+    - "{{ neutron_bridge_name.split(',') }}"
   when:
     - inventory_hostname in groups["network"]
       or (inventory_hostname in groups["compute"] and computes_need_external_bridge | bool )
+
+- name: Ensuring OVS ports are properly setup
+  become: true
+  kolla_toolbox:
+    container_engine: "{{ kolla_container_engine }}"
+    user: root
+    module_name: openvswitch_port
+    module_args:
+      bridge: "{{ item.0 }}"
+      port: "{{ item.1 }}"
   with_together:
     - "{{ neutron_bridge_name.split(',') }}"
     - "{{ neutron_external_interface.split(',') }}"
+  when:
+    - inventory_hostname in groups["network"]
+      or (inventory_hostname in groups["compute"] and computes_need_external_bridge | bool )