From 11f65c6c1d3bfd6a12f8e71d778d46d635010449 Mon Sep 17 00:00:00 2001 From: Michal Arbet Date: Tue, 15 Feb 2022 13:50:59 +0100 Subject: Add mechanism for patching files in containers This patch adds a way to patch files in a Docker image built by Kolla. This is very useful for several reasons, specifically: - Custom modifications - The stable branch of some library has a fix but no pip package has been released - Eliminates the need to package your own pip packages - Eliminates the need to invent your own versioning to prevent upstream versioning - Eliminates the need to manage a pip server - In other words, it eliminates the need to get a wheel into the image and install it manually using any method not previously mentioned It is also highly desirable because, although Kolla can replace the source for a service with a custom URL for a tarball or its own Git repo, it cannot do this for dependencies pulled from pip. I would also like to point out that this is a feature with its own code path and works only if the user "inserts" a patch into the folder patches/docker-image/something.patch and creates an analogous series file for patch source code. Simply said, this code will never interfere with the upstream build process since this feature is not intended for use in upstream. It is rather meant for downstream users who know what they are doing. Now they just have an option to patch their images. Everything works on all layers of the Docker image and stores a report of applied patches which can then be seen in /etc. This mechanism is similar as debian patch quilt. Change-Id: I61d0790c5d4d070b7ea9e8c99c0a76ff5d22bf9d --- docker/prometheus/prometheus-alertmanager/Dockerfile.j2 | 4 ++++ docker/prometheus/prometheus-base/Dockerfile.j2 | 2 ++ docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 | 2 ++ docker/prometheus/prometheus-cadvisor/Dockerfile.j2 | 1 + docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 | 4 ++++ docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 | 2 ++ docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 | 4 ++++ docker/prometheus/prometheus-mtail/Dockerfile.j2 | 4 ++++ docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 | 4 ++++ docker/prometheus/prometheus-node-exporter/Dockerfile.j2 | 4 ++++ docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 | 4 ++++ docker/prometheus/prometheus-ovn-exporter/Dockerfile.j2 | 4 ++++ docker/prometheus/prometheus-v2-server/Dockerfile.j2 | 4 ++++ 13 files changed, 43 insertions(+) (limited to 'docker/prometheus') diff --git a/docker/prometheus/prometheus-alertmanager/Dockerfile.j2 b/docker/prometheus/prometheus-alertmanager/Dockerfile.j2 index babcac1d4..d06f47dde 100644 --- a/docker/prometheus/prometheus-alertmanager/Dockerfile.j2 +++ b/docker/prometheus/prometheus-alertmanager/Dockerfile.j2 @@ -5,12 +5,16 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block prometheus_alertmanager_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block prometheus_alertmanager_install %} ADD prometheus-alertmanager-archive /prometheus-alertmanager-source RUN cp -r /prometheus-alertmanager-source/* /opt/ \ && ln -s /opt/alertmanager* /opt/prometheus_alertmanager {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block prometheus_alertmanager_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-base/Dockerfile.j2 b/docker/prometheus/prometheus-base/Dockerfile.j2 index 3db16cbfd..a8032920c 100644 --- a/docker/prometheus/prometheus-base/Dockerfile.j2 +++ b/docker/prometheus/prometheus-base/Dockerfile.j2 @@ -12,4 +12,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build COPY extend_start.sh /usr/local/bin/kolla_extend_start RUN chmod 644 /usr/local/bin/kolla_extend_start +{{ macros.kolla_patch_sources() }} + {% block prometheus_base_footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 index 4b45bef8b..cb0b52f62 100644 --- a/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 +++ b/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 @@ -28,6 +28,8 @@ RUN ln -s /prometheus-blackbox-exporter-source/* prometheus-blackbox-exporter \ && setcap cap_net_raw+ep /opt/blackbox_exporter/blackbox_exporter {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block prometheus_blackbox_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-cadvisor/Dockerfile.j2 b/docker/prometheus/prometheus-cadvisor/Dockerfile.j2 index f70de27f2..a86183d4b 100644 --- a/docker/prometheus/prometheus-cadvisor/Dockerfile.j2 +++ b/docker/prometheus/prometheus-cadvisor/Dockerfile.j2 @@ -14,6 +14,7 @@ RUN cp /prometheus-cadvisor-source /opt/cadvisor \ && chmod 0755 /opt/cadvisor {% endblock %} +{{ macros.kolla_patch_sources() }} {% block prometheus_cadvisor_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 index 8721b5c23..e9dd84f7b 100644 --- a/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 +++ b/docker/prometheus/prometheus-elasticsearch-exporter/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block prometheus_elasticsearch_exporter_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block prometheus_elasticsearch_exporter_install %} ADD prometheus-elasticsearch-exporter-archive /prometheus-elasticsearch-exporter-source @@ -13,6 +15,8 @@ RUN ln -s /prometheus-elasticsearch-exporter-source/* prometheus-elasticsearch-e && cp /prometheus-elasticsearch-exporter/elasticsearch_exporter /opt/elasticsearch_exporter/ {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block prometheus_elasticsearch_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 index 390241b9f..57330f58b 100644 --- a/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 +++ b/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 @@ -17,6 +17,8 @@ RUN ln -s /prometheus-libvirt-exporter-source/* prometheus-libvirt-exporter \ {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block prometheus_libvirt_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 index d288cce98..a4924ec64 100644 --- a/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 +++ b/docker/prometheus/prometheus-memcached-exporter/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block prometheus_memcached_exporter_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block prometheus_memcached_exporter_install %} ADD prometheus-memcached-exporter-archive /prometheus-memcached-exporter-source @@ -13,6 +15,8 @@ RUN ln -s /prometheus-memcached-exporter-source/* prometheus-memcached-exporter && cp /prometheus-memcached-exporter/memcached_exporter /opt/memcached_exporter/ {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block prometheus_memcached_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-mtail/Dockerfile.j2 b/docker/prometheus/prometheus-mtail/Dockerfile.j2 index 6966ffed8..a071bf2a2 100644 --- a/docker/prometheus/prometheus-mtail/Dockerfile.j2 +++ b/docker/prometheus/prometheus-mtail/Dockerfile.j2 @@ -5,12 +5,16 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block prometheus_mtail_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block prometheus_mtail_install %} ADD prometheus-mtail-archive /prometheus-mtail-source RUN cp /prometheus-mtail-source/* /opt/ {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block prometheus_mtail_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 index c1054dc5e..5965a6c77 100644 --- a/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 +++ b/docker/prometheus/prometheus-mysqld-exporter/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block mysqld_exporter_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block mysqld_exporter_install %} ADD prometheus-mysqld-exporter-archive /prometheus-mysqld-exporter-source @@ -13,6 +15,8 @@ RUN ln -s /prometheus-mysqld-exporter-source/* prometheus-mysqld-exporter \ && cp /prometheus-mysqld-exporter/mysqld_exporter /opt/mysqld_exporter/ {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block mysqld_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-node-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-node-exporter/Dockerfile.j2 index 5e8cd361d..7a7eaad67 100644 --- a/docker/prometheus/prometheus-node-exporter/Dockerfile.j2 +++ b/docker/prometheus/prometheus-node-exporter/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block node_exporter_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block node_exporter_install %} ADD prometheus-node-exporter-archive /prometheus-node-exporter-source @@ -13,6 +15,8 @@ RUN ln -s /prometheus-node-exporter-source/* prometheus-node-exporter \ && cp /prometheus-node-exporter/node_exporter /opt/node_exporter/ {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block node_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 index d5066973d..547363d30 100644 --- a/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 +++ b/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block prometheus_openstack_exporter_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block prometheus_openstack_exporter_install %} ADD prometheus-openstack-exporter-archive /prometheus-openstack-exporter-source @@ -12,6 +14,8 @@ RUN mkdir /opt/openstack-exporter \ && cp /prometheus-openstack-exporter-source/openstack-exporter /opt/openstack-exporter/ {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block prometheus_openstack_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-ovn-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-ovn-exporter/Dockerfile.j2 index dada0e550..f7c9c6041 100644 --- a/docker/prometheus/prometheus-ovn-exporter/Dockerfile.j2 +++ b/docker/prometheus/prometheus-ovn-exporter/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block prometheus_ovn_exporter_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block prometheus_ovn_exporter_install %} ADD prometheus-ovn-exporter-archive /prometheus-ovn-exporter-source @@ -12,6 +14,8 @@ ADD prometheus-ovn-exporter-archive /prometheus-ovn-exporter-source RUN cp /prometheus-ovn-exporter-source/* /opt/ {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block prometheus_ovn_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/prometheus/prometheus-v2-server/Dockerfile.j2 b/docker/prometheus/prometheus-v2-server/Dockerfile.j2 index f77fb158f..e9f47f5c1 100644 --- a/docker/prometheus/prometheus-v2-server/Dockerfile.j2 +++ b/docker/prometheus/prometheus-v2-server/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% block prometheus_v2_server_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block prometheus_v2_server_install %} ADD prometheus-v2-server-archive /prometheus-server-source @@ -14,6 +16,8 @@ RUN ln -s /prometheus-server-source/* prometheus-server \ && mkdir -p /etc/prometheus /data {% endblock %} +{{ macros.kolla_patch_sources() }} + {% block prometheus_v2_server_footer %}{% endblock %} {% block footer %}{% endblock %} -- cgit v1.2.3