diff --git a/ansible/roles/mistral/tasks/deploy.yml b/ansible/roles/mistral/tasks/deploy.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5f062e5c51f1bad8fe69bb78b6b92c77f79506c4
--- /dev/null
+++ b/ansible/roles/mistral/tasks/deploy.yml
@@ -0,0 +1,16 @@
+---
+- include: register.yml
+  when: inventory_hostname in groups['mistral-api']
+
+- include: config.yml
+  when: inventory_hostname in groups['mistral-api'] or
+        inventory_hostname in groups['mistral-engine'] or
+        inventory_hostname in groups['mistral-executor']
+
+- include: bootstrap.yml
+  when: inventory_hostname in groups['mistral-api']
+
+- include: start.yml
+  when: inventory_hostname in groups['mistral-api'] or
+        inventory_hostname in groups['mistral-engine'] or
+        inventory_hostname in groups['mistral-executor']
diff --git a/ansible/roles/mistral/tasks/main.yml b/ansible/roles/mistral/tasks/main.yml
index 5f062e5c51f1bad8fe69bb78b6b92c77f79506c4..e261f83ee59e614d55f00ca3ce9f8394b8b0ab4e 100644
--- a/ansible/roles/mistral/tasks/main.yml
+++ b/ansible/roles/mistral/tasks/main.yml
@@ -1,16 +1,8 @@
 ---
-- include: register.yml
-  when: inventory_hostname in groups['mistral-api']
+- include: "{{ action }}.yml"
+  when: not common_run
 
-- include: config.yml
-  when: inventory_hostname in groups['mistral-api'] or
-        inventory_hostname in groups['mistral-engine'] or
-        inventory_hostname in groups['mistral-executor']
-
-- include: bootstrap.yml
-  when: inventory_hostname in groups['mistral-api']
-
-- include: start.yml
-  when: inventory_hostname in groups['mistral-api'] or
-        inventory_hostname in groups['mistral-engine'] or
-        inventory_hostname in groups['mistral-executor']
+- name: Registering common role has run
+  set_fact:
+    common_run: True
+  when: not common_run
diff --git a/ansible/roles/mistral/tasks/pull.yml b/ansible/roles/mistral/tasks/pull.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f8782d9f095d7ed7c8ac1f41e83b7b11725ac2da
--- /dev/null
+++ b/ansible/roles/mistral/tasks/pull.yml
@@ -0,0 +1,21 @@
+---
+- name: Pulling mistral-api image
+  kolla_docker:
+    action: "pull_image"
+    common_options: "{{ docker_common_options }}"
+    image: "{{ mistral_api_image_full }}"
+  when: inventory_hostname in groups['mistral-api']
+
+- name: Pulling mistral-engine image
+  kolla_docker:
+    action: "pull_image"
+    common_options: "{{ docker_common_options }}"
+    image: "{{ mistral_engine_image_full }}"
+  when: inventory_hostname in groups['mistral-engine']
+
+- name: Pulling mistral-executor image
+  kolla_docker:
+    action: "pull_image"
+    common_options: "{{ docker_common_options }}"
+    image: "{{ mistral_executorngine_image_full }}"
+  when: inventory_hostname in groups['mistral-executor']