Keep existing data for containerized MongoDB
authorJiri Stransky <jistr@redhat.com>
Tue, 7 Mar 2017 13:22:33 +0000 (14:22 +0100)
committerJiri Stransky <jistr@redhat.com>
Tue, 14 Mar 2017 13:53:06 +0000 (13:53 +0000)
We used named Docker volume for MongoDB storage, which meant that when
moving from bare metal to containerized, we lost data and reinitialized
the storage from scratch.

With this commit we keep the data by mounting the original data into the
container. We also need make sure that file ownership is correct
according to the uid/gid used within MongoDB container image.

Change-Id: I86ef2cb37a068b767462d6d50fe451389b7cbb58

docker/services/database/mongodb.yaml

index 68a64a7..36f3340 100644 (file)
@@ -73,7 +73,16 @@ outputs:
             perm: '0600'
       docker_config:
         step_2:
+          mongodb_data_ownership:
+            start_order: 0
+            image: *mongodb_image
+            net: host
+            user: root
+            command: ['chown', '-R', 'mongodb:', '/var/lib/mongodb']
+            volumes:
+              - /var/lib/mongodb:/var/lib/mongodb
           mongodb:
+            start_order: 1
             image: *mongodb_image
             net: host
             privileged: false
@@ -82,7 +91,7 @@ outputs:
               - /var/lib/config-data/mongodb/:/var/lib/kolla/config_files/src:ro
               - /etc/localtime:/etc/localtime:ro
               - logs:/var/log/kolla
-              - mongodb:/var/lib/mongodb/
+              - /var/lib/mongodb:/var/lib/mongodb
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       docker_puppet_tasks:
@@ -98,6 +107,11 @@ outputs:
           volumes:
           - "mongodb:/var/lib/mongodb/"
           - "logs:/var/log/kolla:ro"
+      host_prep_tasks:
+        - name: create /var/lib/mongodb
+          file:
+            path: /var/lib/mongodb
+            state: directory
       upgrade_tasks:
         - name: Stop and disable mongodb service
           tags: step2