diff --git a/snap_openstack/base.py b/snap_openstack/base.py
index f7ea4be..6d8a295 100644
--- a/snap_openstack/base.py
+++ b/snap_openstack/base.py
@@ -75,6 +75,67 @@ def _render_templates(templates, snap_env, file_mode, user, group):
         utils.chown(target_file, user, group)
 
 
+def _get_os_config_files(entry_point, key_name):
+    '''Get OpenStack config files from dictionary and convert to CLI format
+
+    If a config file path doesn't exist on disk, it won't be added to the
+    options array.
+
+    @entry_point: entry_point dictionary
+    @key_name: key name (either config-files or config-files-override)
+    @return options: array of CLI '--config-file' options
+    '''
+    utils = SnapUtils()
+    options = []
+
+    for cfile in entry_point.get(key_name, []):
+        cfile = cfile.format(**utils.snap_env)
+        if os.path.exists(cfile):
+            options.append('--config-file={}'.format(cfile))
+        else:
+            LOG.debug('Configuration file {} not found'
+                      ', skipping'.format(cfile))
+    return options
+
+
+def _get_os_config_dirs(entry_point):
+    '''Get OpenStack config dirs from dictionary and convert to CLI format
+
+    If a config dir path doesn't exist on disk, it won't be added to the
+    options array.
+
+    @entry_point: entry_point dictionary
+    @return options: array of CLI '--config-dir' options
+    '''
+    utils = SnapUtils()
+    options = []
+
+    for cdir in entry_point.get('config-dirs', []):
+        cdir = cdir.format(**utils.snap_env)
+        if os.path.exists(cdir):
+            options.append('--config-dir={}'.format(cdir))
+        else:
+            LOG.debug('Configuration directory {} not found'
+                      ', skipping'.format(cdir))
+    return options
+
+
+def _get_os_log_file(entry_point):
+    '''Get OpenStack log file from dictionary and convert to CLI format
+
+    @entry_point: entry_point dictionary
+    @return options: string containing CLI '--log-file' option
+    '''
+    utils = SnapUtils()
+    option = None
+
+    log_file = entry_point.get('log-file', [])
+    if log_file:
+        log_file = log_file.format(**utils.snap_env)
+        option = '--log-file={}'.format(log_file)
+    return option
+
+
 class OpenStackSnap(object):
     '''Main executor class for snap-openstack'''
 
@@ -179,37 +240,20 @@ class OpenStackSnap(object):
         if cmd_type == DEFAULT_EP_TYPE:
             cmd = [entry_point['binary'].format(**utils.snap_env)]
 
-            cfile_o = entry_point.get('config-file-override')
-            if cfile_o:
-                cfile_o = cfile_o.format(**utils.snap_env)
-                if os.path.exists(cfile_o):
-                    cmd.append('--config-file={}'.format(cfile_o))
-                else:
-                    cfile_o = None
+            cfiles = _get_os_config_files(entry_point, 'config-files-override')
+            for cfile in _get_os_config_files(entry_point, 'config-files'):
+                if os.path.basename(cfile) not in ' '.join(cfiles):
+                    cfiles.append(cfile)
+            if cfiles:
+                cmd.extend(cfiles)
 
-            if not cfile_o:
-                cfile = entry_point.get('config-file')
-                if cfile:
-                    cfile = cfile.format(**utils.snap_env)
-                    if os.path.exists(cfile):
-                        cmd.append('--config-file={}'.format(cfile))
-                    else:
-                        LOG.debug('Configuration file {} not found'
-                                  ', skipping'.format(cfile))
+            cdirs = _get_os_config_dirs(entry_point)
+            if cdirs:
+                cmd.extend(cdirs)
 
-            cdir = entry_point.get('config-dir')
-            if cdir:
-                cdir = cdir.format(**utils.snap_env)
-                if os.path.exists(cdir):
-                    cmd.append('--config-dir={}'.format(cdir))
-                else:
-                    LOG.debug('Configuration directory {} not found'
-                              ', skipping'.format(cdir))
-
-            log_file = entry_point.get('log-file')
+            log_file = _get_os_log_file(entry_point)
             if log_file:
-                log_file = log_file.format(**utils.snap_env)
-                cmd.append('--log-file={}'.format(log_file))
+                cmd.append(log_file)
 
             # Ensure any arguments passed to wrapper are propagated
             cmd.extend(other_args)
@@ -242,37 +286,20 @@ class OpenStackSnap(object):
                 uwsgi_log = uwsgi_log.format(**utils.snap_env)
                 cmd.extend(['--logto', uwsgi_log])
 
-            cfile_o = entry_point.get('config-file-override')
-            if cfile_o:
-                cfile_o = cfile_o.format(**utils.snap_env)
-                if os.path.exists(cfile_o):
-                    pyargv.append('--config-file={}'.format(cfile_o))
-                else:
-                    cfile_o = None
+            cfiles = _get_os_config_files(entry_point, 'config-files-override')
+            for cfile in _get_os_config_files(entry_point, 'config-files'):
+                if os.path.basename(cfile) not in ' '.join(cfiles):
+                    cfiles.append(cfile)
+            if cfiles:
+                pyargv.extend(cfiles)
 
-            if not cfile_o:
-                cfile = entry_point.get('config-file')
-                if cfile:
-                    cfile = cfile.format(**utils.snap_env)
-                    if os.path.exists(cfile):
-                        pyargv.append('--config-file={}'.format(cfile))
-                    else:
-                        LOG.debug('Configuration file {} not found'
-                                  ', skipping'.format(cfile))
+            cdirs = _get_os_config_dirs(entry_point)
+            if cdirs:
+                pyargv.extend(cdirs)
 
-            cdir = entry_point.get('config-dir')
-            if cdir:
-                cdir = cdir.format(**utils.snap_env)
-                if os.path.exists(cdir):
-                    pyargv.append('--config-dir={}'.format(cdir))
-                else:
-                    LOG.debug('Configuration directory {} not found'
-                              ', skipping'.format(cdir))
-
-            log_file = entry_point.get('log-file')
+            log_file = _get_os_log_file(entry_point)
             if log_file:
-                log_file = log_file.format(**utils.snap_env)
-                pyargv.append('--log-file={}'.format(log_file))
+                pyargv.append(log_file)
 
             # NOTE(jamespage): Pass dynamically built pyargv into
             #                  context for template generation.
@@ -293,15 +320,15 @@ class OpenStackSnap(object):
             cmd = ["{snap}/usr/sbin/nginx".format(**utils.snap_env)]
             cmd.extend(DEFAULT_NGINX_ARGS)
 
-            cfile_o = entry_point.get('config-file-override')
-            if cfile_o:
-                cfile_o = cfile_o.format(**utils.snap_env)
-                if os.path.exists(cfile_o):
-                    cmd.extend(['-c', '{}'.format(cfile_o)])
+            cfile = entry_point.get('config-file-override')
+            if cfile:
+                cfile = cfile.format(**utils.snap_env)
+                if os.path.exists(cfile):
+                    cmd.extend(['-c', '{}'.format(cfile)])
                 else:
-                    cfile_o = None
+                    cfile = None
 
-            if not cfile_o:
+            if not cfile:
                 cfile = entry_point.get('config-file')
                 if cfile:
                     cfile = cfile.format(**utils.snap_env)
diff --git a/snap_openstack/tests/data/snap-openstack.yaml b/snap_openstack/tests/data/snap-openstack.yaml
index d813b02..5c43898 100644
--- a/snap_openstack/tests/data/snap-openstack.yaml
+++ b/snap_openstack/tests/data/snap-openstack.yaml
@@ -9,9 +9,12 @@ setup:
 entry_points:
   keystone-manage:
     binary: "{snap}/bin/keystone-manage"
-    config-file: "{snap}/etc/keystone/keystone.conf"
-    config-file-override: "{snap_common}/etc/keystone/keystone.conf"
-    config-dir: "{snap_common}/etc/keystone/conf.d"
+    config-files:
+      - "{snap}/etc/keystone/keystone.conf"
+    config-files-override:
+      - "{snap_common}/etc/keystone/keystone.conf"
+    config-dirs:
+      - "{snap_common}/etc/keystone/conf.d"
     run-as:
       snap-keystone: [snap-keystone]
   keystone-uwsgi:
@@ -19,9 +22,12 @@ entry_points:
     uwsgi-dir: "{snap_common}/etc/uwsgi/snap"
     uwsgi-dir-override: "{snap_common}/etc/uwsgi"
     uwsgi-log: "{snap_common}/log/uwsgi.log"
-    config-file: "{snap}/etc/keystone/keystone.conf"
-    config-file-override: "{snap_common}/etc/keystone/keystone.conf"
-    config-dir: "{snap_common}/etc/keystone/conf.d"
+    config-files:
+      - "{snap}/etc/keystone/keystone.conf"
+    config-files-override:
+      - "{snap_common}/etc/keystone/keystone.conf"
+    config-dirs:
+      - "{snap_common}/etc/keystone/conf.d"
     log-file: "{snap_common}/log/keystone.log"
     templates:
       admin-snap.ini.j2: "{snap_common}/etc/uwsgi/admin-snap.ini"
diff --git a/snap_openstack/tests/test_snap_openstack.py b/snap_openstack/tests/test_snap_openstack.py
index b4e9fcf..d79d09f 100644
--- a/snap_openstack/tests/test_snap_openstack.py
+++ b/snap_openstack/tests/test_snap_openstack.py
@@ -75,6 +75,7 @@ class TestOpenStackSnapExecute(test_base.TestCase):
         snap = base.OpenStackSnap(os.path.join(TEST_DIR,
                                                'snap-openstack.yaml'))
         mock_os.path.exists.side_effect = self.mock_exists
+        mock_os.path.basename.side_effect = 'keystone.conf'
         snap.execute(['snap-openstack',
                       'keystone-manage'])
         mock_os.execvp.assert_called_with(
@@ -94,6 +95,7 @@ class TestOpenStackSnapExecute(test_base.TestCase):
         snap = base.OpenStackSnap(os.path.join(TEST_DIR,
                                                'snap-openstack.yaml'))
         mock_os.path.exists.side_effect = self.mock_exists_overrides
+        mock_os.path.basename.side_effect = 'keystone.conf'
         snap.execute(['snap-openstack',
                       'keystone-manage'])
         mock_os.execvp.assert_called_with(
@@ -114,6 +116,7 @@ class TestOpenStackSnapExecute(test_base.TestCase):
         snap = base.OpenStackSnap(os.path.join(TEST_DIR,
                                                'snap-openstack.yaml'))
         mock_os.path.exists.side_effect = self.mock_exists
+        mock_os.path.basename.side_effect = 'keystone.conf'
         snap.execute(['snap-openstack',
                       'keystone-manage',
                       'db', 'sync'])
@@ -150,6 +153,7 @@ class TestOpenStackSnapExecute(test_base.TestCase):
         snap = base.OpenStackSnap(os.path.join(TEST_DIR,
                                                'snap-openstack.yaml'))
         mock_os.path.exists.side_effect = self.mock_exists
+        mock_os.path.basename.side_effect = 'keystone.conf'
         builtin = '__builtin__'
         if sys.version_info > (3, 0):
             builtin = 'builtins'
@@ -174,6 +178,7 @@ class TestOpenStackSnapExecute(test_base.TestCase):
         snap = base.OpenStackSnap(os.path.join(TEST_DIR,
                                                'snap-openstack.yaml'))
         mock_os.path.exists.side_effect = self.mock_exists_overrides
+        mock_os.path.basename.side_effect = 'keystone.conf'
         mock_os.listdir.side_effect = (
             '/var/snap/keystone/common/etc/uwsgi/config.ini'
         )