cleanup in base for yum install entries

- introduce install_packages(..., chain=True) to allow chaining on
  onto existing RUN commands
- introduce install_packages(..., clean) which defaults correctly
  but allows you to override if you want to avoid doing extra
  package manager cleanup
- refactored several calls in base to make use of these new features

In general this allows for macros.install_packages to be chained
after other calls

for example

RUN foo && {{ macros.install_packages(..., chain=True) }}

Change-Id: I4b2fe8e13ee3c0fffe77a1179a7af5b534496996
This commit is contained in:
Jon Schlueter 2019-03-15 15:47:30 -04:00
parent 91c5453cc2
commit 95f38fb0f6
2 changed files with 11 additions and 16 deletions

View File

@ -166,11 +166,9 @@ RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
# Enable couple required repositories for all RHEL builds # Enable couple required repositories for all RHEL builds
# Turn on EPEL throughout the build # Turn on EPEL throughout the build
RUN yum-config-manager --enable rhel-7-server-optional-rpms \ RUN yum-config-manager --enable rhel-7-server-optional-rpms \
&& yum -y install \ && {{ macros.install_packages( ['yum-plugin-priorities' ], chain=True, clean=False) }} \
yum-plugin-priorities \
{%- if install_type != 'binary' or install_metatype != 'rdo' %} {%- if install_type != 'binary' or install_metatype != 'rdo' %}
&& yum -y install \ && {{ macros.install_packages( [ 'https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm' ], chain=True, clean=False) }} \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
&& rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 \ && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 \
{% endif -%} {% endif -%}
&& yum-config-manager --enable rhel-7-server-extras-rpms \ && yum-config-manager --enable rhel-7-server-extras-rpms \
@ -187,10 +185,7 @@ RUN yum-config-manager --enable rhel-7-server-optional-rpms \
{% block base_oraclelinux_package_installation %} {% block base_oraclelinux_package_installation %}
COPY oraclelinux-extras.repo /etc/yum.repos.d/oraclelinux-extras.repo COPY oraclelinux-extras.repo /etc/yum.repos.d/oraclelinux-extras.repo
RUN yum -y install \ RUN {{ macros.install_packages( ['tar', 'yum-utils', 'https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm' ], chain=True, clean=False) }} \
tar \
yum-utils \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
&& rpm -Uvh --nodeps \ && rpm -Uvh --nodeps \
http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-ceph-luminous-1.1-2.el7.centos.noarch.rpm \ http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-ceph-luminous-1.1-2.el7.centos.noarch.rpm \
http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-opstools-1-8.el7.noarch.rpm \ http://mirror.centos.org/centos-7/7/extras/x86_64/Packages/centos-release-opstools-1-8.el7.noarch.rpm \
@ -203,8 +198,7 @@ RUN yum -y install \
&& rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage \ && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage \
&& rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization \ && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization \
&& yum-config-manager --enable ol7_optional_latest ol7_addons \ && yum-config-manager --enable ol7_optional_latest ol7_addons \
&& yum -y install \ && {{ macros.install_packages( ['yum-plugin-priorities' ], chain=True, clean=False) }} \
yum-plugin-priorities \
&& {{ macros.rpm_security_update(clean_package_cache) }} && {{ macros.rpm_security_update(clean_package_cache) }}
{% endblock %} {% endblock %}

View File

@ -1,16 +1,17 @@
{% macro install_packages(packages) -%} {% macro install_packages(packages, chain=False, clean=clean_package_cache) -%}
{% if packages is defined and packages|length > 0 -%} {% if packages is defined and packages|length > 0 -%}
{% if base_package_type == 'rpm' -%} {% if not chain -%} RUN {% endif -%}
RUN {{ distro_package_manager }} -y install {{ packages | join(' ') }} {%- if base_package_type == 'rpm' -%}
{%- if clean_package_cache %} \ {{ distro_package_manager }} -y install {{ packages | join(' ') }}
&& {{ distro_package_manager }} clean all && rm -rf /var/cache/{{ distro_package_manager }}{% endif %} {%- if clean %} \
&& {{ distro_package_manager }} clean all && rm -rf /var/cache/{{ distro_package_manager }}{% endif -%}
{%- elif base_package_type == 'deb' -%} {%- elif base_package_type == 'deb' -%}
{#- {#-
debian_package_install is a utility method to build up an appropriate debian_package_install is a utility method to build up an appropriate
set of commands to install packages in a debian-based environment that set of commands to install packages in a debian-based environment that
may include URL links to a .deb package may include URL links to a .deb package
-#} -#}
RUN {{ debian_package_install(packages, clean_package_cache) }} {{ debian_package_install(packages, clean) }}
{%- endif %} {%- endif %}
{%- endif %} {%- endif %}
{%- endmacro %} {%- endmacro %}