Files
kolla/docker/macros.j2
Emilien Macchi d170256896 Introduce clean_package_cache
Default to true (to maintain backward compatibility), this parameter
will allow to disable the Package cache cleaning when building the Kolla
images.

In TripleO, we are investigating how we can accelerate the builds by not
cleaning the Yum cache and this patch will help us to do so.

Also included same for deb package_install method.

Co-Authored-By: Jon Schlueter <jschluet@redhat.com>
Change-Id: I0adc85302dfe0411d362c899f3e0d6a0019680d4
2019-03-17 17:39:52 +00:00

117 lines
4.4 KiB
Django/Jinja

{% macro install_packages(packages) -%}
{% if packages is defined and packages|length > 0 -%}
{% if base_package_type == 'rpm' -%}
RUN {{ distro_package_manager }} -y install {{ packages | join(' ') }}
{%- if clean_package_cache %} \
&& {{ distro_package_manager }} clean all && rm -rf /var/cache/{{ distro_package_manager }}{% endif %}
{%- elif base_package_type == 'deb' -%}
{#-
debian_package_install is a utility method to build up an appropriate
set of commands to install packages in a debian-based environment that
may include URL links to a .deb package
-#}
RUN {{ debian_package_install(packages, clean_package_cache) }}
{%- endif %}
{%- endif %}
{%- endmacro %}
{% macro sed(file='', expressions=[]) -%}
{% if file != '' and expressions|length >0 %}
RUN {% for expression in expressions %} sed -i "{{ file }}" -e "{{ expression }}" {% if not loop.last %} && {% endif %} {% endfor %}
{% else %}
RUN echo "file and expressions must be set to use the sed macro"; /bin/false
{% endif %}
{%- endmacro %}
{% macro get_pip() %}
{% if distro_python_version == '2.7' %}
{% set python='python' %}
{% else %}
{% set python='python3' %}
{% endif %}
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \
&& {{python}} get-pip.py \
&& rm get-pip.py
{% endmacro %}
{% macro install_pip(packages, constraints = true, pip_version = pip) %}
{%- if packages is sequence and packages|length > 0 -%}
{%- if not pip_version -%}
{%- set pip_version = 'pip' -%}
{%- endif -%}
{{ pip_version }} --no-cache-dir install --upgrade{{ ' ' }}
{%- if constraints %}-c /requirements/upper-constraints.txt {% endif -%}
{{ packages | join(' ') }}
{%- else -%}
true
{%- endif -%}
{% endmacro %}
{% macro configure_user(name, groups=None, shell=None, homedir=None) %}
{% set user=users[name] %}
{%- if not homedir %}
{% set homedir='/var/lib/' + name %}
{%- endif %}
RUN usermod --append --home {{ homedir }} --groups kolla {{ name }} \
{%- if groups %}
&& usermod --append --groups {{ groups }} {{ name }} \
{%- endif %}
{%- if shell %}
&& chsh --shell {{ shell }} {{ name }} \
{%- endif %}
&& mkdir -p {{ homedir }} \
&& chown -R {{ user.uid }}:{{ user.gid }} {{ homedir }}
{% endmacro %}
{% macro debian_fix_existing_user(package, lines) %}
RUN apt-get update \
&& apt-get -y install --no-install-recommends {{ package }} \
|| sed -i '/adduser/,+{{ lines }} d' /var/lib/dpkg/info/{{ package }}.postinst \
&& echo "configuring packages" \
&& dpkg --configure -a \
&& echo "done" \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
{% endmacro %}
{% macro debian_haproxy_existing_user_fix() %}
{# NOTE(SamYaple): The postinst script breaks if the user 'haproxy' already exists #}
{{ debian_fix_existing_user('haproxy', 1) }}
{% endmacro %}
{% macro debian_mongodb_existing_user_fix() %}
{# NOTE(hrw): The postinst script breaks if the user 'mongodb' already exists #}
{# TODO(hrw): Version in Debian 'testing' checks does user exists #}
{{ debian_fix_existing_user('mongodb-server', 3) }}
{% endmacro %}
{% macro debian_opendaylight_existing_user_fix() %}
{# NOTE(egonzalez): The postinst script breaks if the user 'odl' already exists #}
{{ debian_fix_existing_user('opendaylight', 1) }}
{% endmacro %}
{% macro install_kubectl() %}
# TODO(mandre) check for file integrity instead of downloading from an HTTPS source
RUN curl -o /usr/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/v1.5.4/bin/linux/{{debian_arch}}/kubectl \
&& chmod 755 /usr/bin/kubectl
{% endmacro %}
{% macro install_fluent_plugins(plugins) -%}
{% if plugins is defined and plugins|length > 0 -%}
{% if base_distro in ['centos', 'oraclelinux', 'rhel'] -%}
RUN ulimit -n 65536 && gem install --minimal-deps {{ plugins | join(' ') }}
{%- elif base_distro in ['debian', 'ubuntu'] -%}
RUN ulimit -n 65536 && td-agent-gem install {{ plugins | join(' ') }}
{%- endif %}
{%- endif %}
{%- endmacro %}
{% macro install_rabbitmq_plugins(plugins, version) -%}
ENV PLUGINS_DIR /usr/lib/rabbitmq/plugins
{% if plugins is defined and plugins|length > 0 -%}
{% for item in plugins %}
RUN curl -L -o ${PLUGINS_DIR}/{{ item }} https://github.com/deadtrickster/prometheus_rabbitmq_exporter/releases/download/{{ version }}/{{ item }}
{% endfor %}
{%- endif %}
{%- endmacro %}