kolla-ansible/docker/base/Dockerfile.j2
Steven Dake c7a9835b68 Improve dry-ness of base dockerfile.j2
The delorean repositories no longer have a separate location for
openvswitch.  Now openvswitch is located in delorean-deps.repo
and the rest of delorean master is located in the delorean.repo
file.  These files can be installed for both RDO and SOURCE, but
not for RHOS.  This patch uses the install_metatype to make a
determination as to when to install these two repos.  In the
process, we can remove the source RPM installation.

Change-Id: Ieedddd9d7ee234b6acdb03f7043d57c18e024951
Closes-Bug: #1508326
2015-10-21 04:56:52 -04:00

173 lines
5.9 KiB
Django/Jinja

FROM {{ base_distro }}:{{ base_distro_tag }}
MAINTAINER Kolla Project (https://launchpad.net/kolla)
# Early failure for bases and types
{% if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel'] %}
{% if install_type not in ['source', 'binary', 'rdo', 'rhel'] %}
RUN echo 'ERROR: {{ install_type }} is unavailable for {{ base_distro }}' \
&& /bin/false
{% endif %}
{% elif base_distro in ['ubuntu', 'debian'] %}
{% if install_type not in ['source'] %}
RUN echo 'ERROR: {{ install_type }} is unavailable for {{ base_distro }}' \
&& /bin/false
{% endif %}
{% else %}
RUN echo 'ERROR: The specified distro has no Kolla images to build: "{{ base_distro }}"' \
&& /bin/false
{% endif %}
{{ include_header }}
ENV KOLLA_BASE_DISTRO {{ base_distro }}
ENV KOLLA_INSTALL_TYPE {{ install_type }}
ENV KOLLA_INSTALL_METATYPE {{ install_metatype }}
# For RPM Variants, enable the correct repositories - this should all be done
# in the base image so repos are consistent throughout the system. This also
# enables to provide repo overrides at a later date in a simple fashion if we
# desire such functionality. I think we will :)
{% if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel'] %}
#### BEGIN REPO ENABLEMENT
# Turns on MariaDB repos throughout the RPM build
COPY mariadb.yum.repo /etc/yum.repos.d/MariaDB.repo
COPY ceph.yum.repo /etc/yum.repos.d/ceph.repo
RUN yum install -y http://www.percona.com/redir/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm \
&& sed -i 's|$releasever|centos/latest|g' /etc/yum.repos.d/percona-release.repo
{% if install_metatype in ['rdo', 'mixed'] %}
# These repos provide latest packages built from trunk master into RPMs
RUN curl http://trunk.rdoproject.org/centos7/current-passed-ci/delorean.repo -o /etc/yum.repos.d/delorean.repo
RUN curl http://trunk.rdoproject.org/centos7/delorean-deps.repo -o /etc/yum.repos.d/delorean-deps.repo
{% endif %}
# endif for repo setup for all RHEL except RHEL OSP
{% if install_metatype == 'rhos' %}
# Turn on the RHOS 7.0 repo for RHOS
RUN subscription-manager repos --enable rhel-7-server-rpms \
&& subscription-manager repos --enable rhel-7-server-openstack-7.0-rpms
{% endif %}
{% if base_distro == 'centos' %}
# CentOS 7.1 workaround for conflicting packages with libvirt
RUN rpm -e --nodeps systemd-container systemd-container-libs \
&& rpm -e --nodeps yum-plugin-fastestmirror \
&& yum -y install systemd systemd-libs systemd-devel \
&& yum install -y epel-release \
&& yum clean all
{% endif %}
# Endif for base_distro centos
{% if base_distro == 'rhel' %}
# Enable couple required repositories for all RHEL builds
# Turn on EPEL throughout the build
RUN yum install -y \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
&& yum clean all \
&& subscription-manager repos --enable rhel-7-server-optional-rpms \
&& subscription-manager repos --enable rhel-7-server-extras-rpms
{% endif %}
# Endif for base_distro RHEL
{% if base_distro == 'oraclelinux' %}
RUN yum install -y \
yum-utils \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
&& yum clean all
RUN yum-config-manager --enable ol7_optional_latest ol7_addons
{% endif %}
# Endif for base_distro oraclelinux
{% if base_distro == 'fedora' %}
# Set up repositories
RUN yum install -y https://rdo.fedorapeople.org/rdo-release.rpm \
&& yum -y install dnf dnf-plugins-core \
&& yum clean all
{% endif %}
# Endif for base_distro fedora
#### END REPO ENABLEMENT
# We are back to the basic if conditional here which is:
# if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel']
RUN yum update -y \
&& yum clean all
{% if install_type == 'binary' %}
# Install base packages
RUN yum install -y \
sudo \
which \
&& yum clean all
{% endif %}
# Endif for install_type binary
{% if install_type == 'source' %}
# Update packages
RUN yum -y install \
curl \
sudo \
tar \
which \
&& yum clean all
# endif for install type is source for RPM based distros
{% endif %}
# endif for base_distro centos,fedora,oraclelinux,rhel
{% elif base_distro in ['ubuntu', 'debian'] %}
# This will prevent questions from being asked during the install
ENV DEBIAN_FRONTEND noninteractive
COPY sources.list /etc/apt/
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com 199369E5404BD5FC7D2FE43BCBCB082A1BB943DB \
&& apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com 391A9AA2147192839E9DB0315EDB1B62EC4926EA \
&& apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com 430BDF5C56E7C94E848EE60C1C4CBDCDCD2EFD2A \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get dist-upgrade -y \
&& apt-get install -y --no-install-recommends python \
&& apt-get clean \
&& sed -i "s|'purelib': '\$base/local/lib/python\$py_version_short/dist-packages',|'purelib': '\$base/lib/python\$py_version_short/dist-packages',|;s|'platlib': '\$platbase/local/lib/python\$py_version_short/dist-packages',|'platlib': '\$platbase/lib/python\$py_version_short/dist-packages',|;s|'headers': '\$base/local/include/python\$py_version_short/\$dist_name',|'headers': '\$base/include/python\$py_version_short/\$dist_name',|;s|'scripts': '\$base/local/bin',|'scripts': '\$base/bin',|;s|'data' : '\$base/local',|'data' : '\$base',|" /usr/lib/python2.7/distutils/command/install.py \
&& rm -rf /usr/lib/python2.7/site-packages \
&& ln -s dist-packages /usr/lib/python2.7/site-packages
{% endif %}
COPY set_configs.py /usr/local/bin/kolla_set_configs
COPY start.sh /usr/local/bin/kolla_start
RUN touch /usr/local/bin/kolla_extend_start \
&& chmod 755 /usr/local/bin/kolla_start /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_set_configs
CMD ["kolla_start"]