From fd6d89c4953dace9b324c9de8303ec88a21a9710 Mon Sep 17 00:00:00 2001 From: "Michal (inc0) Jastrzebski" Date: Sat, 13 May 2017 07:20:47 -0700 Subject: [PATCH] Clean up base Dockerfile I think this simple change will make it much more readable Change-Id: I369aee3a19d17c134db1d13b94b8c45a44733149 --- docker/base/Dockerfile.j2 | 333 +------------------------------------ docker/base/apt_distros.j2 | 114 +++++++++++++ docker/base/rpm_distros.j2 | 210 +++++++++++++++++++++++ 3 files changed, 329 insertions(+), 328 deletions(-) create mode 100644 docker/base/apt_distros.j2 create mode 100644 docker/base/rpm_distros.j2 diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2 index 30a3150f07..3c7879f3e0 100644 --- a/docker/base/Dockerfile.j2 +++ b/docker/base/Dockerfile.j2 @@ -27,334 +27,11 @@ RUN cat /tmp/kolla_bashrc >> /etc/skel/.bashrc \ # PS1 var when used /bin/sh shell ENV PS1="$(tput bold)($(printenv KOLLA_SERVICE_NAME))$(tput sgr0)[$(id -un)@$(hostname -s) $(pwd)]$ " -{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %} -# 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 :) - -RUN CURRENT_DISTRO_RELEASE=$(awk '{match($0, /[0-9]+/,version)}END{print version[0]}' /etc/system-release); \ - if [ $CURRENT_DISTRO_RELEASE != "{{ supported_distro_release }}" ]; then \ - echo "Only release '{{ supported_distro_release }}' is supported on {{ base_distro }}"; false; \ - fi \ - && cat /tmp/kolla_bashrc >> /etc/bashrc \ - && sed -i 's|^\(override_install_langs=.*\)|# \1|' /etc/yum.conf - -#### BEGIN REPO ENABLEMENT -{% set base_yum_repo_files = [ - ] %} - -{% set base_yum_url_packages = [ -] %} - -{% set base_yum_repo_keys = [ -] %} - -{% if base_arch == 'aarch64' %} - {% set base_yum_repo_files = [ - 'aarch64-cbs.repo' - ] %} - -{% elif base_arch == 'x86_64' %} - {% set base_yum_repo_files = [ - 'elasticsearch.repo', - 'grafana.repo', - 'influxdb.repo', - 'kibana.yum.repo', - 'MariaDB.repo', - 'td.repo', - 'zookeeper.repo' - ] %} - - {% set base_yum_url_packages = [ - 'http://repo.percona.com/release/7/RPMS/x86_64/percona-release-0.1-4.noarch.rpm' - ] %} - - {% set base_yum_repo_keys = [ - 'http://yum.mariadb.org/RPM-GPG-KEY-MariaDB', - '/etc/pki/rpm-gpg/RPM-GPG-KEY-Percona', - 'https://packages.elastic.co/GPG-KEY-elasticsearch', - 'https://repos.influxdata.com/influxdb.key', - 'https://packagecloud.io/gpg.key', - 'https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana', - 'https://packages.treasuredata.com/GPG-KEY-td-agent' - ] %} -{% endif %} - -{%- for repo_file in base_yum_repo_files | customizable('yum_repo_files') %} -COPY {{ repo_file }} /etc/yum.repos.d/{{ repo_file }} -{%- endfor %} - -{{ macros.install_packages(base_yum_url_packages | customizable("yum_url_packages")) }} - -{% for key in base_yum_repo_keys | customizable('yum_repo_keys') %} -{%- if loop.first %}RUN {% else %} && {% endif -%} - rpm --import {{ key }} -{%- if not loop.last %} \{% endif %} -{% endfor -%} - - {% if install_metatype in ['rdo', 'mixed'] %} - -{% for cmd in rpm_setup %} -{{ cmd }} -{% endfor %} - - {% endif %} - {# endif for repo setup for all RHEL except RHEL OSP #} - - {% if install_metatype == 'rhos' %} - -{% block base_rhos_repo_enablement %} -# Turn on the RHOS 7.0 repo for RHOS -RUN yum-config-manager --enable rhel-7-server-rpms \ - && yum-config-manager --enable rhel-7-server-openstack-7.0-rpms -{% endblock %} - - {% endif %} - - {% if base_distro == 'centos' %} - -{% block base_centos_gpg_key_import %} -RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 -{% endblock %} - -{% set base_centos_yum_repo_keys = [ -] %} - -{% set base_centos_yum_repo_packages = [ - 'epel-release', - 'yum-plugin-priorities' -] %} - -{% if base_arch == 'x86_64' %} - {% set base_centos_yum_repo_keys = base_centos_yum_repo_keys + [ - '/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage', - '/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization' - ] %} - - {% set base_centos_yum_repo_packages = base_centos_yum_repo_packages + [ - 'centos-release-ceph-jewel', - 'centos-release-qemu-ev' - ] %} -{% endif %} - -{{ macros.install_packages(base_centos_yum_repo_packages | customizable("centos_yum_repo_packages")) }} -{% for key in base_centos_yum_repo_keys | customizable('centos_yum_repo_keys') %} - {%- if loop.first %}RUN {% else %} && {% endif -%} - rpm --import {{ key }} \ -{% endfor -%} -{%- if base_centos_yum_repo_keys|customizable('centos_yum_repo_keys')|length == 0 %}RUN {% else %} && {% endif -%} - yum clean all - - {% endif %} - {# Endif for base_distro centos #} - - {% if base_distro == 'rhel' %} - -{% block base_rhel_package_installation %} -# Enable couple required repositories for all RHEL builds -# Turn on EPEL throughout the build -RUN yum -y install \ - https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \ - && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 \ - && yum -y install \ - yum-plugin-priorities \ - && yum clean all \ - && yum-config-manager --enable rhel-7-server-optional-rpms \ - && yum-config-manager --enable rhel-7-server-extras-rpms -{% endblock %} - - {% endif %} - {# Endif for base_distro RHEL #} - - {% if base_distro == 'oraclelinux' %} - -{% block base_oraclelinux_package_installation %} -COPY oraclelinux-extras.repo /etc/yum.repos.d/oraclelinux-extras.repo -RUN yum -y install \ - tar \ - yum-utils \ - https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \ - && rpm -Uvh --nodeps \ - https://buildlogs.centos.org/centos/7/cloud/x86_64/openstack-mitaka/centos-release-openstack-mitaka-1-3.el7.noarch.rpm \ - http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-ceph-jewel-1.0-1.el7.centos.noarch.rpm \ - http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-qemu-ev-1.0-1.el7.noarch.rpm \ - http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-virt-common-1-1.el7.centos.noarch.rpm \ - http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-storage-common-1-2.el7.centos.noarch.rpm \ - && sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS-*.repo \ - && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 \ - && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage \ - && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization \ - && yum-config-manager --enable ol7_optional_latest ol7_addons \ - && yum -y install \ - yum-plugin-priorities \ - && yum clean all -{% endblock %} - - {% endif %} - {# Endif for base_distro oraclelinux #} - -#### END REPO ENABLEMENT - -{# We are back to the basic if conditional here which is: - if base_distro in ['centos', 'oraclelinux', 'rhel'] #} - -{% set base_compiler_packages = [ - 'gcc', - 'glibc-static' -] %} - -{% block base_redhat_binary_versionlock %}{% endblock %} - {% if install_type == 'binary' %} -{% set base_centos_binary_packages = [ - 'iproute', - 'iscsi-initiator-utils', - 'lvm2', - 'python', - 'scsi-target-utils', - 'sudo', - 'which' -] %} -# Install base packages -{{ macros.install_packages( base_centos_binary_packages | customizable("centos_binary_packages")) }} - {% endif %} - {# Endif for install_type binary #} - - {% if install_type == 'source' %} - -{% set base_centos_source_packages = [ - 'curl', - 'iproute', - 'iscsi-initiator-utils', - 'lvm2', - 'scsi-target-utils', - 'sudo', - 'tar', - 'which' -] %} -# Update packages -{{ macros.install_packages( base_centos_source_packages | customizable("centos_source_packages")) }} - - {% endif %} - {# endif for install type is source for RPM based distros #} -{# endif for base_distro centos,oraclelinux,rhel #} -{% elif base_distro in ['debian', 'ubuntu'] %} - -RUN if [ $(awk -F '=' '/DISTRIB_RELEASE/{print $2}' /etc/lsb-release) != "{{ supported_distro_release }}" ]; then \ - echo "Only release '{{ supported_distro_release }}' is supported on {{ base_distro }}"; false; fi - -# Customize PS1 bash shell -RUN cat /tmp/kolla_bashrc >> /etc/bash.bashrc - -# This will prevent questions from being asked during the install -ENV DEBIAN_FRONTEND noninteractive - -# Reducing disk footprint -COPY dpkg_reducing_disk_footprint /etc/dpkg/dpkg.cfg.d/dpkg_reducing_disk_footprint - -{% block base_ubuntu_package_pre %} -# Need apt-transport-https and ca-certificates before replacing sources.list or -# apt-get update will not work if any repositories are accessed via HTTPS -RUN apt-get update \ - && apt-get -y install --no-install-recommends apt-transport-https ca-certificates gnupg dirmngr \ - && apt-get clean -{% endblock %} - -{% block base_ubuntu_package_sources_list %} -{% if base_distro == 'debian' or ( base_distro == 'ubuntu' and base_arch == 'x86_64' ) %} -COPY sources.list.{{ base_distro }} /etc/apt/sources.list -{% else %} -COPY sources.list.{{ base_distro }}.{{ base_arch }} /etc/apt/sources.list -{% endif %} -{% endblock %} - -{% block base_ubuntu_package_apt_preferences %} -COPY apt_preferences.{{ base_distro }} /etc/apt/preferences -{% endblock %} - -{% set base_apt_packages = [ - 'apt-utils', - 'curl', - 'gawk', - 'iproute2', - 'kmod', - 'lvm2', - 'netbase', - 'open-iscsi', - 'python', - 'sudo', - 'tgt'] -%} -{% set base_compiler_packages = [ - 'build-essential' -] %} - -{% if base_distro == 'ubuntu' %} - {# 05CE15085FC09D18E99EFB22684A14CF2582E0C5 -- InfluxDB Packaging Service #} - {# 177F4010FE56CA3336300305F1656F24C74CD1D8 -- MariaDB Signing Key #} - {# 391A9AA2147192839E9DB0315EDB1B62EC4926EA -- Canonical Cloud Archive Signing Key #} - {# 418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB -- packagecloud ops (production key) #} - {# 46095ACC8548582C1A2699A9D27D666CD88E42B4 -- Elasticsearch (Elasticsearch Signing Key) #} - {# 4D1BB29D63D98E422B2113B19334A25F8507EFA5 -- Percona MySQL Development Team (Packaging key) #} - {# 58118E89F3A912897C070ADBF76221572C52609D -- Docker Release Tool (releasedocker) #} - {# 901F9177AB97ACBE -- Treasure Data, Inc (Treasure Agent Official Signing key) #} - {% set base_apt_keys = [ - '05CE15085FC09D18E99EFB22684A14CF2582E0C5', - '177F4010FE56CA3336300305F1656F24C74CD1D8', - '391A9AA2147192839E9DB0315EDB1B62EC4926EA', - '418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB', - '46095ACC8548582C1A2699A9D27D666CD88E42B4', - '4D1BB29D63D98E422B2113B19334A25F8507EFA5', - '58118E89F3A912897C070ADBF76221572C52609D', - '901F9177AB97ACBE', - ] %} -{% elif base_distro == 'debian' %} - {% set base_apt_keys = [ - '58118E89F3A912897C070ADBF76221572C52609D', - '0xcbcb082a1bb943db', - 'D27D666CD88E42B4', - '05CE15085FC09D18E99EFB22684A14CF2582E0C5', - '418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB', - '901F9177AB97ACBE', - 'E84AC2C0460F3994', - ] %} - {% set base_apt_packages = base_apt_packages + - ['sudo',] - %} -{% endif %} - -{% block base_ubuntu_package_installation %} - {%- block base_ubuntu_package_key_installation %} - {%- for key in base_apt_keys | customizable('apt_keys') %} - {%- if loop.first %}RUN {% else %} && {% endif %}apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 {{ key }} - {%- if not loop.last %} \ - {% endif -%} - {% endfor %} - {% endblock %} -RUN apt-get update \ - && apt-get -y upgrade \ - && apt-get -y dist-upgrade \ - && apt-get -y install --no-install-recommends \ - {%- for package in base_apt_packages | customizable('apt_packages') %} - {{ package }} \ - {%- endfor %} - && apt-get clean -{% endblock %} - -{% if base_distro == 'ubuntu' %} -RUN sed -i \ - -e "s|\('purelib': '\$base/\)local/\(lib/python\$py_version_short/dist-packages',\)|\1\2|" \ - -e "s|\('platlib': '\$platbase/\)local/\(lib/python\$py_version_short/dist-packages',\)|\1\2|" \ - -e "s|\('headers': '\$base/\)local/\(include/python\$py_version_short/\$dist_name',\)|\1\2|" \ - -e "s|\('scripts': '\$base/\)local/\(bin',\)|\1\2|" \ - -e "s|\('data' : '\$base\)/local\(',\)|\1\2|" \ - /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 %} - -{# endif for base_distro debian, ubuntu #} -{% endif %} +{% if base_distro in ['centos', 'oraclelinux', 'rhel'] -%} + {% include 'base/rpm_distros.j2' %} +{%- elif base_distro in ['debian', 'ubuntu'] -%} + {% include 'base/apt_distros.j2' %} +{%- endif %} COPY set_configs.py /usr/local/bin/kolla_set_configs COPY start.sh /usr/local/bin/kolla_start diff --git a/docker/base/apt_distros.j2 b/docker/base/apt_distros.j2 new file mode 100644 index 0000000000..de03a82b48 --- /dev/null +++ b/docker/base/apt_distros.j2 @@ -0,0 +1,114 @@ +RUN if [ $(awk -F '=' '/DISTRIB_RELEASE/{print $2}' /etc/lsb-release) != "{{ supported_distro_release }}" ]; then \ + echo "Only release '{{ supported_distro_release }}' is supported on {{ base_distro }}"; false; fi + +# Customize PS1 bash shell +RUN cat /tmp/kolla_bashrc >> /etc/bash.bashrc + +# This will prevent questions from being asked during the install +ENV DEBIAN_FRONTEND noninteractive + +# Reducing disk footprint +COPY dpkg_reducing_disk_footprint /etc/dpkg/dpkg.cfg.d/dpkg_reducing_disk_footprint + +{% block base_ubuntu_package_pre %} +# Need apt-transport-https and ca-certificates before replacing sources.list or +# apt-get update will not work if any repositories are accessed via HTTPS +RUN apt-get update \ + && apt-get -y install --no-install-recommends apt-transport-https ca-certificates gnupg dirmngr \ + && apt-get clean +{% endblock %} + +{% block base_ubuntu_package_sources_list %} +{% if base_distro == 'debian' or ( base_distro == 'ubuntu' and base_arch == 'x86_64' ) %} +COPY sources.list.{{ base_distro }} /etc/apt/sources.list +{% else %} +COPY sources.list.{{ base_distro }}.{{ base_arch }} /etc/apt/sources.list +{% endif %} +{% endblock %} + +{% block base_ubuntu_package_apt_preferences %} +COPY apt_preferences.{{ base_distro }} /etc/apt/preferences +{% endblock %} + +{% set base_apt_packages = [ + 'apt-utils', + 'curl', + 'gawk', + 'iproute2', + 'kmod', + 'lvm2', + 'netbase', + 'open-iscsi', + 'python', + 'sudo', + 'tgt'] +%} +{% set base_compiler_packages = [ + 'build-essential' +] %} + +{% if base_distro == 'ubuntu' %} + {# 05CE15085FC09D18E99EFB22684A14CF2582E0C5 -- InfluxDB Packaging Service #} + {# 177F4010FE56CA3336300305F1656F24C74CD1D8 -- MariaDB Signing Key #} + {# 391A9AA2147192839E9DB0315EDB1B62EC4926EA -- Canonical Cloud Archive Signing Key #} + {# 418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB -- packagecloud ops (production key) #} + {# 46095ACC8548582C1A2699A9D27D666CD88E42B4 -- Elasticsearch (Elasticsearch Signing Key) #} + {# 4D1BB29D63D98E422B2113B19334A25F8507EFA5 -- Percona MySQL Development Team (Packaging key) #} + {# 58118E89F3A912897C070ADBF76221572C52609D -- Docker Release Tool (releasedocker) #} + {# 901F9177AB97ACBE -- Treasure Data, Inc (Treasure Agent Official Signing key) #} + {% set base_apt_keys = [ + '05CE15085FC09D18E99EFB22684A14CF2582E0C5', + '177F4010FE56CA3336300305F1656F24C74CD1D8', + '391A9AA2147192839E9DB0315EDB1B62EC4926EA', + '418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB', + '46095ACC8548582C1A2699A9D27D666CD88E42B4', + '4D1BB29D63D98E422B2113B19334A25F8507EFA5', + '58118E89F3A912897C070ADBF76221572C52609D', + '901F9177AB97ACBE', + ] %} +{% elif base_distro == 'debian' %} + {% set base_apt_keys = [ + '58118E89F3A912897C070ADBF76221572C52609D', + '0xcbcb082a1bb943db', + 'D27D666CD88E42B4', + '05CE15085FC09D18E99EFB22684A14CF2582E0C5', + '418A7F2FB0E1E6E7EABF6FE8C2E73424D59097AB', + '901F9177AB97ACBE', + 'E84AC2C0460F3994', + ] %} + {% set base_apt_packages = base_apt_packages + + ['sudo',] + %} +{% endif %} + +{% block base_ubuntu_package_installation %} + {%- block base_ubuntu_package_key_installation %} + {%- for key in base_apt_keys | customizable('apt_keys') %} + {%- if loop.first %}RUN {% else %} && {% endif %}apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 {{ key }} + {%- if not loop.last %} \ + {% endif -%} + {% endfor %} + {% endblock %} +RUN apt-get update \ + && apt-get -y upgrade \ + && apt-get -y dist-upgrade \ + && apt-get -y install --no-install-recommends \ + {%- for package in base_apt_packages | customizable('apt_packages') %} + {{ package }} \ + {%- endfor %} + && apt-get clean +{% endblock %} + +{% if base_distro == 'ubuntu' %} +RUN sed -i \ + -e "s|\('purelib': '\$base/\)local/\(lib/python\$py_version_short/dist-packages',\)|\1\2|" \ + -e "s|\('platlib': '\$platbase/\)local/\(lib/python\$py_version_short/dist-packages',\)|\1\2|" \ + -e "s|\('headers': '\$base/\)local/\(include/python\$py_version_short/\$dist_name',\)|\1\2|" \ + -e "s|\('scripts': '\$base/\)local/\(bin',\)|\1\2|" \ + -e "s|\('data' : '\$base\)/local\(',\)|\1\2|" \ + /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 %} + +{# endif for base_distro debian, ubuntu #} diff --git a/docker/base/rpm_distros.j2 b/docker/base/rpm_distros.j2 new file mode 100644 index 0000000000..9fdfa58c9a --- /dev/null +++ b/docker/base/rpm_distros.j2 @@ -0,0 +1,210 @@ + +# 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 :) + +RUN CURRENT_DISTRO_RELEASE=$(awk '{match($0, /[0-9]+/,version)}END{print version[0]}' /etc/system-release); \ + if [ $CURRENT_DISTRO_RELEASE != "{{ supported_distro_release }}" ]; then \ + echo "Only release '{{ supported_distro_release }}' is supported on {{ base_distro }}"; false; \ + fi \ + && cat /tmp/kolla_bashrc >> /etc/bashrc \ + && sed -i 's|^\(override_install_langs=.*\)|# \1|' /etc/yum.conf + +#### BEGIN REPO ENABLEMENT +{% set base_yum_repo_files = [ + ] %} + +{% set base_yum_url_packages = [ +] %} + +{% set base_yum_repo_keys = [ +] %} + +{% if base_arch == 'aarch64' %} + {% set base_yum_repo_files = [ + 'aarch64-cbs.repo' + ] %} + +{% elif base_arch == 'x86_64' %} + {% set base_yum_repo_files = [ + 'elasticsearch.repo', + 'grafana.repo', + 'influxdb.repo', + 'kibana.yum.repo', + 'MariaDB.repo', + 'td.repo', + 'zookeeper.repo' + ] %} + + {% set base_yum_url_packages = [ + 'http://repo.percona.com/release/7/RPMS/x86_64/percona-release-0.1-4.noarch.rpm' + ] %} + + {% set base_yum_repo_keys = [ + 'http://yum.mariadb.org/RPM-GPG-KEY-MariaDB', + '/etc/pki/rpm-gpg/RPM-GPG-KEY-Percona', + 'https://packages.elastic.co/GPG-KEY-elasticsearch', + 'https://repos.influxdata.com/influxdb.key', + 'https://packagecloud.io/gpg.key', + 'https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana', + 'https://packages.treasuredata.com/GPG-KEY-td-agent' + ] %} +{% endif %} + +{%- for repo_file in base_yum_repo_files | customizable('yum_repo_files') %} +COPY {{ repo_file }} /etc/yum.repos.d/{{ repo_file }} +{%- endfor %} + +{{ macros.install_packages(base_yum_url_packages | customizable("yum_url_packages")) }} + +{% for key in base_yum_repo_keys | customizable('yum_repo_keys') %} +{%- if loop.first %}RUN {% else %} && {% endif -%} + rpm --import {{ key }} +{%- if not loop.last %} \{% endif %} +{% endfor -%} + + {% if install_metatype in ['rdo', 'mixed'] %} + +{% for cmd in rpm_setup %} +{{ cmd }} +{% endfor %} + + {% endif %} + {# endif for repo setup for all RHEL except RHEL OSP #} + + {% if install_metatype == 'rhos' %} + +{% block base_rhos_repo_enablement %} +# Turn on the RHOS 7.0 repo for RHOS +RUN yum-config-manager --enable rhel-7-server-rpms \ + && yum-config-manager --enable rhel-7-server-openstack-7.0-rpms +{% endblock %} + + {% endif %} + + {% if base_distro == 'centos' %} + +{% block base_centos_gpg_key_import %} +RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 +{% endblock %} + +{% set base_centos_yum_repo_keys = [ +] %} + +{% set base_centos_yum_repo_packages = [ + 'epel-release', + 'yum-plugin-priorities' +] %} + +{% if base_arch == 'x86_64' %} + {% set base_centos_yum_repo_keys = base_centos_yum_repo_keys + [ + '/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage', + '/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization' + ] %} + + {% set base_centos_yum_repo_packages = base_centos_yum_repo_packages + [ + 'centos-release-ceph-jewel', + 'centos-release-qemu-ev' + ] %} +{% endif %} + +{{ macros.install_packages(base_centos_yum_repo_packages | customizable("centos_yum_repo_packages")) }} +{% for key in base_centos_yum_repo_keys | customizable('centos_yum_repo_keys') %} + {%- if loop.first %}RUN {% else %} && {% endif -%} + rpm --import {{ key }} \ +{% endfor -%} +{%- if base_centos_yum_repo_keys|customizable('centos_yum_repo_keys')|length == 0 %}RUN {% else %} && {% endif -%} + yum clean all + + {% endif %} + {# Endif for base_distro centos #} + + {% if base_distro == 'rhel' %} + +{% block base_rhel_package_installation %} +# Enable couple required repositories for all RHEL builds +# Turn on EPEL throughout the build +RUN yum -y install \ + https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \ + && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 \ + && yum -y install \ + yum-plugin-priorities \ + && yum clean all \ + && yum-config-manager --enable rhel-7-server-optional-rpms \ + && yum-config-manager --enable rhel-7-server-extras-rpms +{% endblock %} + + {% endif %} + {# Endif for base_distro RHEL #} + + {% if base_distro == 'oraclelinux' %} + +{% block base_oraclelinux_package_installation %} +COPY oraclelinux-extras.repo /etc/yum.repos.d/oraclelinux-extras.repo +RUN yum -y install \ + tar \ + yum-utils \ + https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \ + && rpm -Uvh --nodeps \ + https://buildlogs.centos.org/centos/7/cloud/x86_64/openstack-mitaka/centos-release-openstack-mitaka-1-3.el7.noarch.rpm \ + http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-ceph-jewel-1.0-1.el7.centos.noarch.rpm \ + http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-qemu-ev-1.0-1.el7.noarch.rpm \ + http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-virt-common-1-1.el7.centos.noarch.rpm \ + http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-storage-common-1-2.el7.centos.noarch.rpm \ + && sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS-*.repo \ + && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 \ + && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage \ + && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization \ + && yum-config-manager --enable ol7_optional_latest ol7_addons \ + && yum -y install \ + yum-plugin-priorities \ + && yum clean all +{% endblock %} + + {% endif %} + {# Endif for base_distro oraclelinux #} + +#### END REPO ENABLEMENT + +{# We are back to the basic if conditional here which is: + if base_distro in ['centos', 'oraclelinux', 'rhel'] #} + +{% set base_compiler_packages = [ + 'gcc', + 'glibc-static' +] %} + +{% block base_redhat_binary_versionlock %}{% endblock %} + {% if install_type == 'binary' %} +{% set base_centos_binary_packages = [ + 'iproute', + 'iscsi-initiator-utils', + 'lvm2', + 'python', + 'scsi-target-utils', + 'sudo', + 'which' +] %} +# Install base packages +{{ macros.install_packages( base_centos_binary_packages | customizable("centos_binary_packages")) }} + {% endif %} + {# Endif for install_type binary #} + + {% if install_type == 'source' %} + +{% set base_centos_source_packages = [ + 'curl', + 'iproute', + 'iscsi-initiator-utils', + 'lvm2', + 'scsi-target-utils', + 'sudo', + 'tar', + 'which' +] %} +# Update packages +{{ macros.install_packages( base_centos_source_packages | customizable("centos_source_packages")) }} + + {% endif %} + {# endif for install type is source for RPM based distros #}