diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2 index 07fbf8b0db..84a4fd3749 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 18ff68503d..4067719131 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 dbe6394f82..21ac064b61 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) @@ -294,5 +301,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 0000000000..fd5855abeb --- /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.