From 8af400733d89d2c84e7b0e3c8da28825232cba67 Mon Sep 17 00:00:00 2001
From: SamYaple <sam@yaple.net>
Date: Sun, 27 Dec 2015 15:38:26 +0000
Subject: [PATCH] Convert to named volumes instead of data container

This intentionally leaves out rabbitmq from this patchset. It will
require additional work to remove its data container

UpgradeImpact
Partially-Implements: blueprint docker-named-volumes

Change-Id: Id68b8e43a3c077ef4f4f4d67ea34d0692e66eef7
---
 ansible/roles/ceph/defaults/main.yml          |  4 --
 ansible/roles/ceph/tasks/bootstrap_mons.yml   | 10 ----
 ansible/roles/ceph/tasks/generate_cluster.yml |  6 +-
 ansible/roles/ceph/tasks/start_mons.yml       |  6 +-
 ansible/roles/cinder/defaults/main.yml        |  4 --
 ansible/roles/common/defaults/main.yml        |  4 --
 ansible/roles/common/tasks/start.yml          | 10 +---
 ansible/roles/glance/defaults/main.yml        |  4 --
 ansible/roles/glance/tasks/start.yml          | 10 +---
 ansible/roles/mariadb/defaults/main.yml       |  4 --
 ansible/roles/mariadb/tasks/bootstrap.yml     | 13 +---
 ansible/roles/mariadb/tasks/start.yml         |  5 +-
 ansible/roles/neutron/defaults/main.yml       |  4 --
 ansible/roles/neutron/tasks/start.yml         | 10 +---
 ansible/roles/nova/defaults/main.yml          |  4 --
 ansible/roles/nova/tasks/start.yml            | 17 ++----
 ansible/roles/swift/defaults/main.yml         |  4 --
 ansible/roles/swift/tasks/bootstrap.yml       | 11 ----
 ansible/roles/swift/tasks/main.yml            |  6 --
 ansible/roles/swift/tasks/start.yml           | 60 ++++++++++++++-----
 20 files changed, 66 insertions(+), 130 deletions(-)
 delete mode 100644 ansible/roles/swift/tasks/bootstrap.yml

diff --git a/ansible/roles/ceph/defaults/main.yml b/ansible/roles/ceph/defaults/main.yml
index 74d13c69e6..bed9624561 100644
--- a/ansible/roles/ceph/defaults/main.yml
+++ b/ansible/roles/ceph/defaults/main.yml
@@ -13,10 +13,6 @@ ceph_osd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker
 ceph_osd_tag: "{{ openstack_release }}"
 ceph_osd_image_full: "{{ ceph_osd_image }}:{{ ceph_osd_tag }}"
 
-ceph_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-data"
-ceph_data_tag: "{{ openstack_release }}"
-ceph_data_image_full: "{{ ceph_data_image }}:{{ ceph_data_tag }}"
-
 ceph_rgw_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-ceph-rgw"
 ceph_rgw_tag: "{{ openstack_release }}"
 ceph_rgw_image_full: "{{ ceph_rgw_image }}:{{ ceph_rgw_tag }}"
diff --git a/ansible/roles/ceph/tasks/bootstrap_mons.yml b/ansible/roles/ceph/tasks/bootstrap_mons.yml
index b702ae945f..622f3b50cd 100644
--- a/ansible/roles/ceph/tasks/bootstrap_mons.yml
+++ b/ansible/roles/ceph/tasks/bootstrap_mons.yml
@@ -35,15 +35,5 @@
   always_run: True
   run_once: True
 
-- name: Starting ceph-mon-data container
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_data_image_full }}"
-    name: "ceph_mon_data"
-    volumes:
-      - "/etc/ceph/"
-      - "/var/lib/ceph/"
-
 - include: generate_cluster.yml
   when: delegate_host == 'None' and inventory_hostname == groups['ceph-mon'][0]
diff --git a/ansible/roles/ceph/tasks/generate_cluster.yml b/ansible/roles/ceph/tasks/generate_cluster.yml
index f53a709731..64be33ef81 100644
--- a/ansible/roles/ceph/tasks/generate_cluster.yml
+++ b/ansible/roles/ceph/tasks/generate_cluster.yml
@@ -10,8 +10,10 @@
     image: "{{ ceph_mon_image_full }}"
     name: "ceph_mon"
     restart_policy: "never"
-    volumes: "{{ node_config_directory }}/ceph-mon/:{{ container_config_directory }}/:ro"
-    volumes_from: "ceph_mon_data"
+    volumes:
+      - "{{ node_config_directory }}/ceph-mon/:{{ container_config_directory }}/:ro"
+      - "ceph_mon:/var/lib/ceph"
+      - "ceph_mon_config:/etc/ceph"
 
 - name: Waiting for a few settings for cluster to generate keys
   command: sleep 3
diff --git a/ansible/roles/ceph/tasks/start_mons.yml b/ansible/roles/ceph/tasks/start_mons.yml
index 9016e2ce65..be1548c962 100644
--- a/ansible/roles/ceph/tasks/start_mons.yml
+++ b/ansible/roles/ceph/tasks/start_mons.yml
@@ -5,6 +5,8 @@
     common_options: "{{ docker_common_options }}"
     image: "{{ ceph_mon_image_full }}"
     name: "ceph_mon"
-    volumes: "{{ node_config_directory }}/ceph-mon/:{{ container_config_directory }}/:ro"
-    volumes_from: "ceph_mon_data"
+    volumes:
+      - "{{ node_config_directory }}/ceph-mon/:{{ container_config_directory }}/:ro"
+      - "ceph_mon:/var/lib/ceph"
+      - "ceph_mon_config:/etc/ceph"
   when: inventory_hostname in groups['ceph-mon']
diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml
index 0e5504700a..688e671499 100644
--- a/ansible/roles/cinder/defaults/main.yml
+++ b/ansible/roles/cinder/defaults/main.yml
@@ -46,10 +46,6 @@ cinder_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ dock
 cinder_api_tag: "{{ openstack_release }}"
 cinder_api_image_full: "{{ cinder_api_image }}:{{ cinder_api_tag }}"
 
-cinder_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-data"
-cinder_data_image_tag: "{{ openstack_release }}"
-cinder_data_image_full: "{{ cinder_data_image }}:{{ cinder_data_image_tag }}"
-
 
 ####################
 # Openstack
diff --git a/ansible/roles/common/defaults/main.yml b/ansible/roles/common/defaults/main.yml
index 492b96a4e7..0ba35bcb85 100644
--- a/ansible/roles/common/defaults/main.yml
+++ b/ansible/roles/common/defaults/main.yml
@@ -9,7 +9,3 @@ ansible_image_full: "{{ ansible_image }}:{{ ansible_tag }}"
 rsyslog_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-rsyslog"
 rsyslog_tag: "{{ openstack_release }}"
 rsyslog_image_full: "{{ rsyslog_image }}:{{ rsyslog_tag }}"
-
-log_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-data"
-log_data_tag: "{{ openstack_release }}"
-log_data_image_full: "{{ log_data_image }}:{{ log_data_tag }}"
diff --git a/ansible/roles/common/tasks/start.yml b/ansible/roles/common/tasks/start.yml
index dd02b749ef..bbe9de2ce4 100644
--- a/ansible/roles/common/tasks/start.yml
+++ b/ansible/roles/common/tasks/start.yml
@@ -1,12 +1,4 @@
 ---
-- name: Starting log-data container
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ log_data_image_full }}"
-    name: "log_data"
-    volumes: "/var/log"
-
 - name: Starting rsyslog container
   kolla_docker:
     action: "start_container"
@@ -17,7 +9,7 @@
     volumes:
       - "{{ node_config_directory }}/rsyslog/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev:/dev"
-    volumes_from: "log_data"
+      - "rsyslog:/var/log"
 
 - name: Starting kolla-ansible container
   kolla_docker:
diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index 8c3686563f..0a3f9eb5b2 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -33,10 +33,6 @@ glance_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ dock
 glance_api_tag: "{{ openstack_release }}"
 glance_api_image_full: "{{ glance_api_image }}:{{ glance_api_tag }}"
 
-glance_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-data"
-glance_data_image_tag: "{{ openstack_release }}"
-glance_data_image_full: "{{ glance_data_image }}:{{ glance_data_image_tag }}"
-
 
 ####################
 # Openstack
diff --git a/ansible/roles/glance/tasks/start.yml b/ansible/roles/glance/tasks/start.yml
index 013a1359d0..51e6cb4a31 100644
--- a/ansible/roles/glance/tasks/start.yml
+++ b/ansible/roles/glance/tasks/start.yml
@@ -1,12 +1,4 @@
 ---
-- name: Starting glance-data container
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ glance_data_image_full }}"
-    name: "glance_data"
-    volumes: "/var/lib/glance/"
-
 - name: Starting glance-registry container
   kolla_docker:
     action: "start_container"
@@ -27,5 +19,5 @@
     volumes:
       - "{{ node_config_directory }}/glance-api/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "glance_data"
+      - "glance:/var/lib/glance/"
   when: inventory_hostname in groups['glance-api']
diff --git a/ansible/roles/mariadb/defaults/main.yml b/ansible/roles/mariadb/defaults/main.yml
index 1b1f396a9a..00f49d1ba8 100644
--- a/ansible/roles/mariadb/defaults/main.yml
+++ b/ansible/roles/mariadb/defaults/main.yml
@@ -13,7 +13,3 @@ database_cluster_name: "openstack"
 mariadb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-mariadb"
 mariadb_tag: "{{ openstack_release }}"
 mariadb_image_full: "{{ mariadb_image }}:{{ mariadb_tag }}"
-
-mariadb_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-data"
-mariadb_data_tag: "{{ openstack_release }}"
-mariadb_data_image_full: "{{ mariadb_data_image }}:{{ mariadb_data_tag }}"
diff --git a/ansible/roles/mariadb/tasks/bootstrap.yml b/ansible/roles/mariadb/tasks/bootstrap.yml
index 469aadce8d..68354dd156 100644
--- a/ansible/roles/mariadb/tasks/bootstrap.yml
+++ b/ansible/roles/mariadb/tasks/bootstrap.yml
@@ -36,14 +36,6 @@
   always_run: True
   run_once: True
 
-- name: Starting mariadb-data container
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ mariadb_data_image_full }}"
-    name: "mariadb_data"
-    volumes: "/var/lib/mysql/"
-
 - name: Starting MariaDB bootstrap container
   kolla_docker:
     action: "start_container"
@@ -55,8 +47,9 @@
     image: "{{ mariadb_image_full }}"
     name: "mariadb"
     restart_policy: "never"
-    volumes: "{{ node_config_directory }}/mariadb/:{{ container_config_directory }}/:ro"
-    volumes_from: "mariadb_data"
+    volumes:
+      - "{{ node_config_directory }}/mariadb/:{{ container_config_directory }}/:ro"
+      - "mariadb:/var/lib/mysql"
   when: delegate_host == 'None' and inventory_hostname == groups['mariadb'][0]
 
 - name: Sleeping for 15 seconds while the cluster starts
diff --git a/ansible/roles/mariadb/tasks/start.yml b/ansible/roles/mariadb/tasks/start.yml
index 835e2cbf1b..4682455ca0 100644
--- a/ansible/roles/mariadb/tasks/start.yml
+++ b/ansible/roles/mariadb/tasks/start.yml
@@ -5,8 +5,9 @@
     common_options: "{{ docker_common_options }}"
     image: "{{ mariadb_image_full }}"
     name: "mariadb"
-    volumes: "{{ node_config_directory }}/mariadb/:{{ container_config_directory }}/:ro"
-    volumes_from: "mariadb_data"
+    volumes:
+      - "{{ node_config_directory }}/mariadb/:{{ container_config_directory }}/:ro"
+      - "mariadb:/var/lib/mysql"
   when: delegate_host != 'None' or
         ( groups['mariadb'] | length ) == 1 or
         ( delegate_host == 'None' and inventory_hostname != groups['mariadb'][0] )
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index 0ca1c9e628..9bb9939f25 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -36,10 +36,6 @@ openvswitch_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{
 openvswitch_db_tag: "{{ openstack_release }}"
 openvswitch_db_image_full: "{{ openvswitch_db_image }}:{{ openvswitch_db_tag }}"
 
-openvswitch_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-data"
-openvswitch_data_image_tag: "{{ openstack_release }}"
-openvswitch_data_image_full: "{{ openvswitch_data_image }}:{{ openvswitch_data_image_tag }}"
-
 
 ####################
 # Openstack
diff --git a/ansible/roles/neutron/tasks/start.yml b/ansible/roles/neutron/tasks/start.yml
index d7472dd7ef..c7b04b256e 100644
--- a/ansible/roles/neutron/tasks/start.yml
+++ b/ansible/roles/neutron/tasks/start.yml
@@ -1,12 +1,4 @@
 ---
-- name: Starting openvswitch-data container
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ openvswitch_data_image_full }}"
-    name: "openvswitch_data"
-    volumes: "/var/lib/openvswitch/"
-
 - name: Starting openvswitch-db container
   kolla_docker:
     action: "start_container"
@@ -16,7 +8,7 @@
     volumes:
       - "{{ node_config_directory }}/openvswitch-db-server/:{{ container_config_directory }}/:ro"
       - "/run:/run"
-    volumes_from: "openvswitch_data"
+      - "openvswitch_db:/var/lib/openvswitch/"
   when:
     - (inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-agents'])
     - neutron_plugin_agent == "openvswitch"
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index 812a4ea235..635224ed39 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -57,10 +57,6 @@ nova_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker
 nova_api_tag: "{{ openstack_release }}"
 nova_api_image_full: "{{ nova_api_image }}:{{ nova_api_tag }}"
 
-nova_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-data"
-nova_data_tag: "{{ openstack_release }}"
-nova_data_image_full: "{{ nova_data_image }}:{{ nova_data_tag }}"
-
 nova_compute_ironic_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-nova-compute-ironic"
 nova_compute_ironic_tag: "{{ openstack_release }}"
 nova_compute_ironic_image_full: "{{ nova_compute_ironic_image }}:{{ nova_compute_ironic_tag }}"
diff --git a/ansible/roles/nova/tasks/start.yml b/ansible/roles/nova/tasks/start.yml
index 7024d81e43..e97455c8e4 100644
--- a/ansible/roles/nova/tasks/start.yml
+++ b/ansible/roles/nova/tasks/start.yml
@@ -1,15 +1,4 @@
 ---
-- name: Starting nova-data container
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ nova_data_image_full }}"
-    name: "nova_data"
-    volumes:
-      - "/var/lib/nova/instances"
-      - "/var/lib/libvirt"
-  when: inventory_hostname in groups['compute']
-
 - name: Starting nova-libvirt container
   kolla_docker:
     action: "start_container"
@@ -23,7 +12,8 @@
       - "/lib/modules:/lib/modules:ro"
       - "/run:/run"
       - "/sys/fs/cgroup:/sys/fs/cgroup"
-    volumes_from: "nova_data"
+      - "nova_compute:/var/lib/nova/instances"
+      - "nova_libvirt:/var/lib/libvirt"
   when: inventory_hostname in groups['compute']
 
 - name: Starting nova-api container
@@ -110,7 +100,8 @@
       - "/lib/modules:/lib/modules:ro"
       - "/run:/run"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "nova_data"
+      - "nova_compute:/var/lib/nova/instances"
+      - "nova_libvirt:/var/lib/libvirt"
   when:
     - inventory_hostname in groups['compute']
     - not enable_nova_fake | bool
diff --git a/ansible/roles/swift/defaults/main.yml b/ansible/roles/swift/defaults/main.yml
index 5cfdb5f9bf..5e36ac132d 100644
--- a/ansible/roles/swift/defaults/main.yml
+++ b/ansible/roles/swift/defaults/main.yml
@@ -8,10 +8,6 @@ swift_proxy_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }
 swift_proxy_server_tag: "{{ openstack_release }}"
 swift_proxy_server_image_full: "{{ swift_proxy_server_image }}:{{ swift_proxy_server_tag }}"
 
-swift_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-data"
-swift_data_tag: "{{ openstack_release }}"
-swift_data_image_full: "{{ swift_data_image }}:{{ swift_data_tag }}"
-
 swift_account_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-swift-account-server"
 swift_account_server_tag: "{{ openstack_release }}"
 swift_account_server_image_full: "{{ swift_account_server_image }}:{{ swift_account_server_tag }}"
diff --git a/ansible/roles/swift/tasks/bootstrap.yml b/ansible/roles/swift/tasks/bootstrap.yml
deleted file mode 100644
index 8df47e8f6d..0000000000
--- a/ansible/roles/swift/tasks/bootstrap.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-- name: Starting swift-data container
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ swift_data_image_full }}"
-    name: "swift_data"
-    volumes:
-      - "/srv/node/sdb1"
-      - "/srv/node/sdb2"
-      - "/srv/node/sdb3"
diff --git a/ansible/roles/swift/tasks/main.yml b/ansible/roles/swift/tasks/main.yml
index 47592b8746..5b2e8a980b 100644
--- a/ansible/roles/swift/tasks/main.yml
+++ b/ansible/roles/swift/tasks/main.yml
@@ -11,12 +11,6 @@
         inventory_hostname in groups['swift-object-server'] or
         inventory_hostname in groups['swift-proxy-server']
 
-- include: bootstrap.yml
-  when: inventory_hostname in groups['swift-account-server'] or
-        inventory_hostname in groups['swift-container-server'] or
-        inventory_hostname in groups['swift-object-server'] or
-        inventory_hostname in groups['swift-proxy-server']
-
 - include: start.yml
   when: inventory_hostname in groups['swift-account-server'] or
         inventory_hostname in groups['swift-container-server'] or
diff --git a/ansible/roles/swift/tasks/start.yml b/ansible/roles/swift/tasks/start.yml
index dfca856e7a..100d56c5e5 100644
--- a/ansible/roles/swift/tasks/start.yml
+++ b/ansible/roles/swift/tasks/start.yml
@@ -8,7 +8,9 @@
     volumes:
       - "{{ node_config_directory }}/swift-rsyncd/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
 
 - name: Starting swift-proxy-server container
   kolla_docker:
@@ -20,7 +22,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-proxy-server/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-proxy-server']
 
 - name: Starting swift-account-server container
@@ -33,7 +37,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-account-server/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-account-server']
 
 - name: Starting swift-account-auditor container
@@ -46,7 +52,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-account-auditor/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-account-server']
 
 - name: Starting swift-account-replicator container
@@ -59,7 +67,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-account-replicator/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-account-server']
 
 - name: Starting swift-account-reaper container
@@ -72,7 +82,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-account-reaper/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-account-server']
 
 - name: Starting swift-container-server container
@@ -85,7 +97,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-container-server/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-container-server']
 
 - name: Starting swift-container-auditor container
@@ -98,7 +112,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-container-auditor/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-container-server']
 
 - name: Starting swift-container-replicator container
@@ -111,7 +127,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-container-replicator/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-container-server']
 
 - name: Starting swift-container-updater container
@@ -124,7 +142,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-container-updater/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-container-server']
 
 - name: Starting swift-object-server container
@@ -137,7 +157,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-object-server/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-object-server']
 
 - name: Starting swift-object-auditor container
@@ -150,7 +172,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-object-auditor/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-object-server']
 
 - name: Starting swift-object-replicator container
@@ -163,7 +187,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-object-replicator/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-object-server']
 
 - name: Starting swift-object-updater container
@@ -176,7 +202,9 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-object-updater/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-object-server']
 
 - name: Starting swift-object-expirer container
@@ -189,5 +217,7 @@
       - "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
       - "{{ node_config_directory }}/swift-object-expirer/:{{ container_config_directory }}/:ro"
       - "/var/lib/kolla/dev/log:/dev/log"
-    volumes_from: "swift_data"
+      - "swift_sdb1:/srv/node/sdb1"
+      - "swift_sdb2:/srv/node/sdb2"
+      - "swift_sdb3:/srv/node/sdb3"
   when: inventory_hostname in groups['swift-object-server']