aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-03-15 11:34:58 +0000
committerGerrit Code Review <review@openstack.org>2022-03-15 11:34:58 +0000
commitb3bd634688b6f27141c18231bc286b90a8ebd86f (patch)
treec52c343185ed4a960574fab4d3716810630e5330
parent61744a7bbf3283b83aee635e07ea482690df0405 (diff)
parent83efe325462e683e2c99d088012cd611d7a0b138 (diff)
downloadkolla-b3bd634688b6f27141c18231bc286b90a8ebd86f.tar.gz
kolla-b3bd634688b6f27141c18231bc286b90a8ebd86f.zip
Merge "Unify curl use (customisation options)"
-rw-r--r--doc/source/admin/image-building.rst11
-rw-r--r--docker/base/Dockerfile.j27
-rw-r--r--docker/fluentd/Dockerfile.j29
-rw-r--r--docker/kafka/Dockerfile.j28
-rw-r--r--docker/kolla-toolbox/Dockerfile.j22
-rw-r--r--docker/mariadb/mariadb-base/Dockerfile.j27
-rw-r--r--docker/prometheus/prometheus-alertmanager/Dockerfile.j27
-rw-r--r--docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j25
-rw-r--r--docker/prometheus/prometheus-cadvisor/Dockerfile.j27
-rw-r--r--docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j25
-rw-r--r--docker/prometheus/prometheus-haproxy-exporter/Dockerfile.j25
-rw-r--r--docker/prometheus/prometheus-memcached-exporter/Dockerfile.j25
-rw-r--r--docker/prometheus/prometheus-msteams/Dockerfile.j23
-rw-r--r--docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j25
-rw-r--r--docker/prometheus/prometheus-node-exporter/Dockerfile.j25
-rw-r--r--docker/prometheus/prometheus-openstack-exporter/Dockerfile.j25
-rw-r--r--docker/prometheus/prometheus-v2-server/Dockerfile.j25
-rw-r--r--docker/skydive/skydive-base/Dockerfile.j27
-rw-r--r--docker/storm/storm-base/Dockerfile.j26
-rw-r--r--docker/zookeeper/Dockerfile.j26
-rw-r--r--docker/zun/zun-cni-daemon/Dockerfile.j211
-rw-r--r--releasenotes/notes/generic-customisation-b2d431caa2fc5c10.yaml15
-rw-r--r--tests/templates/template_overrides.j22
23 files changed, 105 insertions, 43 deletions
diff --git a/doc/source/admin/image-building.rst b/doc/source/admin/image-building.rst
index aa100f4a3..2fe0c3abb 100644
--- a/doc/source/admin/image-building.rst
+++ b/doc/source/admin/image-building.rst
@@ -293,6 +293,17 @@ To remove a package from that list, say ``openstack-magnum-ui``, one would do:
# Horizon
{% set horizon_packages_remove = ['openstack-magnum-ui'] %}
+Python packages build options
+-----------------------------
+
+The block ``base_pip_conf`` in the ``base`` Dockerfile can be used to provide
+the PyPI build customisation options via the standard environment variables
+like ``PIP_INDEX_URL``, ``PIP_TRUSTED_HOST``, etc. Also here can be provided
+the standard environment variable ``UPPER_CONSTRAINTS_FILE`` used for building
+the ``bifrost_deploy`` container when PyPI upper-constraints needs to be
+overridden. Also this variable would be used in the ``kolla-toolbox`` if
+provided instead of the defaults.
+
Plugin functionality
--------------------
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index 4702fbd7a..fd18fa893 100644
--- a/docker/base/Dockerfile.j2
+++ b/docker/base/Dockerfile.j2
@@ -391,5 +391,12 @@ RUN touch /usr/local/bin/kolla_extend_start \
&& chmod 2775 /var/log/kolla \
&& rm -f /tmp/kolla_bashrc
+{% block base_pip_conf %}
+# the variables like PIP_INDEX_URL, PIP_EXTRA_INDEX_URL, PIP_TRUSTED_HOST etc. should be defined here.
+# ENV PIP_INDEX_URL=https://pypi.python.org/simple
+# ENV PIP_TRUSTED_HOST=pypi.python.org
+# ENV UPPER_CONSTRAINTS_FILE=https://releases.openstack.org/constraints/upper/{{ openstack_release }}
+{% endblock %}
+
{% block base_footer %}{% endblock %}
CMD ["kolla_start"]
diff --git a/docker/fluentd/Dockerfile.j2 b/docker/fluentd/Dockerfile.j2
index c9c8277ea..3351fcda4 100644
--- a/docker/fluentd/Dockerfile.j2
+++ b/docker/fluentd/Dockerfile.j2
@@ -61,12 +61,15 @@ RUN chmod 755 /usr/local/bin/kolla_extend_start
{% endblock %}
+{% block fluentd_monasca_plugin_version %}
+ARG monasca_output_plugin_version=1.0.2
+ARG monasca_output_plugin_url=https://github.com/monasca/fluentd-monasca/archive/${monasca_output_plugin_version}.tar.gz
+{% endblock %}
+
{% block fluentd_monasca_plugin_install %}
# Build and install Fluentd output plugin for Monasca API
-ARG monasca_output_plugin_tag=1.0.2
-ARG monasca_output_plugin_url=https://github.com/monasca/fluentd-monasca/archive/$monasca_output_plugin_tag.tar.gz
-RUN curl $monasca_output_plugin_url -o /tmp/fluentd-monasca.tar.gz \
+RUN curl ${monasca_output_plugin_url} -o /tmp/fluentd-monasca.tar.gz \
&& tar -xvf /tmp/fluentd-monasca.tar.gz -C /tmp \
&& cd /tmp/fluentd-monasca-* \
&& td-agent-gem build fluentd-monasca-output.gemspec \
diff --git a/docker/kafka/Dockerfile.j2 b/docker/kafka/Dockerfile.j2
index 05ab23b79..427376ac7 100644
--- a/docker/kafka/Dockerfile.j2
+++ b/docker/kafka/Dockerfile.j2
@@ -29,10 +29,10 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.install_packages(kafka_packages | customizable("packages")) }}
{% block kafka_version %}
-ENV kafka_version=2.0.1
-ENV kafka_scala_version=2.12
-ENV kafka_url=https://archive.apache.org/dist/kafka/${kafka_version}/kafka_${kafka_scala_version}-${kafka_version}.tgz
-ENV kafka_pkg_sha512sum=9773a85ef2898b4bae20481df4cfd5488bd195fffd700fcc874a9fa55065f6873f2ee12f46d2f6a6ccb5d5a93ddb7dec19227aef5d39d4f72b545ec63b24bb2f
+ARG kafka_version=2.0.1
+ARG kafka_scala_version=2.12
+ARG kafka_url=https://archive.apache.org/dist/kafka/${kafka_version}/kafka_${kafka_scala_version}-${kafka_version}.tgz
+ARG kafka_pkg_sha512sum=9773a85ef2898b4bae20481df4cfd5488bd195fffd700fcc874a9fa55065f6873f2ee12f46d2f6a6ccb5d5a93ddb7dec19227aef5d39d4f72b545ec63b24bb2f
{% endblock %}
{% block kafka_install %}
diff --git a/docker/kolla-toolbox/Dockerfile.j2 b/docker/kolla-toolbox/Dockerfile.j2
index 150dc5ab9..9a4006151 100644
--- a/docker/kolla-toolbox/Dockerfile.j2
+++ b/docker/kolla-toolbox/Dockerfile.j2
@@ -64,7 +64,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block kolla_toolbox_upper_constraints %}
RUN mkdir -p /requirements \
- && curl -o /requirements/upper-constraints.txt https://releases.openstack.org/constraints/upper/{{ openstack_release }} \
+ && curl -o /requirements/upper-constraints.txt ${UPPER_CONSTRAINTS_FILE:-https://releases.openstack.org/constraints/upper/{{ openstack_release }}} \
&& {{ macros.install_pip(kolla_toolbox_pip_virtualenv_packages | customizable("pip_virtualenv_packages")) }} \
&& virtualenv --system-site-packages {{ virtualenv_path }}
{% endblock %}
diff --git a/docker/mariadb/mariadb-base/Dockerfile.j2 b/docker/mariadb/mariadb-base/Dockerfile.j2
index 23c192213..f8ff4f713 100644
--- a/docker/mariadb/mariadb-base/Dockerfile.j2
+++ b/docker/mariadb/mariadb-base/Dockerfile.j2
@@ -24,7 +24,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.install_packages(mariadb_base_packages | customizable("packages")) }}
-RUN curl -o /usr/bin/clustercheck https://src.fedoraproject.org/rpms/mariadb/raw/10.3/f/clustercheck.sh \
+{% block mariadb_clustercheck_version %}
+ARG mariadb_clustercheck_version=10.3
+ARG mariadb_clustercheck_url=https://src.fedoraproject.org/rpms/mariadb/raw/${mariadb_clustercheck_version}/f/clustercheck.sh
+{% endblock %}
+
+RUN curl -o /usr/bin/clustercheck ${mariadb_clustercheck_url} \
&& chmod 755 /usr/bin/clustercheck
{% block mariadb_base_footer %}{% endblock %}
diff --git a/docker/prometheus/prometheus-alertmanager/Dockerfile.j2 b/docker/prometheus/prometheus-alertmanager/Dockerfile.j2
index 9af5af0f7..a3f351b06 100644
--- a/docker/prometheus/prometheus-alertmanager/Dockerfile.j2
+++ b/docker/prometheus/prometheus-alertmanager/Dockerfile.j2
@@ -7,13 +7,14 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block prometheus_alertmanager_repository_version %}
ARG prometheus_alertmanager_version=0.23.0
+ARG prometheus_alertmanager_archive=alertmanager-${prometheus_alertmanager_version}.linux-{{debian_arch}}.tar.gz
+ARG prometheus_alertmanager_sha256sums_url=https://github.com/prometheus/alertmanager/releases/download/v${prometheus_alertmanager_version}/sha256sums.txt
+ARG prometheus_alertmanager_download_url=https://github.com/prometheus/alertmanager/releases/download/v${prometheus_alertmanager_version}/${prometheus_alertmanager_archive}
{% endblock %}
{% block prometheus_alertmanager_install %}
-ARG prometheus_alertmanager_archive=alertmanager-${prometheus_alertmanager_version}.linux-{{debian_arch}}.tar.gz
-ARG prometheus_alertmanager_download_url=https://github.com/prometheus/alertmanager/releases/download/v${prometheus_alertmanager_version}/${prometheus_alertmanager_archive}
RUN cd /tmp && curl -o ${prometheus_alertmanager_archive} ${prometheus_alertmanager_download_url} \
- && curl https://github.com/prometheus/alertmanager/releases/download/v${prometheus_alertmanager_version}/sha256sums.txt -w '' | sha256sum --ignore-missing -c - \
+ && curl ${prometheus_alertmanager_sha256sums_url} -w '' | sha256sum --ignore-missing -c - \
&& tar xvf /tmp/${prometheus_alertmanager_archive} -C /opt/ \
&& rm -f /tmp/${prometheus_alertmanager_archive} \
&& ln -s /opt/alertmanager* /opt/prometheus_alertmanager
diff --git a/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2
index df22f46d8..dddbe69d1 100644
--- a/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2
+++ b/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2
@@ -8,7 +8,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% import "macros.j2" as macros with context %}
{% block prometheus_blackbox_exporter_repository_version %}
-ENV blackbox_exporter_version=0.16.0
+ARG blackbox_exporter_version=0.16.0
+ARG blackbox_exporter_url=https://github.com/prometheus/blackbox_exporter/releases/download/v${blackbox_exporter_version}/blackbox_exporter-${blackbox_exporter_version}.linux-{{debian_arch}}.tar.gz
{% endblock %}
{% if base_package_type == 'rpm' %}
@@ -24,7 +25,7 @@ ENV blackbox_exporter_version=0.16.0
{{ macros.install_packages(blackbox_packages | customizable("packages")) }}
{% block prometheus_blackbox_exporter_install %}
-RUN curl -o /tmp/blackbox_exporter.tar.gz https://github.com/prometheus/blackbox_exporter/releases/download/v${blackbox_exporter_version}/blackbox_exporter-${blackbox_exporter_version}.linux-{{debian_arch}}.tar.gz \
+RUN curl -o /tmp/blackbox_exporter.tar.gz ${blackbox_exporter_url} \
&& tar xvf /tmp/blackbox_exporter.tar.gz -C /opt/ \
&& rm -f /tmp/blackbox_exporter.tar.gz \
&& ln -s /opt/blackbox_exporter* /opt/blackbox_exporter
diff --git a/docker/prometheus/prometheus-cadvisor/Dockerfile.j2 b/docker/prometheus/prometheus-cadvisor/Dockerfile.j2
index 2f4e5563f..d337d9aa2 100644
--- a/docker/prometheus/prometheus-cadvisor/Dockerfile.j2
+++ b/docker/prometheus/prometheus-cadvisor/Dockerfile.j2
@@ -8,14 +8,15 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% import "macros.j2" as macros with context %}
{% block prometheus_cadvisor_repository_version %}
-ENV prometheus_cadvisor_version=0.38.7
-ENV prometheus_cadvisor_sha256sum=fdb86c256df682cfec2abd57a4405c919ed26f1e27ebfabf487f6c516bc7f6c7
+ARG prometheus_cadvisor_version=0.38.7
+ARG prometheus_cadvisor_sha256sum=fdb86c256df682cfec2abd57a4405c919ed26f1e27ebfabf487f6c516bc7f6c7
+ARG prometheus_cadvisor_url=https://github.com/google/cadvisor/releases/download/v${prometheus_cadvisor_version}/cadvisor
{% endblock %}
{% if base_arch in ['x86_64'] %}
{% block prometheus_cadvisor_install %}
-RUN curl -o /tmp/cadvisor https://github.com/google/cadvisor/releases/download/v${prometheus_cadvisor_version}/cadvisor \
+RUN curl -o /tmp/cadvisor ${prometheus_cadvisor_url} \
&& echo "${prometheus_cadvisor_sha256sum} /tmp/cadvisor" | sha256sum -c \
&& mv /tmp/cadvisor /opt \
&& chmod 0755 /opt/cadvisor
diff --git a/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2
index ebef61ff1..801eca7d0 100644
--- a/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2
+++ b/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2
@@ -6,11 +6,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block prometheus_elasticsearch_exporter_header %}{% endblock %}
{% block prometheus_elasticsearch_exporter_repository_version %}
-ENV elasticsearch_exporter_version=1.2.1
+ARG elasticsearch_exporter_version=1.2.1
+ARG elasticsearch_exporter_url=https://github.com/prometheus-community/elasticsearch_exporter/releases/download/v${elasticsearch_exporter_version}/elasticsearch_exporter-${elasticsearch_exporter_version}.linux-{{debian_arch}}.tar.gz
{% endblock %}
{% block prometheus_elasticsearch_exporter_install %}
-RUN curl -o /tmp/elasticsearch_exporter.tar.gz https://github.com/prometheus-community/elasticsearch_exporter/releases/download/v${elasticsearch_exporter_version}/elasticsearch_exporter-${elasticsearch_exporter_version}.linux-{{debian_arch}}.tar.gz \
+RUN curl -o /tmp/elasticsearch_exporter.tar.gz ${elasticsearch_exporter_url} \
&& tar xvf /tmp/elasticsearch_exporter.tar.gz -C /opt/ \
&& rm -f /tmp/elasticsearch_exporter.tar.gz \
&& ln -s /opt/elasticsearch_exporter* /opt/elasticsearch_exporter
diff --git a/docker/prometheus/prometheus-haproxy-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-haproxy-exporter/Dockerfile.j2
index 0242b16ef..ffa0fa623 100644
--- a/docker/prometheus/prometheus-haproxy-exporter/Dockerfile.j2
+++ b/docker/prometheus/prometheus-haproxy-exporter/Dockerfile.j2
@@ -6,11 +6,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block haproxy_exporter_header %}{% endblock %}
{% block haproxy_exporter_repository_version %}
-ENV haproxy_exporter_version=0.10.0
+ARG haproxy_exporter_version=0.10.0
+ARG haproxy_exporter_url=https://github.com/prometheus/haproxy_exporter/releases/download/v${haproxy_exporter_version}/haproxy_exporter-${haproxy_exporter_version}.linux-{{debian_arch}}.tar.gz
{% endblock %}
{% block haproxy_exporter_install %}
-RUN curl -o /tmp/haproxy_exporter.tar.gz https://github.com/prometheus/haproxy_exporter/releases/download/v${haproxy_exporter_version}/haproxy_exporter-${haproxy_exporter_version}.linux-{{debian_arch}}.tar.gz \
+RUN curl -o /tmp/haproxy_exporter.tar.gz ${haproxy_exporter_url} \
&& tar xvf /tmp/haproxy_exporter.tar.gz -C /opt/ \
&& rm -f /tmp/haproxy_exporter.tar.gz \
&& ln -s /opt/haproxy_exporter* /opt/haproxy_exporter
diff --git a/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2
index 66edaf5cb..d01c400b2 100644
--- a/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2
+++ b/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2
@@ -6,11 +6,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block prometheus_memcached_exporter_header %}{% endblock %}
{% block prometheus_memcached_exporter_repository_version %}
-ENV memcached_exporter_version=0.6.0
+ARG memcached_exporter_version=0.6.0
+ARG memcached_exporter_url=https://github.com/prometheus/memcached_exporter/releases/download/v${memcached_exporter_version}/memcached_exporter-${memcached_exporter_version}.linux-{{debian_arch}}.tar.gz
{% endblock %}
{% block prometheus_memcached_exporter_install %}
-RUN curl -o /tmp/memcached_exporter.tar.gz https://github.com/prometheus/memcached_exporter/releases/download/v${memcached_exporter_version}/memcached_exporter-${memcached_exporter_version}.linux-{{debian_arch}}.tar.gz \
+RUN curl -o /tmp/memcached_exporter.tar.gz ${memcached_exporter_url} \
&& tar xvf /tmp/memcached_exporter.tar.gz -C /opt/ \
&& rm -f /tmp/memcached_exporter.tar.gz \
&& ln -s /opt/memcached_exporter* /opt/memcached_exporter
diff --git a/docker/prometheus/prometheus-msteams/Dockerfile.j2 b/docker/prometheus/prometheus-msteams/Dockerfile.j2
index 6222dab39..711532efe 100644
--- a/docker/prometheus/prometheus-msteams/Dockerfile.j2
+++ b/docker/prometheus/prometheus-msteams/Dockerfile.j2
@@ -8,10 +8,11 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block prometheus_msteams_repository_version %}
ARG prometheus_msteams_version=1.5.0
ARG prometheus_msteams_sha256sum=74d1bedb12f6ec09fb65ddeb63328f691a9b2a56c92d7682ca152c867fc7c7a0
+ARG prometheus_msteams_url=https://github.com/prometheus-msteams/prometheus-msteams/releases/download/v${prometheus_msteams_version}/prometheus-msteams-linux-{{debian_arch}}
{% endblock %}
{% block prometheus_msteams_install %}
-RUN curl -o /tmp/prometheus-msteams https://github.com/prometheus-msteams/prometheus-msteams/releases/download/v${prometheus_msteams_version}/prometheus-msteams-linux-{{debian_arch}} \
+RUN curl -o /tmp/prometheus-msteams ${prometheus_msteams_url} \
&& echo "${prometheus_msteams_sha256sum} /tmp/prometheus-msteams" | sha256sum -c \
&& mv /tmp/prometheus-msteams /opt \
&& chmod 0755 /opt/prometheus-msteams \
diff --git a/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2
index c8f77ee07..03d421928 100644
--- a/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2
+++ b/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2
@@ -6,11 +6,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block mysqld_exporter_header %}{% endblock %}
{% block mysqld_exporter_repository_version %}
-ENV mysqld_exporter_version=0.12.1
+ARG mysqld_exporter_version=0.12.1
+ARG mysqld_exporter_url=https://github.com/prometheus/mysqld_exporter/releases/download/v${mysqld_exporter_version}/mysqld_exporter-${mysqld_exporter_version}.linux-{{debian_arch}}.tar.gz
{% endblock %}
{% block mysqld_exporter_install %}
-RUN curl -o /tmp/mysqld_exporter.tar.gz https://github.com/prometheus/mysqld_exporter/releases/download/v${mysqld_exporter_version}/mysqld_exporter-${mysqld_exporter_version}.linux-{{debian_arch}}.tar.gz \
+RUN curl -o /tmp/mysqld_exporter.tar.gz ${mysqld_exporter_url} \
&& tar xvf /tmp/mysqld_exporter.tar.gz -C /opt/ \
&& rm -f /tmp/mysqld_exporter.tar.gz \
&& ln -s /opt/mysqld_exporter* /opt/mysqld_exporter
diff --git a/docker/prometheus/prometheus-node-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-node-exporter/Dockerfile.j2
index ce780f809..5694fe487 100644
--- a/docker/prometheus/prometheus-node-exporter/Dockerfile.j2
+++ b/docker/prometheus/prometheus-node-exporter/Dockerfile.j2
@@ -6,11 +6,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block node_exporter_header %}{% endblock %}
{% block node_exporter_repository_version %}
-ENV node_exporter_version=0.18.1
+ARG node_exporter_version=0.18.1
+ARG node_exporter_url=https://github.com/prometheus/node_exporter/releases/download/v{$node_exporter_version}/node_exporter-${node_exporter_version}.linux-{{debian_arch}}.tar.gz
{% endblock %}
{% block node_exporter_install %}
-RUN curl -o /tmp/node_exporter.tar.gz https://github.com/prometheus/node_exporter/releases/download/v${node_exporter_version}/node_exporter-${node_exporter_version}.linux-{{debian_arch}}.tar.gz \
+RUN curl -o /tmp/node_exporter.tar.gz ${node_exporter_url} \
&& tar xvf /tmp/node_exporter.tar.gz -C /opt/ \
&& rm -f /tmp/node_exporter.tar.gz \
&& ln -s /opt/node_exporter* /opt/node_exporter
diff --git a/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2
index 0150e1d6c..83e48be47 100644
--- a/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2
+++ b/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2
@@ -6,11 +6,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block prometheus_openstack_exporter_header %}{% endblock %}
{% block prometheus_openstack_exporter_repository_version %}
-ENV prometheus_openstack_exporter_version=1.3.0
+ARG prometheus_openstack_exporter_version=1.3.0
+ARG prometheus_openstack_exporter_url=https://github.com/openstack-exporter/openstack-exporter/releases/download/v${prometheus_openstack_exporter_version}/openstack-exporter-${prometheus_openstack_exporter_version}.linux-{{debian_arch}}.tar.gz
{% endblock %}
{% block prometheus_openstack_exporter_install %}
-RUN curl -o /tmp/prometheus_openstack_exporter.tar.gz https://github.com/openstack-exporter/openstack-exporter/releases/download/v${prometheus_openstack_exporter_version}/openstack-exporter-${prometheus_openstack_exporter_version}.linux-{{debian_arch}}.tar.gz \
+RUN curl -o /tmp/prometheus_openstack_exporter.tar.gz ${prometheus_openstack_exporter_url} \
&& tar xvf /tmp/prometheus_openstack_exporter.tar.gz -C /opt/ \
&& rm -f /tmp/prometheus_openstack_exporter.tar.gz \
&& ln -s /opt/openstack-exporter* /opt/openstack-exporter
diff --git a/docker/prometheus/prometheus-v2-server/Dockerfile.j2 b/docker/prometheus/prometheus-v2-server/Dockerfile.j2
index 63646649a..f0ae96211 100644
--- a/docker/prometheus/prometheus-v2-server/Dockerfile.j2
+++ b/docker/prometheus/prometheus-v2-server/Dockerfile.j2
@@ -6,11 +6,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% block prometheus_v2_server_header %}{% endblock %}
{% block prometheus_v2_server_repository_version %}
-ENV prometheus_version=2.26.1
+ARG prometheus_version=2.26.1
+ARG prometheus_url=https://github.com/prometheus/prometheus/releases/download/v${prometheus_version}/prometheus-${prometheus_version}.linux-{{debian_arch}}.tar.gz
{% endblock %}
{% block prometheus_v2_server_install %}
-RUN curl -o /tmp/prometheus.tar.gz https://github.com/prometheus/prometheus/releases/download/v${prometheus_version}/prometheus-${prometheus_version}.linux-{{debian_arch}}.tar.gz \
+RUN curl -o /tmp/prometheus.tar.gz ${prometheus_url} \
&& tar xvf /tmp/prometheus.tar.gz -C /opt/ \
&& rm -f /tmp/prometheus.tar.gz \
&& ln -s /opt/prometheus* /opt/prometheus \
diff --git a/docker/skydive/skydive-base/Dockerfile.j2 b/docker/skydive/skydive-base/Dockerfile.j2
index e5b939071..5342f7e99 100644
--- a/docker/skydive/skydive-base/Dockerfile.j2
+++ b/docker/skydive/skydive-base/Dockerfile.j2
@@ -10,13 +10,18 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.enable_extra_repos(['openvswitch']) }}
{{ macros.configure_user(name='skydive') }}
+{% block skydive_version %}
+ARG skydive_version=0.26.0
+ARG skydive_url=https://github.com/skydive-project/skydive/releases/download/v${skydive_version}/skydive
+{% endblock %}
+
{% block skydive_install %}
{% if base_arch != 'x86_64' %}
RUN echo 'image on {{ base_distro }} is not yet available on non x86_64 platforms' \
&& /bin/false
{% else %}
-RUN curl -o /usr/bin/skydive "https://github.com/skydive-project/skydive/releases/download/v0.26.0/skydive" \
+RUN curl -o /usr/bin/skydive ${skydive_url} \
&& chmod +x /usr/bin/skydive
{% endif %}
diff --git a/docker/storm/storm-base/Dockerfile.j2 b/docker/storm/storm-base/Dockerfile.j2
index 3bb03e753..bc89041df 100644
--- a/docker/storm/storm-base/Dockerfile.j2
+++ b/docker/storm/storm-base/Dockerfile.j2
@@ -31,9 +31,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.install_packages(storm_packages | customizable("packages")) }}
{% block storm_version %}
-ENV storm_version=1.2.2
-ENV storm_url=https://archive.apache.org/dist/storm/apache-storm-${storm_version}/apache-storm-${storm_version}.tar.gz
-ENV storm_pkg_sha512sum=0a1120b8df7b22edc75f0a412d625841f72f3fb8e9ff5d413d510908d68ea1f0c17d68c1a7f1eda427b40902452e9efcae902c36499b558592e41cc1079de2e0
+ARG storm_version=1.2.2
+ARG storm_url=https://archive.apache.org/dist/storm/apache-storm-${storm_version}/apache-storm-${storm_version}.tar.gz
+ARG storm_pkg_sha512sum=0a1120b8df7b22edc75f0a412d625841f72f3fb8e9ff5d413d510908d68ea1f0c17d68c1a7f1eda427b40902452e9efcae902c36499b558592e41cc1079de2e0
{% endblock %}
{% block storm_install %}
diff --git a/docker/zookeeper/Dockerfile.j2 b/docker/zookeeper/Dockerfile.j2
index 29cc547f4..0c7a28ec3 100644
--- a/docker/zookeeper/Dockerfile.j2
+++ b/docker/zookeeper/Dockerfile.j2
@@ -22,9 +22,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{{ macros.install_packages(zookeeper_packages | customizable("packages")) }}
{% block zookeeper_version %}
-ENV zookeeper_version=3.4.13
-ENV zookeeper_url=http://archive.apache.org/dist/zookeeper/zookeeper-${zookeeper_version}/zookeeper-${zookeeper_version}.tar.gz
-ENV zookeeper_pkg_sha1sum=a989b527f3f990d471e6d47ee410e57d8be7620b
+ARG zookeeper_version=3.4.13
+ARG zookeeper_url=http://archive.apache.org/dist/zookeeper/zookeeper-${zookeeper_version}/zookeeper-${zookeeper_version}.tar.gz
+ARG zookeeper_pkg_sha1sum=a989b527f3f990d471e6d47ee410e57d8be7620b
{% endblock %}
{% block zookeeper_binary_install %}
diff --git a/docker/zun/zun-cni-daemon/Dockerfile.j2 b/docker/zun/zun-cni-daemon/Dockerfile.j2
index beaa6ec60..296996136 100644
--- a/docker/zun/zun-cni-daemon/Dockerfile.j2
+++ b/docker/zun/zun-cni-daemon/Dockerfile.j2
@@ -36,9 +36,14 @@ COPY zun_sudoers /etc/sudoers.d/kolla_zun_sudoers
RUN chmod 750 /etc/sudoers.d \
&& chmod 640 /etc/sudoers.d/kolla_zun_sudoers
-RUN curl -o /tmp/cni-plugins-v0.7.1.tgz https://github.com/containernetworking/plugins/releases/download/v0.7.1/cni-plugins-amd64-v0.7.1.tgz \
- && tar -C /opt -xzvf /tmp/cni-plugins-v0.7.1.tgz ./loopback \
- && rm -f /tmp/cni-plugins-v0.7.1.tgz
+{% block zun_cni_daemon_version %}
+ARG zun_cni_daemon_version=0.7.1
+ARG zun_cni_daemon_url=https://github.com/containernetworking/plugins/releases/download/v${zun_cni_daemon_version}/cni-plugins-amd64-v${zun_cni_daemon_version}.tgz
+{% endblock %}
+
+RUN curl -o /tmp/cni-plugins.tgz ${zun_cni_daemon_url} \
+ && tar -C /opt -xzvf /tmp/cni-plugins.tgz ./loopback \
+ && rm -f /tmp/cni-plugins.tgz
{% block zun_cni_daemon_footer %}{% endblock %}
{% block footer %}{% endblock %}
diff --git a/releasenotes/notes/generic-customisation-b2d431caa2fc5c10.yaml b/releasenotes/notes/generic-customisation-b2d431caa2fc5c10.yaml
new file mode 100644
index 000000000..b821b0f6c
--- /dev/null
+++ b/releasenotes/notes/generic-customisation-b2d431caa2fc5c10.yaml
@@ -0,0 +1,15 @@
+---
+features:
+ - |
+ Add templating block for base image helping to customize pip settings used
+ at build time for offline build scenario. We need some required environment
+ variables configured at the top level for all containers, for example the
+ variable UPPER_CONSTRAINTS_FILE used by the bifrost-deploy installation
+ scripts. Also here we can override the address of the PyPI repository via
+ PIP_INDEX_URL, PIP_EXTRA_INDEX_URL, and PIP_TRUSTED_HOST variables.
+upgrade:
+ - |
+ All Dockerfile files which uses curl to download any external files from the
+ Internet URLs now have the corresponding version templating block which can
+ be used to override them. Also all the ENV instructions inside these blocks
+ converted to the ARG instructions to minimize the unneeded variables.
diff --git a/tests/templates/template_overrides.j2 b/tests/templates/template_overrides.j2
index 92c165e05..5112bafa7 100644
--- a/tests/templates/template_overrides.j2
+++ b/tests/templates/template_overrides.j2
@@ -1,7 +1,7 @@
{% raw %}
{% extends parent_template %}
-{% block base_header %}
+{% block base_pip_conf %}
{% endraw %}
ENV PIP_INDEX_URL {{ nodepool_pypi_mirror }}