diff --git a/docker/macros.j2 b/docker/macros.j2
new file mode 100644
index 0000000000000000000000000000000000000000..c10973ef6443e44fdb07296f78b9101ac84b11a4
--- /dev/null
+++ b/docker/macros.j2
@@ -0,0 +1,7 @@
+{% macro install_packages(packages) -%}
+{% if base_distro in ['centos', 'fedora', 'oraclelinux', 'rhel'] -%}
+    yum -y install {{ packages | join(' ') }}  && yum clean all
+{%- elif base_distro in ['ubuntu', 'debian'] -%}
+    apt-get -y install --no-install-recommends {{ packages | join(' ') }} && apt-get clean
+{%- endif %}
+{%- endmacro %}
diff --git a/kolla/image/build.py b/kolla/image/build.py
index 301dea0d1c0251d0189a330e1ccc0f8c34f19ae3..74c05b69bf8b3a05e23c7e84ccd3399abb509b95 100755
--- a/kolla/image/build.py
+++ b/kolla/image/build.py
@@ -626,8 +626,12 @@ class KollaWorker(object):
                       'kolla_version': kolla_version,
                       'rpm_setup': self.rpm_setup}
             env = jinja2.Environment(  # nosec: not used to render HTML
-                loader=jinja2.FileSystemLoader(path))
-            template = env.get_template(template_name)
+                loader=jinja2.FileSystemLoader(self.working_dir))
+            tpl_path = os.path.join(
+                os.path.relpath(path, self.working_dir),
+                template_name)
+
+            template = env.get_template(tpl_path)
             if self.conf.template_override:
                 template_path = os.path.dirname(self.conf.template_override)
                 template_name = os.path.basename(self.conf.template_override)