diff --git a/ansible/roles/aodh/tasks/check-containers.yml b/ansible/roles/aodh/tasks/check-containers.yml
new file mode 100644
index 0000000000..899dc6d6f3
--- /dev/null
+++ b/ansible/roles/aodh/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check aodh containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ aodh_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/aodh/tasks/config.yml b/ansible/roles/aodh/tasks/config.yml
index a5e8279709..a9cf266753 100644
--- a/ansible/roles/aodh/tasks/config.yml
+++ b/ansible/roles/aodh/tasks/config.yml
@@ -90,19 +90,5 @@
   notify:
     - "Restart aodh-api container"
 
-- name: Check aodh containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ aodh_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/aodh/tasks/deploy-containers.yml b/ansible/roles/aodh/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/aodh/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/barbican/tasks/check-containers.yml b/ansible/roles/barbican/tasks/check-containers.yml
new file mode 100644
index 0000000000..0afc847261
--- /dev/null
+++ b/ansible/roles/barbican/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check barbican containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ barbican_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/barbican/tasks/config.yml b/ansible/roles/barbican/tasks/config.yml
index b983e19e0b..c8a8c70623 100644
--- a/ansible/roles/barbican/tasks/config.yml
+++ b/ansible/roles/barbican/tasks/config.yml
@@ -134,19 +134,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check barbican containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ barbican_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/barbican/tasks/deploy-containers.yml b/ansible/roles/barbican/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/barbican/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/blazar/tasks/check-containers.yml b/ansible/roles/blazar/tasks/check-containers.yml
new file mode 100644
index 0000000000..4fb1d8b68c
--- /dev/null
+++ b/ansible/roles/blazar/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check blazar containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ blazar_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/blazar/tasks/config.yml b/ansible/roles/blazar/tasks/config.yml
index f959c3250d..adf0562554 100644
--- a/ansible/roles/blazar/tasks/config.yml
+++ b/ansible/roles/blazar/tasks/config.yml
@@ -76,19 +76,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check blazar containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ blazar_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/blazar/tasks/deploy-containers.yml b/ansible/roles/blazar/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/blazar/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/ceilometer/tasks/check-containers.yml b/ansible/roles/ceilometer/tasks/check-containers.yml
new file mode 100644
index 0000000000..ef6d6573d6
--- /dev/null
+++ b/ansible/roles/ceilometer/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check ceilometer containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes | reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ ceilometer_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/ceilometer/tasks/config.yml b/ansible/roles/ceilometer/tasks/config.yml
index ec2a0c60af..0eeb597b18 100644
--- a/ansible/roles/ceilometer/tasks/config.yml
+++ b/ansible/roles/ceilometer/tasks/config.yml
@@ -329,21 +329,5 @@
   notify:
     - "Restart {{ item.key }} container"
 
-# check whether the containers parameter is changed. If yes, trigger the handler.
-- name: Check ceilometer containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes | reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ ceilometer_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/ceilometer/tasks/deploy-containers.yml b/ansible/roles/ceilometer/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/ceilometer/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/chrony/tasks/check-containers.yml b/ansible/roles/chrony/tasks/check-containers.yml
new file mode 100644
index 0000000000..a9e937b684
--- /dev/null
+++ b/ansible/roles/chrony/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check chrony container
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ chrony_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/chrony/tasks/config.yml b/ansible/roles/chrony/tasks/config.yml
index 0d3690fad8..67a25706e4 100644
--- a/ansible/roles/chrony/tasks/config.yml
+++ b/ansible/roles/chrony/tasks/config.yml
@@ -52,20 +52,5 @@
   notify:
     - Restart chrony container
 
-- name: Check chrony container
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ chrony_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/chrony/tasks/deploy-containers.yml b/ansible/roles/chrony/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/chrony/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/cinder/tasks/check-containers.yml b/ansible/roles/cinder/tasks/check-containers.yml
new file mode 100644
index 0000000000..184933646c
--- /dev/null
+++ b/ansible/roles/cinder/tasks/check-containers.yml
@@ -0,0 +1,18 @@
+---
+- name: Check cinder containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
+    dimensions: "{{ item.value.dimensions }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    ipc_mode: "{{ item.value.ipc_mode | default('') }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ cinder_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/cinder/tasks/config.yml b/ansible/roles/cinder/tasks/config.yml
index a094d6b7f7..1883abae5e 100644
--- a/ansible/roles/cinder/tasks/config.yml
+++ b/ansible/roles/cinder/tasks/config.yml
@@ -130,21 +130,5 @@
   notify:
     - Restart cinder-volume container
 
-- name: Check cinder containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
-    dimensions: "{{ item.value.dimensions }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    ipc_mode: "{{ item.value.ipc_mode | default('') }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ cinder_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/cinder/tasks/deploy-containers.yml b/ansible/roles/cinder/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/cinder/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/cloudkitty/tasks/check-containers.yml b/ansible/roles/cloudkitty/tasks/check-containers.yml
new file mode 100644
index 0000000000..7f65aa85b2
--- /dev/null
+++ b/ansible/roles/cloudkitty/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check cloudkitty containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ cloudkitty_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/cloudkitty/tasks/config.yml b/ansible/roles/cloudkitty/tasks/config.yml
index 709b134426..7ab261265f 100644
--- a/ansible/roles/cloudkitty/tasks/config.yml
+++ b/ansible/roles/cloudkitty/tasks/config.yml
@@ -112,19 +112,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check cloudkitty containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ cloudkitty_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/cloudkitty/tasks/deploy-containers.yml b/ansible/roles/cloudkitty/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/cloudkitty/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/collectd/tasks/check-containers.yml b/ansible/roles/collectd/tasks/check-containers.yml
new file mode 100644
index 0000000000..f49a677c87
--- /dev/null
+++ b/ansible/roles/collectd/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check collectd containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ collectd_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/collectd/tasks/config.yml b/ansible/roles/collectd/tasks/config.yml
index d15ab2eca3..4a23a8adf2 100644
--- a/ansible/roles/collectd/tasks/config.yml
+++ b/ansible/roles/collectd/tasks/config.yml
@@ -57,20 +57,5 @@
   notify:
     - Restart collectd container
 
-- name: Check collectd containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ collectd_services }}"
-  notify:
-    - Restart collectd container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/collectd/tasks/deploy-containers.yml b/ansible/roles/collectd/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/collectd/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/common/tasks/check-containers.yml b/ansible/roles/common/tasks/check-containers.yml
new file mode 100644
index 0000000000..1f00f006da
--- /dev/null
+++ b/ansible/roles/common/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check common containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    environment: "{{ item.value.environment }}"
+  when:
+    - item.value.enabled | bool
+  with_dict: "{{ common_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/common/tasks/config.yml b/ansible/roles/common/tasks/config.yml
index 6ff7651ba8..96a2b26a88 100644
--- a/ansible/roles/common/tasks/config.yml
+++ b/ansible/roles/common/tasks/config.yml
@@ -353,20 +353,5 @@
     - item.key != "kolla-toolbox"
   with_dict: "{{ common_services }}"
 
-- name: Check common containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    environment: "{{ item.value.environment }}"
-  when:
-    - kolla_action != "config"
-    - item.value.enabled | bool
-  with_dict: "{{ common_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/common/tasks/deploy-containers.yml b/ansible/roles/common/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/common/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/congress/tasks/check-containers.yml b/ansible/roles/congress/tasks/check-containers.yml
new file mode 100644
index 0000000000..7492624828
--- /dev/null
+++ b/ansible/roles/congress/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check congress containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ congress_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/congress/tasks/config.yml b/ansible/roles/congress/tasks/config.yml
index 269bcd25b1..1d69672d21 100644
--- a/ansible/roles/congress/tasks/config.yml
+++ b/ansible/roles/congress/tasks/config.yml
@@ -76,19 +76,5 @@
   notify:
     - "Restart {{ item.key }} container"
 
-- name: Check congress containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ congress_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/congress/tasks/deploy-containers.yml b/ansible/roles/congress/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/congress/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/cyborg/tasks/check-containers.yml b/ansible/roles/cyborg/tasks/check-containers.yml
new file mode 100644
index 0000000000..1bfae3f685
--- /dev/null
+++ b/ansible/roles/cyborg/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check cyborg containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ cyborg_services }}"
+  notify:
+    - Restart {{ item.key }} container
diff --git a/ansible/roles/cyborg/tasks/config.yml b/ansible/roles/cyborg/tasks/config.yml
index b222b5ae3f..63521b9300 100644
--- a/ansible/roles/cyborg/tasks/config.yml
+++ b/ansible/roles/cyborg/tasks/config.yml
@@ -99,19 +99,5 @@
   notify:
     - Restart cyborg-api container
 
-- name: Check cyborg containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ cyborg_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/cyborg/tasks/deploy-containers.yml b/ansible/roles/cyborg/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/cyborg/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/designate/tasks/check-containers.yml b/ansible/roles/designate/tasks/check-containers.yml
new file mode 100644
index 0000000000..daa4497e8e
--- /dev/null
+++ b/ansible/roles/designate/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check designate containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ designate_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/designate/tasks/config.yml b/ansible/roles/designate/tasks/config.yml
index cb1e3d4875..1f5e5e49de 100644
--- a/ansible/roles/designate/tasks/config.yml
+++ b/ansible/roles/designate/tasks/config.yml
@@ -146,19 +146,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check designate containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ designate_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/designate/tasks/deploy-containers.yml b/ansible/roles/designate/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/designate/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/elasticsearch/tasks/check-containers.yml b/ansible/roles/elasticsearch/tasks/check-containers.yml
new file mode 100644
index 0000000000..b48b95fef0
--- /dev/null
+++ b/ansible/roles/elasticsearch/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check elasticsearch containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+    environment: "{{ item.value.environment }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ elasticsearch_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/elasticsearch/tasks/config.yml b/ansible/roles/elasticsearch/tasks/config.yml
index 096c09d873..0e0e626e7b 100644
--- a/ansible/roles/elasticsearch/tasks/config.yml
+++ b/ansible/roles/elasticsearch/tasks/config.yml
@@ -47,20 +47,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check elasticsearch containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-    environment: "{{ item.value.environment }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ elasticsearch_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/elasticsearch/tasks/deploy-containers.yml b/ansible/roles/elasticsearch/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/elasticsearch/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/etcd/tasks/check-containers.yml b/ansible/roles/etcd/tasks/check-containers.yml
new file mode 100644
index 0000000000..aa39144d38
--- /dev/null
+++ b/ansible/roles/etcd/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check etcd containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+    environment: "{{ item.value.environment }}"
+  when:
+    - item.value.enabled | bool
+    - inventory_hostname in groups[item.value.group]
+  with_dict: "{{ etcd_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/etcd/tasks/config.yml b/ansible/roles/etcd/tasks/config.yml
index 0d98fef79c..c07a2f8a8f 100644
--- a/ansible/roles/etcd/tasks/config.yml
+++ b/ansible/roles/etcd/tasks/config.yml
@@ -25,20 +25,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check etcd containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-    environment: "{{ item.value.environment }}"
-  when:
-    - kolla_action != "config"
-    - item.value.enabled | bool
-    - inventory_hostname in groups[item.value.group]
-  with_dict: "{{ etcd_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/etcd/tasks/deploy-containers.yml b/ansible/roles/etcd/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/etcd/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/freezer/tasks/check-containers.yml b/ansible/roles/freezer/tasks/check-containers.yml
new file mode 100644
index 0000000000..1e5034dae7
--- /dev/null
+++ b/ansible/roles/freezer/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check freezer containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ freezer_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/freezer/tasks/config.yml b/ansible/roles/freezer/tasks/config.yml
index cf85a2789a..c2ea2cb6d3 100644
--- a/ansible/roles/freezer/tasks/config.yml
+++ b/ansible/roles/freezer/tasks/config.yml
@@ -90,19 +90,5 @@
   notify:
     - "Restart {{ item.key }} container"
 
-- name: Check freezer containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ freezer_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/freezer/tasks/deploy-containers.yml b/ansible/roles/freezer/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/freezer/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/glance/tasks/check-containers.yml b/ansible/roles/glance/tasks/check-containers.yml
new file mode 100644
index 0000000000..41d76c7602
--- /dev/null
+++ b/ansible/roles/glance/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check glance containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    environment: "{{ item.value.environment | default(omit) }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - item.value.host_in_groups | bool
+    - item.value.enabled | bool
+  with_dict: "{{ glance_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/glance/tasks/config.yml b/ansible/roles/glance/tasks/config.yml
index 5416ce6584..a00dfa460b 100644
--- a/ansible/roles/glance/tasks/config.yml
+++ b/ansible/roles/glance/tasks/config.yml
@@ -124,20 +124,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check glance containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    environment: "{{ item.value.environment | default(omit) }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - item.value.host_in_groups | bool
-    - item.value.enabled | bool
-  with_dict: "{{ glance_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/glance/tasks/deploy-containers.yml b/ansible/roles/glance/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/glance/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/gnocchi/tasks/check-containers.yml b/ansible/roles/gnocchi/tasks/check-containers.yml
new file mode 100644
index 0000000000..9659330f00
--- /dev/null
+++ b/ansible/roles/gnocchi/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check gnocchi containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ gnocchi_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/gnocchi/tasks/config.yml b/ansible/roles/gnocchi/tasks/config.yml
index 1468e77b68..e93caa2e7c 100644
--- a/ansible/roles/gnocchi/tasks/config.yml
+++ b/ansible/roles/gnocchi/tasks/config.yml
@@ -102,19 +102,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check gnocchi containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ gnocchi_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/gnocchi/tasks/deploy-containers.yml b/ansible/roles/gnocchi/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/gnocchi/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/grafana/tasks/check-containers.yml b/ansible/roles/grafana/tasks/check-containers.yml
new file mode 100644
index 0000000000..bb2f46ae75
--- /dev/null
+++ b/ansible/roles/grafana/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check grafana containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ grafana_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/grafana/tasks/config.yml b/ansible/roles/grafana/tasks/config.yml
index eb30f3746a..0c695c5ed6 100644
--- a/ansible/roles/grafana/tasks/config.yml
+++ b/ansible/roles/grafana/tasks/config.yml
@@ -95,19 +95,5 @@
   notify:
     - Restart grafana container
 
-- name: Check grafana containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ grafana_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/grafana/tasks/deploy-containers.yml b/ansible/roles/grafana/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/grafana/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/haproxy/tasks/check-containers.yml b/ansible/roles/haproxy/tasks/check-containers.yml
new file mode 100644
index 0000000000..a7ce8b4d81
--- /dev/null
+++ b/ansible/roles/haproxy/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Deploy haproxy containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ haproxy_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/haproxy/tasks/config.yml b/ansible/roles/haproxy/tasks/config.yml
index bea3e76714..fb276fedfb 100644
--- a/ansible/roles/haproxy/tasks/config.yml
+++ b/ansible/roles/haproxy/tasks/config.yml
@@ -144,20 +144,5 @@
   notify:
     - Restart haproxy container
 
-- name: Check haproxy containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ haproxy_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/haproxy/tasks/deploy-containers.yml b/ansible/roles/haproxy/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/haproxy/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/heat/tasks/check-containers.yml b/ansible/roles/heat/tasks/check-containers.yml
new file mode 100644
index 0000000000..485287757c
--- /dev/null
+++ b/ansible/roles/heat/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check heat containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ heat_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/heat/tasks/config.yml b/ansible/roles/heat/tasks/config.yml
index cf901bc59b..3d55e6bb1c 100644
--- a/ansible/roles/heat/tasks/config.yml
+++ b/ansible/roles/heat/tasks/config.yml
@@ -76,19 +76,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check heat containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ heat_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/heat/tasks/deploy-containers.yml b/ansible/roles/heat/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/heat/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/horizon/tasks/check-containers.yml b/ansible/roles/horizon/tasks/check-containers.yml
new file mode 100644
index 0000000000..24b0aae16c
--- /dev/null
+++ b/ansible/roles/horizon/tasks/check-containers.yml
@@ -0,0 +1,19 @@
+---
+- name: Deploy horizon container
+  vars:
+    horizon: "{{ horizon_services['horizon'] }}"
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ horizon.container_name }}"
+    image: "{{ horizon.image }}"
+    environment: "{{ horizon.environment }}"
+    volumes: "{{ horizon.volumes }}"
+    dimensions: "{{ horizon.dimensions }}"
+  when:
+    - inventory_hostname in groups[horizon.group]
+    - horizon.enabled | bool
+  with_dict: "{{ horizon_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/horizon/tasks/config.yml b/ansible/roles/horizon/tasks/config.yml
index 38661b8561..08baf4d13b 100644
--- a/ansible/roles/horizon/tasks/config.yml
+++ b/ansible/roles/horizon/tasks/config.yml
@@ -131,21 +131,5 @@
   notify:
     - Restart horizon container
 
-- name: Check horizon container
-  vars:
-    horizon: "{{ horizon_services['horizon'] }}"
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ horizon.container_name }}"
-    image: "{{ horizon.image }}"
-    environment: "{{ horizon.environment }}"
-    volumes: "{{ horizon.volumes }}"
-    dimensions: "{{ horizon.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[horizon.group]
-    - horizon.enabled | bool
-  notify:
-    - Restart horizon container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/horizon/tasks/deploy-containers.yml b/ansible/roles/horizon/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/horizon/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/influxdb/tasks/check-containers.yml b/ansible/roles/influxdb/tasks/check-containers.yml
new file mode 100644
index 0000000000..8807355df8
--- /dev/null
+++ b/ansible/roles/influxdb/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check influxdb containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ influxdb_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/influxdb/tasks/config.yml b/ansible/roles/influxdb/tasks/config.yml
index 16b3fc5efb..a4df382507 100644
--- a/ansible/roles/influxdb/tasks/config.yml
+++ b/ansible/roles/influxdb/tasks/config.yml
@@ -43,19 +43,5 @@
   notify:
     - Restart influxdb container
 
-- name: Check influxdb containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ influxdb_services }}"
-  notify:
-    - Restart influxdb container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/influxdb/tasks/deploy-containers.yml b/ansible/roles/influxdb/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/influxdb/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/ironic/tasks/check-containers.yml b/ansible/roles/ironic/tasks/check-containers.yml
new file mode 100644
index 0000000000..273cd3ae20
--- /dev/null
+++ b/ansible/roles/ironic/tasks/check-containers.yml
@@ -0,0 +1,18 @@
+---
+- name: Check ironic containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged|default(False) }}"
+    cap_add: "{{ item.value.cap_add|default([]) }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ ironic_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/ironic/tasks/config.yml b/ansible/roles/ironic/tasks/config.yml
index fa270f62a7..48243abd45 100644
--- a/ansible/roles/ironic/tasks/config.yml
+++ b/ansible/roles/ironic/tasks/config.yml
@@ -245,21 +245,5 @@
   notify:
     - "Restart {{ item.key }} container"
 
-- name: Check ironic containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged|default(False) }}"
-    cap_add: "{{ item.value.cap_add|default([]) }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ ironic_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/ironic/tasks/deploy-containers.yml b/ansible/roles/ironic/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/ironic/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/iscsi/tasks/check-containers.yml b/ansible/roles/iscsi/tasks/check-containers.yml
new file mode 100644
index 0000000000..6747d56047
--- /dev/null
+++ b/ansible/roles/iscsi/tasks/check-containers.yml
@@ -0,0 +1,18 @@
+---
+- name: Check iscsi containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    ipc_mode: "{{ item.value.ipc_mode }}"
+    privileged: "{{ item.value.privileged|default(False) }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ iscsi_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/iscsi/tasks/config.yml b/ansible/roles/iscsi/tasks/config.yml
index caf0f66b5f..85fb1e65a1 100644
--- a/ansible/roles/iscsi/tasks/config.yml
+++ b/ansible/roles/iscsi/tasks/config.yml
@@ -35,21 +35,5 @@
   notify:
     - "Restart {{ item.key }} container"
 
-- name: Check iscsi containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    ipc_mode: "{{ item.value.ipc_mode }}"
-    privileged: "{{ item.value.privileged|default(False) }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ iscsi_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/iscsi/tasks/deploy-containers.yml b/ansible/roles/iscsi/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/iscsi/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/kafka/tasks/check-containers.yml b/ansible/roles/kafka/tasks/check-containers.yml
new file mode 100644
index 0000000000..1e285db046
--- /dev/null
+++ b/ansible/roles/kafka/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check kafka containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    environment: "{{ item.value.environment }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ kafka_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/kafka/tasks/config.yml b/ansible/roles/kafka/tasks/config.yml
index 83da40425e..18f9c414dc 100644
--- a/ansible/roles/kafka/tasks/config.yml
+++ b/ansible/roles/kafka/tasks/config.yml
@@ -41,20 +41,5 @@
   notify:
     - Restart kafka container
 
-- name: Check kafka containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    environment: "{{ item.value.environment }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ kafka_services }}"
-  notify:
-    - Restart kafka container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/kafka/tasks/deploy-containers.yml b/ansible/roles/kafka/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/kafka/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/karbor/tasks/check-containers.yml b/ansible/roles/karbor/tasks/check-containers.yml
new file mode 100644
index 0000000000..cbfb448cf2
--- /dev/null
+++ b/ansible/roles/karbor/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check karbor containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ karbor_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/karbor/tasks/config.yml b/ansible/roles/karbor/tasks/config.yml
index 953175bf29..1337c1013d 100644
--- a/ansible/roles/karbor/tasks/config.yml
+++ b/ansible/roles/karbor/tasks/config.yml
@@ -79,19 +79,5 @@
   notify:
     - Restart karbor-protection container
 
-- name: Check karbor containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ karbor_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/karbor/tasks/deploy-containers.yml b/ansible/roles/karbor/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/karbor/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/keystone/tasks/check-containers.yml b/ansible/roles/keystone/tasks/check-containers.yml
new file mode 100644
index 0000000000..9f9ad7315a
--- /dev/null
+++ b/ansible/roles/keystone/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check keystone containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ keystone_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/keystone/tasks/config.yml b/ansible/roles/keystone/tasks/config.yml
index a36c06b5d0..08f0de6860 100644
--- a/ansible/roles/keystone/tasks/config.yml
+++ b/ansible/roles/keystone/tasks/config.yml
@@ -216,19 +216,5 @@
   notify:
     - Restart keystone-ssh container
 
-- name: Check keystone containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ keystone_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/keystone/tasks/deploy-containers.yml b/ansible/roles/keystone/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/keystone/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/kibana/tasks/check-containers.yml b/ansible/roles/kibana/tasks/check-containers.yml
new file mode 100644
index 0000000000..0cec20734b
--- /dev/null
+++ b/ansible/roles/kibana/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check kibana containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ kibana_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/kibana/tasks/config.yml b/ansible/roles/kibana/tasks/config.yml
index 84bc175e43..023dbdddcf 100644
--- a/ansible/roles/kibana/tasks/config.yml
+++ b/ansible/roles/kibana/tasks/config.yml
@@ -43,19 +43,5 @@
   notify:
     - Restart kibana container
 
-- name: Check kibana containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ kibana_services }}"
-  notify:
-    - Restart kibana container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/kibana/tasks/deploy-containers.yml b/ansible/roles/kibana/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/kibana/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/kuryr/tasks/check-containers.yml b/ansible/roles/kuryr/tasks/check-containers.yml
new file mode 100644
index 0000000000..0472c4dd6c
--- /dev/null
+++ b/ansible/roles/kuryr/tasks/check-containers.yml
@@ -0,0 +1,18 @@
+---
+- name: Check kuryr containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged|default(False) }}"
+    cap_add: "{{ item.value.cap_add }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ kuryr_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/kuryr/tasks/config.yml b/ansible/roles/kuryr/tasks/config.yml
index 67ce6b74b6..11ca493cd2 100644
--- a/ansible/roles/kuryr/tasks/config.yml
+++ b/ansible/roles/kuryr/tasks/config.yml
@@ -92,21 +92,5 @@
   notify:
     - Restart kuryr container
 
-- name: Check kuryr containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged|default(False) }}"
-    cap_add: "{{ item.value.cap_add }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ kuryr_services }}"
-  notify:
-    - Restart kuryr container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/kuryr/tasks/deploy-containers.yml b/ansible/roles/kuryr/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/kuryr/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/magnum/tasks/check-containers.yml b/ansible/roles/magnum/tasks/check-containers.yml
new file mode 100644
index 0000000000..519bdaefe7
--- /dev/null
+++ b/ansible/roles/magnum/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check magnum containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+    environment: "{{ item.value.environment }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ magnum_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/magnum/tasks/config.yml b/ansible/roles/magnum/tasks/config.yml
index 6deee91196..95b91ab2c1 100644
--- a/ansible/roles/magnum/tasks/config.yml
+++ b/ansible/roles/magnum/tasks/config.yml
@@ -76,20 +76,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check magnum containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-    environment: "{{ item.value.environment }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ magnum_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/magnum/tasks/deploy-containers.yml b/ansible/roles/magnum/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/magnum/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/manila/tasks/check-containers.yml b/ansible/roles/manila/tasks/check-containers.yml
new file mode 100644
index 0000000000..36bc73a8d8
--- /dev/null
+++ b/ansible/roles/manila/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check manila containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged|default(False) }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ manila_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/manila/tasks/config.yml b/ansible/roles/manila/tasks/config.yml
index 127ee82815..c1505dd9a9 100644
--- a/ansible/roles/manila/tasks/config.yml
+++ b/ansible/roles/manila/tasks/config.yml
@@ -114,20 +114,5 @@
   notify:
     - "Restart {{ item.key }} container"
 
-- name: Check manila containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged|default(False) }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ manila_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/manila/tasks/deploy-containers.yml b/ansible/roles/manila/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/manila/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/mariadb/tasks/check-containers.yml b/ansible/roles/mariadb/tasks/check-containers.yml
new file mode 100644
index 0000000000..5083b9ec13
--- /dev/null
+++ b/ansible/roles/mariadb/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check mariadb containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ mariadb_services }}"
+  notify:
+    - restart mariadb
diff --git a/ansible/roles/mariadb/tasks/config.yml b/ansible/roles/mariadb/tasks/config.yml
index cb05451974..1a58767c76 100644
--- a/ansible/roles/mariadb/tasks/config.yml
+++ b/ansible/roles/mariadb/tasks/config.yml
@@ -85,19 +85,5 @@
   notify:
     - restart mariadb
 
-- name: Check mariadb containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ mariadb_services }}"
-  notify:
-    - restart mariadb
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/mariadb/tasks/deploy-containers.yml b/ansible/roles/mariadb/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/mariadb/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/memcached/tasks/check-containers.yml b/ansible/roles/memcached/tasks/check-containers.yml
new file mode 100644
index 0000000000..da87317573
--- /dev/null
+++ b/ansible/roles/memcached/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check memcached container
+  vars:
+    service: "{{ memcached_services.memcached }}"
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ service.container_name }}"
+    image: "{{ service.image }}"
+    volumes: "{{ service.volumes }}"
+    dimensions: "{{ service.dimensions }}"
+  when:
+    - inventory_hostname in groups[service.group]
+    - service.enabled | bool
+  notify: Restart memcached container
diff --git a/ansible/roles/memcached/tasks/config.yml b/ansible/roles/memcached/tasks/config.yml
index 153d933b48..0e894e82f5 100644
--- a/ansible/roles/memcached/tasks/config.yml
+++ b/ansible/roles/memcached/tasks/config.yml
@@ -25,19 +25,5 @@
     - service.enabled | bool
   notify: Restart memcached container
 
-- name: Check memcached container
-  vars:
-    service: "{{ memcached_services.memcached }}"
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ service.container_name }}"
-    image: "{{ service.image }}"
-    volumes: "{{ service.volumes }}"
-    dimensions: "{{ service.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[service.group]
-    - service.enabled | bool
-  notify: Restart memcached container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/memcached/tasks/deploy-containers.yml b/ansible/roles/memcached/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/memcached/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/mistral/tasks/check-containers.yml b/ansible/roles/mistral/tasks/check-containers.yml
new file mode 100644
index 0000000000..a6f1f2d431
--- /dev/null
+++ b/ansible/roles/mistral/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check mistral containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ mistral_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/mistral/tasks/config.yml b/ansible/roles/mistral/tasks/config.yml
index a8d0784eae..584ceae70c 100644
--- a/ansible/roles/mistral/tasks/config.yml
+++ b/ansible/roles/mistral/tasks/config.yml
@@ -94,19 +94,5 @@
   notify:
     - "Restart mistral-event-engine container"
 
-- name: Check mistral containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ mistral_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/mistral/tasks/deploy-containers.yml b/ansible/roles/mistral/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/mistral/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/monasca/tasks/check-containers.yml b/ansible/roles/monasca/tasks/check-containers.yml
new file mode 100644
index 0000000000..e6f758ea2c
--- /dev/null
+++ b/ansible/roles/monasca/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check monasca containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    pid_mode: "{{ item.value.pid_mode|default('') }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ monasca_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/monasca/tasks/config.yml b/ansible/roles/monasca/tasks/config.yml
index f3c617c335..f4bd91caeb 100644
--- a/ansible/roles/monasca/tasks/config.yml
+++ b/ansible/roles/monasca/tasks/config.yml
@@ -413,20 +413,5 @@
   notify:
     - Restart monasca-grafana container
 
-- name: Check monasca containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    pid_mode: "{{ item.value.pid_mode|default('') }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ monasca_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/monasca/tasks/deploy-containers.yml b/ansible/roles/monasca/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/monasca/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/mongodb/tasks/check-containers.yml b/ansible/roles/mongodb/tasks/check-containers.yml
new file mode 100644
index 0000000000..b2b2e559cc
--- /dev/null
+++ b/ansible/roles/mongodb/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check mongodb containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged|default(False) }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ mongodb_services }}"
+  notify:
+    - Restart mongodb container
diff --git a/ansible/roles/mongodb/tasks/config.yml b/ansible/roles/mongodb/tasks/config.yml
index 6506d954de..2ae9ab4722 100644
--- a/ansible/roles/mongodb/tasks/config.yml
+++ b/ansible/roles/mongodb/tasks/config.yml
@@ -42,20 +42,5 @@
   notify:
     - Restart mongodb container
 
-- name: Check mongodb containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged|default(False) }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ mongodb_services }}"
-  notify:
-    - Restart mongodb container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/mongodb/tasks/deploy-containers.yml b/ansible/roles/mongodb/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/mongodb/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/multipathd/tasks/check-containers.yml b/ansible/roles/multipathd/tasks/check-containers.yml
new file mode 100644
index 0000000000..e2ebb98cbd
--- /dev/null
+++ b/ansible/roles/multipathd/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check multipathd containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    ipc_mode: "{{ item.value.ipc_mode }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ multipathd_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/multipathd/tasks/config.yml b/ansible/roles/multipathd/tasks/config.yml
index 79aca0856e..4a3da5c3e8 100644
--- a/ansible/roles/multipathd/tasks/config.yml
+++ b/ansible/roles/multipathd/tasks/config.yml
@@ -45,20 +45,5 @@
   notify:
     - Restart multipathd container
 
-- name: Check multipathd containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    ipc_mode: "{{ item.value.ipc_mode }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ multipathd_services }}"
-  notify:
-    - Restart multipathd container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/multipathd/tasks/deploy-containers.yml b/ansible/roles/multipathd/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/multipathd/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/murano/tasks/check-containers.yml b/ansible/roles/murano/tasks/check-containers.yml
new file mode 100644
index 0000000000..cabcf1262d
--- /dev/null
+++ b/ansible/roles/murano/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check murano containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ murano_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/murano/tasks/config.yml b/ansible/roles/murano/tasks/config.yml
index 5f94099279..89eb1c22dd 100644
--- a/ansible/roles/murano/tasks/config.yml
+++ b/ansible/roles/murano/tasks/config.yml
@@ -75,19 +75,5 @@
   notify:
     - "Restart {{ item.key }} container"
 
-- name: Check murano containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ murano_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/murano/tasks/deploy-containers.yml b/ansible/roles/murano/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/murano/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/neutron/tasks/check-containers.yml b/ansible/roles/neutron/tasks/check-containers.yml
new file mode 100644
index 0000000000..c21a045ea8
--- /dev/null
+++ b/ansible/roles/neutron/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check neutron containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - item.value.enabled | bool
+    - item.value.host_in_groups | bool
+  with_dict: "{{ neutron_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/neutron/tasks/config.yml b/ansible/roles/neutron/tasks/config.yml
index c001e3806c..f967f8bdac 100644
--- a/ansible/roles/neutron/tasks/config.yml
+++ b/ansible/roles/neutron/tasks/config.yml
@@ -400,21 +400,5 @@
   notify:
     - "Restart {{ item.0 }} container"
 
-# TODO check the environment change
-- name: Check neutron containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - item.value.enabled | bool
-    - item.value.host_in_groups | bool
-  with_dict: "{{ neutron_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/neutron/tasks/deploy-containers.yml b/ansible/roles/neutron/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/neutron/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/nova/tasks/check-containers.yml b/ansible/roles/nova/tasks/check-containers.yml
new file mode 100644
index 0000000000..8457a7cc9e
--- /dev/null
+++ b/ansible/roles/nova/tasks/check-containers.yml
@@ -0,0 +1,20 @@
+---
+- name: Check nova containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    environment: "{{ item.value.environment|default(omit) }}"
+    pid_mode: "{{ item.value.pid_mode|default('') }}"
+    ipc_mode: "{{ item.value.ipc_mode|default(omit) }}"
+    privileged: "{{ item.value.privileged|default(False) }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ nova_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/nova/tasks/config.yml b/ansible/roles/nova/tasks/config.yml
index 9e126cbd18..46fa163618 100644
--- a/ansible/roles/nova/tasks/config.yml
+++ b/ansible/roles/nova/tasks/config.yml
@@ -226,24 +226,5 @@
   notify:
     - "Restart {{ item.key }} container"
 
-# check whether the containers parameter is changed. If yes, trigger the handler
-- name: Check nova containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    environment: "{{ item.value.environment|default(omit) }}"
-    pid_mode: "{{ item.value.pid_mode|default('') }}"
-    ipc_mode: "{{ item.value.ipc_mode|default(omit) }}"
-    privileged: "{{ item.value.privileged|default(False) }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ nova_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/nova/tasks/deploy-containers.yml b/ansible/roles/nova/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/nova/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/octavia/tasks/check-containers.yml b/ansible/roles/octavia/tasks/check-containers.yml
new file mode 100644
index 0000000000..e55da929f7
--- /dev/null
+++ b/ansible/roles/octavia/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check octavia containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ octavia_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/octavia/tasks/config.yml b/ansible/roles/octavia/tasks/config.yml
index d0feb29f01..50be6efb00 100644
--- a/ansible/roles/octavia/tasks/config.yml
+++ b/ansible/roles/octavia/tasks/config.yml
@@ -130,19 +130,5 @@
   notify:
     - Restart octavia-health-manager container
 
-- name: Check octavia containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ octavia_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/octavia/tasks/deploy-containers.yml b/ansible/roles/octavia/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/octavia/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/opendaylight/tasks/check-containers.yml b/ansible/roles/opendaylight/tasks/check-containers.yml
new file mode 100644
index 0000000000..8e264b3aad
--- /dev/null
+++ b/ansible/roles/opendaylight/tasks/check-containers.yml
@@ -0,0 +1,18 @@
+---
+- name: Check opendaylight containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+    tty: "{{ item.value.tty }}"
+  when:
+    - item.value.enabled | bool
+    - item.value.host_in_groups | bool
+  with_dict: "{{ opendaylight_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/opendaylight/tasks/config.yml b/ansible/roles/opendaylight/tasks/config.yml
index 02c5dc2f59..d7258a58f3 100644
--- a/ansible/roles/opendaylight/tasks/config.yml
+++ b/ansible/roles/opendaylight/tasks/config.yml
@@ -193,21 +193,5 @@
   notify:
     - Restart opendaylight container
 
-- name: Check opendaylight containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-    tty: "{{ item.value.tty }}"
-  when:
-    - kolla_action != "config"
-    - item.value.enabled | bool
-    - item.value.host_in_groups | bool
-  with_dict: "{{ opendaylight_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/opendaylight/tasks/deploy-containers.yml b/ansible/roles/opendaylight/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/opendaylight/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/openvswitch/tasks/check-containers.yml b/ansible/roles/openvswitch/tasks/check-containers.yml
new file mode 100644
index 0000000000..1e5fa464fe
--- /dev/null
+++ b/ansible/roles/openvswitch/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check openvswitch containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - item.value.enabled | bool
+    - item.value.host_in_groups | bool
+  with_dict: "{{ openvswitch_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/openvswitch/tasks/config.yml b/ansible/roles/openvswitch/tasks/config.yml
index 038e830027..4b5294bc45 100644
--- a/ansible/roles/openvswitch/tasks/config.yml
+++ b/ansible/roles/openvswitch/tasks/config.yml
@@ -60,20 +60,5 @@
   notify:
     - "Restart openvswitch-db-server container"
 
-- name: Check openvswitch containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - item.value.enabled | bool
-    - item.value.host_in_groups | bool
-  with_dict: "{{ openvswitch_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/openvswitch/tasks/deploy-containers.yml b/ansible/roles/openvswitch/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/openvswitch/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/ovs-dpdk/tasks/check-containers.yml b/ansible/roles/ovs-dpdk/tasks/check-containers.yml
new file mode 100644
index 0000000000..0e4f17887b
--- /dev/null
+++ b/ansible/roles/ovs-dpdk/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check ovs containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - item.value.enabled | bool
+    - item.value.host_in_groups | bool
+  with_dict: "{{ ovsdpdk_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/ovs-dpdk/tasks/config.yml b/ansible/roles/ovs-dpdk/tasks/config.yml
index 9519fe554b..caf6590a1e 100644
--- a/ansible/roles/ovs-dpdk/tasks/config.yml
+++ b/ansible/roles/ovs-dpdk/tasks/config.yml
@@ -55,21 +55,5 @@
     hugepage_mountpoint: "{{ ovs_hugepage_mountpoint }}"
     ovs_physical_port_policy: "{{ ovs_physical_port_policy }}"
 
-# TODO check the environment change
-- name: Check ovs containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - item.value.enabled | bool
-    - item.value.host_in_groups | bool
-  with_dict: "{{ ovsdpdk_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/ovs-dpdk/tasks/deploy-containers.yml b/ansible/roles/ovs-dpdk/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/ovs-dpdk/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/panko/tasks/check-containers.yml b/ansible/roles/panko/tasks/check-containers.yml
new file mode 100644
index 0000000000..1c6b10ab77
--- /dev/null
+++ b/ansible/roles/panko/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check panko containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ panko_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/panko/tasks/config.yml b/ansible/roles/panko/tasks/config.yml
index cd92d75310..a70fad4b63 100644
--- a/ansible/roles/panko/tasks/config.yml
+++ b/ansible/roles/panko/tasks/config.yml
@@ -90,19 +90,5 @@
   notify:
     - Restart panko-api container
 
-- name: Check panko containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ panko_services }}"
-  notify:
-    - Restart panko-api container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/panko/tasks/deploy-containers.yml b/ansible/roles/panko/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/panko/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/placement/tasks/check-containers.yml b/ansible/roles/placement/tasks/check-containers.yml
new file mode 100644
index 0000000000..797a2066ca
--- /dev/null
+++ b/ansible/roles/placement/tasks/check-containers.yml
@@ -0,0 +1,20 @@
+---
+- name: Check placement containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    environment: "{{ item.value.environment|default(omit) }}"
+    pid_mode: "{{ item.value.pid_mode|default('') }}"
+    ipc_mode: "{{ item.value.ipc_mode|default(omit) }}"
+    privileged: "{{ item.value.privileged|default(False) }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ placement_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/placement/tasks/config.yml b/ansible/roles/placement/tasks/config.yml
index 7f1cf33dcf..346667f3d0 100644
--- a/ansible/roles/placement/tasks/config.yml
+++ b/ansible/roles/placement/tasks/config.yml
@@ -104,24 +104,5 @@
   notify:
     - "Restart {{ item.key }} container"
 
-# check whether the containers parameter is changed. If yes, trigger the handler
-- name: Check placement containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    environment: "{{ item.value.environment|default(omit) }}"
-    pid_mode: "{{ item.value.pid_mode|default('') }}"
-    ipc_mode: "{{ item.value.ipc_mode|default(omit) }}"
-    privileged: "{{ item.value.privileged|default(False) }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ placement_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/placement/tasks/deploy-containers.yml b/ansible/roles/placement/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/placement/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/prometheus/tasks/check-containers.yml b/ansible/roles/prometheus/tasks/check-containers.yml
new file mode 100644
index 0000000000..7aa6ae378e
--- /dev/null
+++ b/ansible/roles/prometheus/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check prometheus containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    pid_mode: "{{ item.value.pid_mode|default('') }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ prometheus_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/prometheus/tasks/config.yml b/ansible/roles/prometheus/tasks/config.yml
index b2c305f294..8386442177 100644
--- a/ansible/roles/prometheus/tasks/config.yml
+++ b/ansible/roles/prometheus/tasks/config.yml
@@ -141,20 +141,5 @@
   notify:
     - Restart prometheus-blackbox-exporter container
 
-- name: Check prometheus containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    pid_mode: "{{ item.value.pid_mode|default('') }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ prometheus_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/prometheus/tasks/deploy-containers.yml b/ansible/roles/prometheus/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/prometheus/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/qdrouterd/tasks/check-containers.yml b/ansible/roles/qdrouterd/tasks/check-containers.yml
new file mode 100644
index 0000000000..9566ee380f
--- /dev/null
+++ b/ansible/roles/qdrouterd/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check qdrouterd containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ qdrouterd_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/qdrouterd/tasks/config.yml b/ansible/roles/qdrouterd/tasks/config.yml
index f18ff9f7cf..668d5e1b5a 100644
--- a/ansible/roles/qdrouterd/tasks/config.yml
+++ b/ansible/roles/qdrouterd/tasks/config.yml
@@ -61,19 +61,5 @@
   notify:
     - Restart qdrouterd container
 
-- name: Check qdrouterd containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ qdrouterd_services }}"
-  notify:
-    - Restart qdrouterd container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/qdrouterd/tasks/deploy-containers.yml b/ansible/roles/qdrouterd/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/qdrouterd/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/qinling/tasks/check-containers.yml b/ansible/roles/qinling/tasks/check-containers.yml
new file mode 100644
index 0000000000..2092d54417
--- /dev/null
+++ b/ansible/roles/qinling/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check qinling containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+    environment: "{{ item.value.environment }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ qinling_services }}"
+  notify:
+    - Restart {{ item.key }} container
diff --git a/ansible/roles/qinling/tasks/config.yml b/ansible/roles/qinling/tasks/config.yml
index e892fc024f..e403b65384 100644
--- a/ansible/roles/qinling/tasks/config.yml
+++ b/ansible/roles/qinling/tasks/config.yml
@@ -95,19 +95,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check qinling containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ qinling_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/qinling/tasks/deploy-containers.yml b/ansible/roles/qinling/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/qinling/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/rabbitmq/tasks/check-containers.yml b/ansible/roles/rabbitmq/tasks/check-containers.yml
new file mode 100644
index 0000000000..7cb590b5b9
--- /dev/null
+++ b/ansible/roles/rabbitmq/tasks/check-containers.yml
@@ -0,0 +1,18 @@
+---
+- name: Check rabbitmq containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    environment: "{{ item.value.environment }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ rabbitmq_services }}"
+  notify:
+    - Restart rabbitmq container (first node)
+    - Restart rabbitmq container (rest of nodes)
diff --git a/ansible/roles/rabbitmq/tasks/config.yml b/ansible/roles/rabbitmq/tasks/config.yml
index 37537140c4..05e315eec0 100644
--- a/ansible/roles/rabbitmq/tasks/config.yml
+++ b/ansible/roles/rabbitmq/tasks/config.yml
@@ -84,21 +84,5 @@
     - Restart rabbitmq container (first node)
     - Restart rabbitmq container (rest of nodes)
 
-- name: Check rabbitmq containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    environment: "{{ item.value.environment }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ rabbitmq_services }}"
-  notify:
-    - Restart rabbitmq container (first node)
-    - Restart rabbitmq container (rest of nodes)
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/rabbitmq/tasks/deploy-containers.yml b/ansible/roles/rabbitmq/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/rabbitmq/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/rally/tasks/check-containers.yml b/ansible/roles/rally/tasks/check-containers.yml
new file mode 100644
index 0000000000..d420a40954
--- /dev/null
+++ b/ansible/roles/rally/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check rally containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ rally_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/rally/tasks/config.yml b/ansible/roles/rally/tasks/config.yml
index 1d6e8dbf5e..e5113114e3 100644
--- a/ansible/roles/rally/tasks/config.yml
+++ b/ansible/roles/rally/tasks/config.yml
@@ -73,19 +73,5 @@
   notify:
     - Restart rally container
 
-- name: Check rally containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ rally_services }}"
-  notify:
-    - Restart rally container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/rally/tasks/deploy-containers.yml b/ansible/roles/rally/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/rally/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/redis/tasks/check-containers.yml b/ansible/roles/redis/tasks/check-containers.yml
new file mode 100644
index 0000000000..f7a64522bd
--- /dev/null
+++ b/ansible/roles/redis/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check redis containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ redis_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/redis/tasks/config.yml b/ansible/roles/redis/tasks/config.yml
index a0ba500788..ce0890929e 100644
--- a/ansible/roles/redis/tasks/config.yml
+++ b/ansible/roles/redis/tasks/config.yml
@@ -38,19 +38,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check redis containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ redis_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/redis/tasks/deploy-containers.yml b/ansible/roles/redis/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/redis/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/sahara/tasks/check-containers.yml b/ansible/roles/sahara/tasks/check-containers.yml
new file mode 100644
index 0000000000..aa40fb2748
--- /dev/null
+++ b/ansible/roles/sahara/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check sahara containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ sahara_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/sahara/tasks/config.yml b/ansible/roles/sahara/tasks/config.yml
index 445e5ad769..3fc1733a61 100644
--- a/ansible/roles/sahara/tasks/config.yml
+++ b/ansible/roles/sahara/tasks/config.yml
@@ -76,20 +76,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check sahara containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ sahara_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/sahara/tasks/deploy-containers.yml b/ansible/roles/sahara/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/sahara/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/searchlight/tasks/check-containers.yml b/ansible/roles/searchlight/tasks/check-containers.yml
new file mode 100644
index 0000000000..c544b70dde
--- /dev/null
+++ b/ansible/roles/searchlight/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check searchlight containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ searchlight_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/searchlight/tasks/config.yml b/ansible/roles/searchlight/tasks/config.yml
index 8db1b915cc..421cc77931 100644
--- a/ansible/roles/searchlight/tasks/config.yml
+++ b/ansible/roles/searchlight/tasks/config.yml
@@ -75,19 +75,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check searchlight containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ searchlight_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/searchlight/tasks/deploy-containers.yml b/ansible/roles/searchlight/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/searchlight/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/senlin/tasks/check-containers.yml b/ansible/roles/senlin/tasks/check-containers.yml
new file mode 100644
index 0000000000..fa59e48de5
--- /dev/null
+++ b/ansible/roles/senlin/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check senlin containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ senlin_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/senlin/tasks/config.yml b/ansible/roles/senlin/tasks/config.yml
index 3330205a97..eba5c5e98e 100644
--- a/ansible/roles/senlin/tasks/config.yml
+++ b/ansible/roles/senlin/tasks/config.yml
@@ -76,19 +76,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check senlin containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ senlin_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/senlin/tasks/deploy-containers.yml b/ansible/roles/senlin/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/senlin/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/skydive/tasks/check-containers.yml b/ansible/roles/skydive/tasks/check-containers.yml
new file mode 100644
index 0000000000..dd25c44016
--- /dev/null
+++ b/ansible/roles/skydive/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check skydive containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ skydive_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/skydive/tasks/config.yml b/ansible/roles/skydive/tasks/config.yml
index 638c8c2379..4069586016 100644
--- a/ansible/roles/skydive/tasks/config.yml
+++ b/ansible/roles/skydive/tasks/config.yml
@@ -38,20 +38,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check skydive containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ skydive_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/skydive/tasks/deploy-containers.yml b/ansible/roles/skydive/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/skydive/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/solum/tasks/check-containers.yml b/ansible/roles/solum/tasks/check-containers.yml
new file mode 100644
index 0000000000..6747ac0bc8
--- /dev/null
+++ b/ansible/roles/solum/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check solum containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ solum_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/solum/tasks/config.yml b/ansible/roles/solum/tasks/config.yml
index fc4db83797..6e6c8c56ae 100644
--- a/ansible/roles/solum/tasks/config.yml
+++ b/ansible/roles/solum/tasks/config.yml
@@ -45,19 +45,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check solum containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ solum_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/solum/tasks/deploy-containers.yml b/ansible/roles/solum/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/solum/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/storm/tasks/check-containers.yml b/ansible/roles/storm/tasks/check-containers.yml
new file mode 100644
index 0000000000..e0204778f2
--- /dev/null
+++ b/ansible/roles/storm/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check storm containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    environment: "{{ item.value.environment }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ storm_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/storm/tasks/config.yml b/ansible/roles/storm/tasks/config.yml
index 03c8614235..f6a4e4d77d 100644
--- a/ansible/roles/storm/tasks/config.yml
+++ b/ansible/roles/storm/tasks/config.yml
@@ -61,20 +61,5 @@
   notify:
     - Restart storm-nimbus container
 
-- name: Check storm containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    environment: "{{ item.value.environment }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ storm_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/storm/tasks/deploy-containers.yml b/ansible/roles/storm/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/storm/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/tacker/tasks/check-containers.yml b/ansible/roles/tacker/tasks/check-containers.yml
new file mode 100644
index 0000000000..0155ba0761
--- /dev/null
+++ b/ansible/roles/tacker/tasks/check-containers.yml
@@ -0,0 +1,15 @@
+---
+- name: Check tacker container
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ tacker_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/tacker/tasks/config.yml b/ansible/roles/tacker/tasks/config.yml
index 723f3de587..09c35fa543 100644
--- a/ansible/roles/tacker/tasks/config.yml
+++ b/ansible/roles/tacker/tasks/config.yml
@@ -76,18 +76,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check tacker container
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != 'config'
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ tacker_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/tacker/tasks/deploy-containers.yml b/ansible/roles/tacker/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/tacker/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/telegraf/tasks/check-containers.yml b/ansible/roles/telegraf/tasks/check-containers.yml
new file mode 100644
index 0000000000..744a7bb391
--- /dev/null
+++ b/ansible/roles/telegraf/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check telegraf containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    pid_mode: "{{ item.value.pid_mode }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ telegraf_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/telegraf/tasks/config.yml b/ansible/roles/telegraf/tasks/config.yml
index 2d2cbe811d..9a80744580 100644
--- a/ansible/roles/telegraf/tasks/config.yml
+++ b/ansible/roles/telegraf/tasks/config.yml
@@ -59,20 +59,5 @@
   notify:
     - Restart telegraf container
 
-- name: Check telegraf containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    pid_mode: "{{ item.value.pid_mode }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ telegraf_services }}"
-  notify:
-    - Restart telegraf container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/telegraf/tasks/deploy-containers.yml b/ansible/roles/telegraf/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/telegraf/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/tempest/tasks/check-containers.yml b/ansible/roles/tempest/tasks/check-containers.yml
new file mode 100644
index 0000000000..55159d7062
--- /dev/null
+++ b/ansible/roles/tempest/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check tempest containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ tempest_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/tempest/tasks/config.yml b/ansible/roles/tempest/tasks/config.yml
index cf608db046..6ffb5956cf 100644
--- a/ansible/roles/tempest/tasks/config.yml
+++ b/ansible/roles/tempest/tasks/config.yml
@@ -42,19 +42,5 @@
   notify:
     - Restart tempest container
 
-- name: Check tempest containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ tempest_services }}"
-  notify:
-    - Restart tempest container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/tempest/tasks/deploy-containers.yml b/ansible/roles/tempest/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/tempest/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/trove/tasks/check-containers.yml b/ansible/roles/trove/tasks/check-containers.yml
new file mode 100644
index 0000000000..3bf7ab14cb
--- /dev/null
+++ b/ansible/roles/trove/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check trove containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ trove_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/trove/tasks/config.yml b/ansible/roles/trove/tasks/config.yml
index bd9167ff51..0322faf332 100644
--- a/ansible/roles/trove/tasks/config.yml
+++ b/ansible/roles/trove/tasks/config.yml
@@ -97,19 +97,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check trove containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ trove_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/trove/tasks/deploy-containers.yml b/ansible/roles/trove/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/trove/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/vitrage/tasks/check-containers.yml b/ansible/roles/vitrage/tasks/check-containers.yml
new file mode 100644
index 0000000000..4127997d53
--- /dev/null
+++ b/ansible/roles/vitrage/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check vitrage containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ vitrage_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/vitrage/tasks/config.yml b/ansible/roles/vitrage/tasks/config.yml
index 3ab50eafcf..84012fa858 100644
--- a/ansible/roles/vitrage/tasks/config.yml
+++ b/ansible/roles/vitrage/tasks/config.yml
@@ -103,19 +103,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check vitrage containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes | reject('equalto', '') | list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ vitrage_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/vitrage/tasks/deploy-containers.yml b/ansible/roles/vitrage/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/vitrage/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/vmtp/tasks/check-containers.yml b/ansible/roles/vmtp/tasks/check-containers.yml
new file mode 100644
index 0000000000..f10bdcff5b
--- /dev/null
+++ b/ansible/roles/vmtp/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check vmtp containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ vmtp_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/vmtp/tasks/config.yml b/ansible/roles/vmtp/tasks/config.yml
index 69326092f8..858fb717ce 100644
--- a/ansible/roles/vmtp/tasks/config.yml
+++ b/ansible/roles/vmtp/tasks/config.yml
@@ -41,19 +41,5 @@
   notify:
     - Restart vmtp container
 
-- name: Check vmtp containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ vmtp_services }}"
-  notify:
-    - Restart vmtp container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/vmtp/tasks/deploy-containers.yml b/ansible/roles/vmtp/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/vmtp/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/watcher/tasks/check-containers.yml b/ansible/roles/watcher/tasks/check-containers.yml
new file mode 100644
index 0000000000..bc1e3066ac
--- /dev/null
+++ b/ansible/roles/watcher/tasks/check-containers.yml
@@ -0,0 +1,16 @@
+---
+- name: Check watcher containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ watcher_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/watcher/tasks/config.yml b/ansible/roles/watcher/tasks/config.yml
index b9ca1d5e54..b4a0aa86e4 100644
--- a/ansible/roles/watcher/tasks/config.yml
+++ b/ansible/roles/watcher/tasks/config.yml
@@ -73,19 +73,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check watcher containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ watcher_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/watcher/tasks/deploy-containers.yml b/ansible/roles/watcher/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/watcher/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/zookeeper/tasks/check-containers.yml b/ansible/roles/zookeeper/tasks/check-containers.yml
new file mode 100644
index 0000000000..85198e9839
--- /dev/null
+++ b/ansible/roles/zookeeper/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check zookeeper containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    volumes: "{{ item.value.volumes }}"
+    environment: "{{ item.value.environment }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ zookeeper_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/zookeeper/tasks/config.yml b/ansible/roles/zookeeper/tasks/config.yml
index b5a085d7fb..cb90b1020a 100644
--- a/ansible/roles/zookeeper/tasks/config.yml
+++ b/ansible/roles/zookeeper/tasks/config.yml
@@ -54,20 +54,5 @@
   notify:
     - Restart zookeeper container
 
-- name: Check zookeeper containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    environment: "{{ item.value.environment }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ zookeeper_services }}"
-  notify:
-    - Restart zookeeper container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/zookeeper/tasks/deploy-containers.yml b/ansible/roles/zookeeper/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/zookeeper/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/ansible/roles/zun/tasks/check-containers.yml b/ansible/roles/zun/tasks/check-containers.yml
new file mode 100644
index 0000000000..dee55acbb5
--- /dev/null
+++ b/ansible/roles/zun/tasks/check-containers.yml
@@ -0,0 +1,17 @@
+---
+- name: Check zun containers
+  become: true
+  kolla_docker:
+    action: "compare_container"
+    common_options: "{{ docker_common_options }}"
+    name: "{{ item.value.container_name }}"
+    image: "{{ item.value.image }}"
+    privileged: "{{ item.value.privileged | default(False) }}"
+    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
+    dimensions: "{{ item.value.dimensions }}"
+  when:
+    - inventory_hostname in groups[item.value.group]
+    - item.value.enabled | bool
+  with_dict: "{{ zun_services }}"
+  notify:
+    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/zun/tasks/config.yml b/ansible/roles/zun/tasks/config.yml
index 83130e196a..fcff6ccea7 100644
--- a/ansible/roles/zun/tasks/config.yml
+++ b/ansible/roles/zun/tasks/config.yml
@@ -89,20 +89,5 @@
   notify:
     - Restart {{ item.key }} container
 
-- name: Check zun containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    privileged: "{{ item.value.privileged | default(False) }}"
-    volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - kolla_action != "config"
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ zun_services }}"
-  notify:
-    - Restart {{ item.key }} container
+- include_tasks: check-containers.yml
+  when: kolla_action != "config"
diff --git a/ansible/roles/zun/tasks/deploy-containers.yml b/ansible/roles/zun/tasks/deploy-containers.yml
new file mode 100644
index 0000000000..eb24ab5c7a
--- /dev/null
+++ b/ansible/roles/zun/tasks/deploy-containers.yml
@@ -0,0 +1,2 @@
+---
+- import_tasks: check-containers.yml
diff --git a/doc/source/user/operating-kolla.rst b/doc/source/user/operating-kolla.rst
index 6b20468853..93e636f05f 100644
--- a/doc/source/user/operating-kolla.rst
+++ b/doc/source/user/operating-kolla.rst
@@ -189,6 +189,9 @@ tests.
 
 ``kolla-ansible -i INVENTORY stop`` is used to stop running containers.
 
+``kolla-ansible -i INVENTORY deploy-containers`` is used to check and if
+necessary update containers, without generating configuration.
+
 .. note::
 
    In order to do smoke tests, requires ``kolla_enable_sanity_checks=yes``.
diff --git a/releasenotes/notes/add-container-deploy-action-1673f3b6eb330c74.yaml b/releasenotes/notes/add-container-deploy-action-1673f3b6eb330c74.yaml
new file mode 100644
index 0000000000..50b8db29f7
--- /dev/null
+++ b/releasenotes/notes/add-container-deploy-action-1673f3b6eb330c74.yaml
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Adds a new kolla-ansible subcommand: ``deploy-containers``.  This action
+    will only do the container comparison and deploy out new containers if that
+    comparison detects a change is needed.  This should be used to get updated
+    container images, where no new config changes are need, deployed out
+    quickly.
diff --git a/tools/kolla-ansible b/tools/kolla-ansible
index 4ff3d42000..a60338c795 100755
--- a/tools/kolla-ansible
+++ b/tools/kolla-ansible
@@ -64,6 +64,7 @@ Commands:
     deploy              Deploy and start all kolla containers
     deploy-bifrost      Deploy and start bifrost container
     deploy-servers      Enroll and deploy servers with bifrost
+    deploy-containers   Only deploy and start containers (no config updates or bootstrapping)
     post-deploy         Do post deploy on deploy node
     pull                Pull all images for containers (only pulls, no running container changes)
     reconfigure         Reconfigure OpenStack service
@@ -100,6 +101,7 @@ bootstrap-servers
 destroy
 deploy
 deploy-bifrost
+deploy-containers
 deploy-servers
 post-deploy
 pull
@@ -309,6 +311,10 @@ EOF
         PLAYBOOK="${BASEDIR}/ansible/bifrost.yml"
         EXTRA_OPTS="$EXTRA_OPTS -e kolla_action=deploy"
         ;;
+(deploy-containers)
+        ACTION="Deploying Containers"
+        EXTRA_OPTS="$EXTRA_OPTS -e kolla_action=deploy-containers"
+        ;;
 (deploy-servers)
         ACTION="Deploying servers with bifrost"
         PLAYBOOK="${BASEDIR}/ansible/bifrost.yml"