diff --git a/ansible/roles/horizon/tasks/config.yml b/ansible/roles/horizon/tasks/config.yml
index b74c5aa8e308d001926814c8fe8e36f75d7f87d2..87ce2976e571cf83d0baedfbaa5e44f857a34ebe 100644
--- a/ansible/roles/horizon/tasks/config.yml
+++ b/ansible/roles/horizon/tasks/config.yml
@@ -5,6 +5,11 @@
     state: "directory"
     recurse: "yes"
 
+- name: Copying horizon JSON configuration file
+  template:
+    src: "horizon.json.j2"
+    dest: "{{ node_config_directory }}/horizon/config.json"
+
 - name: Copying over config(s)
   template:
     src: "horizon.conf.j2"
diff --git a/ansible/roles/horizon/tasks/start.yml b/ansible/roles/horizon/tasks/start.yml
index ff6adfdf6f103c5dc3a0bb74ccab767dbf566273..3856050a33c19ed80e019b5256e0ad57d5140841 100644
--- a/ansible/roles/horizon/tasks/start.yml
+++ b/ansible/roles/horizon/tasks/start.yml
@@ -13,7 +13,7 @@
     insecure_registry: "{{ docker_insecure_registry }}"
     name: horizon
     image: "{{ horizon_image_full }}"
-    volumes: "{{ node_config_directory }}/horizon/:/opt/kolla/horizon/:ro"
+    volumes: "{{ node_config_directory }}/horizon/:/opt/kolla/config_files/:ro"
     env:
       KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
   when: inventory_hostname in groups['horizon']
diff --git a/ansible/roles/horizon/templates/horizon.json.j2 b/ansible/roles/horizon/templates/horizon.json.j2
new file mode 100644
index 0000000000000000000000000000000000000000..a3bdef0d1a0479fde575b14ca1eb6d688cbd56e6
--- /dev/null
+++ b/ansible/roles/horizon/templates/horizon.json.j2
@@ -0,0 +1,20 @@
+{% set apache_cmd = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %}
+{% set apache_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %}
+{% set apache_file = '000-default.conf' if kolla_base_distro in ['ubuntu', 'debian'] else 'horizon.conf' %}
+{
+    "command": "/usr/sbin/{{ apache_cmd }} -DFOREGROUND",
+    "config_files": [
+        {
+            "source": "/opt/kolla/config_files/horizon.conf",
+            "dest": "/etc/{{ apache_dir }}/{{ apache_file }}",
+            "owner": "horizon",
+            "perm": "0644"
+        },
+        {
+            "source": "/opt/kolla/config_files/local_settings",
+            "dest": "/etc/openstack-dashboard/local_settings",
+            "owner": "horizon",
+            "perm": "0644"
+        }
+    ]
+}
diff --git a/docker/horizon/start.sh b/docker/horizon/start.sh
index 096326a3af4538801b43886e3b715e600f7dd680..535f06b8228a3263eb7f5fe777afaf1465460502 100755
--- a/docker/horizon/start.sh
+++ b/docker/horizon/start.sh
@@ -7,17 +7,12 @@ source /opt/kolla/kolla-common.sh
 
 if [[ "${KOLLA_BASE_DISTRO}" == "ubuntu" || \
         "${KOLLA_BASE_DISTRO}" == "debian" ]]; then
-    CMD="/usr/sbin/apache2"
-    ARGS="-DFOREGROUND"
-
     # Loading Apache2 ENV variables
     source /etc/apache2/envvars
-else
-    CMD="/usr/sbin/httpd"
-    ARGS="-DFOREGROUND"
 fi
 
-# Execute config strategy
-set_configs
+# Generate run command
+python /opt/kolla/set_configs.py
+CMD=$(cat /run_command)
 
-exec $CMD $ARGS
+exec $CMD