diff --git a/ansible/roles/glance/tasks/bootstrap.yml b/ansible/roles/glance/tasks/bootstrap.yml
index 3d62f21667f0ca270ca615c8ea8f5f0b06bbdb74..86be5c3f15e03aefd92bec5ede2d24141f54c6cf 100644
--- a/ansible/roles/glance/tasks/bootstrap.yml
+++ b/ansible/roles/glance/tasks/bootstrap.yml
@@ -58,7 +58,7 @@
     insecure_registry: "{{ docker_insecure_registry }}"
     name: bootstrap_glance
     image: "{{ glance_api_image_full }}"
-    volumes: "{{ node_config_directory }}/glance-api/:/opt/kolla/glance-api/:ro"
+    volumes: "{{ node_config_directory }}/glance-api/:/opt/kolla/config_files/:ro"
     volumes_from:
      - glance_data
     env:
diff --git a/ansible/roles/glance/tasks/config.yml b/ansible/roles/glance/tasks/config.yml
index 4cb64ac952d75871307bbe56292c844152a402ee..095559dbef94aa67df370e9bd00decb1c578fde8 100644
--- a/ansible/roles/glance/tasks/config.yml
+++ b/ansible/roles/glance/tasks/config.yml
@@ -18,6 +18,11 @@
       - "{{ node_templates_directory }}/glance-registry/glance-registry.conf_augment"
     config_dest: "{{ node_config_directory }}/glance-registry/glance-registry.conf"
 
+- name: Copying over Glance Registry JSON configuration file
+  template:
+    src: "roles/glance/templates/glance-registry.json.j2"
+    dest: "{{ node_config_directory }}/glance-registry/config.json"
+
 - include: ../../config.yml
   vars:
     service_name: "glance-api"
@@ -36,3 +41,8 @@
       - "{{ node_templates_directory }}/glance-api/glance.conf_augment"
       - "{{ node_templates_directory }}/glance-api/glance-api.conf_augment"
     config_dest: "{{ node_config_directory }}/glance-api/glance-api.conf"
+
+- name: Copying over Glance API JSON configuration file
+  template:
+    src: "roles/glance/templates/glance-api.json.j2"
+    dest: "{{ node_config_directory }}/glance-api/config.json"
diff --git a/ansible/roles/glance/tasks/start.yml b/ansible/roles/glance/tasks/start.yml
index 755526249d59ea4628ac6ec55039c7fb0cd9c429..068fc996cf77fbd89244ef6f3a9e78056b982f11 100644
--- a/ansible/roles/glance/tasks/start.yml
+++ b/ansible/roles/glance/tasks/start.yml
@@ -13,7 +13,7 @@
     insecure_registry: "{{ docker_insecure_registry }}"
     name: glance_registry
     image: "{{ glance_registry_image_full }}"
-    volumes: "{{ node_config_directory }}/glance-registry/:/opt/kolla/glance-registry/:ro"
+    volumes: "{{ node_config_directory }}/glance-registry/:/opt/kolla/config_files/:ro"
     volumes_from:
       - glance_data
     env:
@@ -34,7 +34,7 @@
     insecure_registry: "{{ docker_insecure_registry }}"
     name: glance_api
     image: "{{ glance_api_image_full }}"
-    volumes: "{{ node_config_directory }}/glance-api/:/opt/kolla/glance-api/:ro"
+    volumes: "{{ node_config_directory }}/glance-api/:/opt/kolla/config_files/:ro"
     env:
       KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
   when: inventory_hostname in groups['glance-api']
diff --git a/ansible/roles/glance/templates/glance-api.json.j2 b/ansible/roles/glance/templates/glance-api.json.j2
new file mode 100644
index 0000000000000000000000000000000000000000..d4be6d69867d195961eddcc77e70a347abe5118d
--- /dev/null
+++ b/ansible/roles/glance/templates/glance-api.json.j2
@@ -0,0 +1,11 @@
+{
+    "command": "/usr/bin/glance-api",
+    "config_files": [
+        {
+            "source": "/opt/kolla/config_files/glance-api.conf",
+            "dest": "/etc/glance/glance-api.conf",
+            "owner": "glance",
+            "perm": "0600"
+        }
+    ]
+}
diff --git a/ansible/roles/glance/templates/glance-registry.json.j2 b/ansible/roles/glance/templates/glance-registry.json.j2
new file mode 100644
index 0000000000000000000000000000000000000000..f439b57c83d22b8b66cb996e6055208d00d75257
--- /dev/null
+++ b/ansible/roles/glance/templates/glance-registry.json.j2
@@ -0,0 +1,11 @@
+{
+    "command": "/usr/bin/glance-registry",
+    "config_files": [
+        {
+            "source": "/opt/kolla/config_files/glance-registry.conf",
+            "dest": "/etc/glance/glance-registry.conf",
+            "owner": "glance",
+            "perm": "0600"
+        }
+    ]
+}
diff --git a/docker/glance/glance-api/start.sh b/docker/glance/glance-api/start.sh
index ce3cb6d8bb0b3a64195a7cbdb0ff1a7c81fdc296..7ceead556ae4f489b950cdeabe21eb6e76a72d28 100755
--- a/docker/glance/glance-api/start.sh
+++ b/docker/glance/glance-api/start.sh
@@ -1,14 +1,12 @@
 #!/bin/bash
 set -o errexit
 
-CMD="/usr/bin/glance-api"
-ARGS=""
-
 # Loading common functions.
 source /opt/kolla/kolla-common.sh
 
-# Execute config strategy
-set_configs
+# Generate run command
+python /opt/kolla/set_configs.py
+CMD=$(cat /run_command)
 
 # Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases
 # of the KOLLA_BOOTSTRAP variable being set, including empty.
@@ -17,4 +15,5 @@ if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
     exit 0
 fi
 
-exec $CMD $ARGS
+echo "Running command: ${CMD}"
+exec $CMD
diff --git a/docker/glance/glance-registry/start.sh b/docker/glance/glance-registry/start.sh
index 1d8265f80a23fded1d984e4726eefd9a5b88b7ee..6191ce851271468326b09ba1e5b4a11887b09b8d 100755
--- a/docker/glance/glance-registry/start.sh
+++ b/docker/glance/glance-registry/start.sh
@@ -1,13 +1,12 @@
 #!/bin/bash
 set -o errexit
 
-CMD="/usr/bin/glance-registry"
-ARGS=""
-
 # Loading common functions.
 source /opt/kolla/kolla-common.sh
 
-# Execute config strategy
-set_configs
+# Generate run command
+python /opt/kolla/set_configs.py
+CMD=$(cat /run_command)
 
-exec $CMD $ARGS
+echo "Running command: ${CMD}"
+exec $CMD