diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index 07fbf8b0db8fd86df8fc6b619c4415eedbe4291f..84a4fd3749a0bab1b0af9d2c081d3772b1317c39 100644
--- a/docker/base/Dockerfile.j2
+++ b/docker/base/Dockerfile.j2
@@ -24,6 +24,9 @@ ENV PS1="$(tput bold)($(printenv KOLLA_SERVICE_NAME))$(tput sgr0)[$(id -un)@$(ho
 
 {% if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel'] %}
 
+RUN if [ $(awk '{match($0, /[0-9]+/,version)}END{print version[0]}' /etc/system-release) != "{{ supported_distro_release }}" ]; then \
+        echo "Only supported {{ supported_distro_release }} release on {{ base_distro }}"; false; fi
+
 # Customize PS1 bash shell
 RUN cat /tmp/kolla_bashrc >> /etc/bashrc
 
@@ -181,6 +184,9 @@ RUN yum -y install \
 {# endif for base_distro centos,fedora,oraclelinux,rhel #}
 {% elif base_distro in ['ubuntu', 'debian'] %}
 
+RUN if [ $(awk -F '=' '/DISTRIB_RELEASE/{print $2}' /etc/lsb-release) != "{{ supported_distro_release }}" ]; then \
+        echo "Only supported {{ supported_distro_release }} release on {{ base_distro }}"; false; fi
+
 # Customize PS1 bash shell
 RUN cat /tmp/kolla_bashrc >> /etc/bash.bashrc
 
diff --git a/kolla/cmd/build.py b/kolla/cmd/build.py
index bbd9788ad6998764a90353e51887493a73c8900f..ef17cd0edaaebad9dd1e731da782f837fd300c24 100755
--- a/kolla/cmd/build.py
+++ b/kolla/cmd/build.py
@@ -353,11 +353,6 @@ class KollaWorker(object):
             self.namespace = conf.namespace
         self.base = conf.base
         self.base_tag = conf.base_tag
-        if self.base == 'ubuntu' and self.base_tag == 'latest':
-            self.base_tag = '14.04'
-            # TODO(inc0): This will override default latest, which is xenial
-            # if someone actually set up latest in their conf, it will be
-            # overriden as well
         self.install_type = conf.install_type
         self.tag = conf.tag
         self.images = list()
@@ -481,6 +476,8 @@ class KollaWorker(object):
 
     def create_dockerfiles(self):
         kolla_version = version.version_info.cached_version_string()
+        supported_distro_release = common_config.DISTRO_RELEASE.get(
+            self.base)
         for path in self.docker_build_paths:
             template_name = "Dockerfile.j2"
             env = jinja2.Environment(  # nosec: not used to render HTML
@@ -489,6 +486,7 @@ class KollaWorker(object):
             values = {'base_distro': self.base,
                       'base_image': self.conf.base_image,
                       'base_distro_tag': self.base_tag,
+                      'supported_distro_release': supported_distro_release,
                       'install_metatype': self.install_metatype,
                       'image_prefix': self.image_prefix,
                       'install_type': self.install_type,
diff --git a/kolla/common/config.py b/kolla/common/config.py
index 83ccfb0fb6083de3929244a137b967018cdfef20..fe3972a390f6a7bb692f3a3fbb44744a2ceb9fc7 100644
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -18,7 +18,14 @@ from oslo_config import types
 from kolla.version import version_info as version
 
 
-BASE_OS_DISTRO = ['centos', 'ubuntu', 'oraclelinux']
+BASE_OS_DISTRO = ['centos', 'ubuntu', 'oraclelinux', 'debian']
+DISTRO_RELEASE = {
+    'centos': '7',
+    'redhat': '7',
+    'oraclelinux': '7',
+    'debian': '8',
+    'ubuntu': '14.04',
+}
 RDO_MIRROR = "http://trunk.rdoproject.org/centos7"
 DELOREAN = "{}/current-passed-ci/delorean.repo".format(RDO_MIRROR)
 DELOREAN_DEPS = "{}/delorean-deps.repo".format(RDO_MIRROR)
@@ -290,5 +297,10 @@ def parse(conf, args, usage=None, prog=None,
          prog=prog,
          version=version.cached_version_string(),
          default_config_files=default_config_files)
+
+    # NOTE(jeffrey4l): set the default base tag based on the
+    # base option
+    conf.set_default('base_tag', DISTRO_RELEASE.get(conf.base))
+
     if not conf.base_image:
         conf.base_image = conf.base
diff --git a/releasenotes/notes/pin-distro-version-4d835846a1ab5283.yaml b/releasenotes/notes/pin-distro-version-4d835846a1ab5283.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..fd5855abebf32f7b4482e5ead9783a7b2b3946dc
--- /dev/null
+++ b/releasenotes/notes/pin-distro-version-4d835846a1ab5283.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Pin the base distro release version.
+issues:
+  - Ubuntu 14.04 is eol. We should move to Ubuntu 16.04 in
+    Newton cycle.