From 5aabec47f057d9cb32aab520d666e51bd9ee37c6 Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Wed, 17 Jun 2026 07:24:16 +0200 Subject: Add cleanup_repos to revert build_only overrides Repos marked build_only: true are backed up before handle_repos() overwrites them and restored at the end of each image build, so CI mirror URLs are not baked into the final image. The cleanup RUN was injected into every Dockerfile, not just images that called handle_repos() for those repos. Child images with no backup fell through to "rm -f", deleting the inherited repo file (e.g. debian.sources in bifrost-base, breaking cpio install). Fix by adding a {repo}.enabled sentinel that handle_repos creates when it processes a build_only repo, making the cleanup conditional on that sentinel. Change-Id: Ie5b9970a4575b6258dc238059d3f33ddfe155789 Signed-off-by: Michal Nasiadka --- doc/source/admin/image-building.rst | 46 +++ kolla/docker/aodh/aodh-base/Dockerfile.j2 | 3 + kolla/docker/barbican/barbican-base/Dockerfile.j2 | 3 + kolla/docker/base/Dockerfile.j2 | 1 + kolla/docker/bifrost/bifrost-base/Dockerfile.j2 | 5 +- kolla/docker/bifrost/bifrost-deploy/Dockerfile.j2 | 3 + kolla/docker/blazar/blazar-base/Dockerfile.j2 | 3 + .../ceilometer/ceilometer-base/Dockerfile.j2 | 3 + .../ceilometer/ceilometer-compute/Dockerfile.j2 | 3 + .../ceilometer/ceilometer-ipmi/Dockerfile.j2 | 3 + kolla/docker/cinder/cinder-api/Dockerfile.j2 | 3 + kolla/docker/cinder/cinder-backup/Dockerfile.j2 | 3 + kolla/docker/cinder/cinder-base/Dockerfile.j2 | 5 +- kolla/docker/cinder/cinder-volume/Dockerfile.j2 | 3 + .../docker/cloudkitty/cloudkitty-api/Dockerfile.j2 | 3 + .../cloudkitty/cloudkitty-base/Dockerfile.j2 | 3 + .../cloudkitty/cloudkitty-processor/Dockerfile.j2 | 3 + kolla/docker/collectd/Dockerfile.j2 | 3 + kolla/docker/cron/Dockerfile.j2 | 3 + kolla/docker/cyborg/cyborg-agent/Dockerfile.j2 | 3 + kolla/docker/cyborg/cyborg-api/Dockerfile.j2 | 3 + kolla/docker/cyborg/cyborg-base/Dockerfile.j2 | 3 + .../designate-backend-bind9/Dockerfile.j2 | 3 + .../docker/designate/designate-base/Dockerfile.j2 | 3 + .../designate/designate-worker/Dockerfile.j2 | 3 + kolla/docker/dnsmasq/Dockerfile.j2 | 3 + kolla/docker/fluentd/Dockerfile.j2 | 3 + kolla/docker/glance/glance-api/Dockerfile.j2 | 3 + kolla/docker/glance/glance-base/Dockerfile.j2 | 5 +- kolla/docker/gnocchi/gnocchi-base/Dockerfile.j2 | 5 +- kolla/docker/grafana/Dockerfile.j2 | 3 + .../docker/hacluster/hacluster-base/Dockerfile.j2 | 3 + .../hacluster/hacluster-corosync/Dockerfile.j2 | 3 + .../hacluster-pacemaker-remote/Dockerfile.j2 | 3 + .../hacluster/hacluster-pacemaker/Dockerfile.j2 | 3 + kolla/docker/hacluster/hacluster-pcs/Dockerfile.j2 | 3 + kolla/docker/haproxy/haproxy-ssh/Dockerfile.j2 | 3 + kolla/docker/haproxy/haproxy/Dockerfile.j2 | 3 + kolla/docker/heat/heat-base/Dockerfile.j2 | 3 + kolla/docker/horizon/Dockerfile.j2 | 3 + kolla/docker/httpd/Dockerfile.j2 | 4 + kolla/docker/ironic/ironic-api/Dockerfile.j2 | 3 + kolla/docker/ironic/ironic-base/Dockerfile.j2 | 3 + kolla/docker/ironic/ironic-conductor/Dockerfile.j2 | 3 + .../docker/ironic/ironic-pxe-filter/Dockerfile.j2 | 3 + kolla/docker/ironic/ironic-pxe/Dockerfile.j2 | 3 + kolla/docker/iscsid/Dockerfile.j2 | 3 + kolla/docker/keepalived/Dockerfile.j2 | 3 + kolla/docker/kerbside/kerbside-api/Dockerfile.j2 | 4 +- kolla/docker/kerbside/kerbside-base/Dockerfile.j2 | 4 + kolla/docker/kerbside/kerbside-proxy/Dockerfile.j2 | 4 +- kolla/docker/keystone/keystone-base/Dockerfile.j2 | 3 + .../docker/keystone/keystone-fernet/Dockerfile.j2 | 3 + kolla/docker/keystone/keystone-ssh/Dockerfile.j2 | 3 + kolla/docker/keystone/keystone/Dockerfile.j2 | 3 + kolla/docker/kolla-toolbox/Dockerfile.j2 | 3 + .../letsencrypt/letsencrypt-lego/Dockerfile.j2 | 3 + kolla/docker/macros.j2 | 16 + kolla/docker/magnum/magnum-base/Dockerfile.j2 | 3 + kolla/docker/manila/manila-api/Dockerfile.j2 | 3 + kolla/docker/manila/manila-base/Dockerfile.j2 | 3 + kolla/docker/manila/manila-data/Dockerfile.j2 | 3 + kolla/docker/manila/manila-share/Dockerfile.j2 | 6 + kolla/docker/mariadb-server/Dockerfile.j2 | 3 + kolla/docker/masakari/masakari-base/Dockerfile.j2 | 3 + .../masakari/masakari-monitors/Dockerfile.j2 | 3 + kolla/docker/memcached/Dockerfile.j2 | 3 + kolla/docker/mistral/mistral-api/Dockerfile.j2 | 3 + kolla/docker/mistral/mistral-base/Dockerfile.j2 | 3 + kolla/docker/multipathd/Dockerfile.j2 | 3 + kolla/docker/neutron/neutron-base/Dockerfile.j2 | 3 + .../neutron/neutron-bgp-dragent/Dockerfile.j2 | 3 + .../neutron/neutron-dhcp-agent/Dockerfile.j2 | 3 + .../docker/neutron/neutron-l3-agent/Dockerfile.j2 | 3 + .../neutron/neutron-metadata-agent/Dockerfile.j2 | 3 + .../neutron/neutron-mlnx-agent/Dockerfile.j2 | 3 + .../neutron-openvswitch-agent/Dockerfile.j2 | 3 + .../docker/neutron/neutron-ovn-agent/Dockerfile.j2 | 3 + .../neutron/neutron-ovn-vpn-agent/Dockerfile.j2 | 3 + kolla/docker/neutron/neutron-server/Dockerfile.j2 | 3 + .../neutron/neutron-sriov-agent/Dockerfile.j2 | 3 + kolla/docker/nova/nova-api/Dockerfile.j2 | 3 + kolla/docker/nova/nova-base/Dockerfile.j2 | 3 + .../docker/nova/nova-compute-ironic/Dockerfile.j2 | 3 + kolla/docker/nova/nova-compute/Dockerfile.j2 | 5 +- kolla/docker/nova/nova-libvirt-spice/Dockerfile.j2 | 3 + kolla/docker/nova/nova-libvirt/Dockerfile.j2 | 3 + kolla/docker/nova/nova-novncproxy/Dockerfile.j2 | 3 + .../docker/nova/nova-spicehtml5proxy/Dockerfile.j2 | 3 + kolla/docker/nova/nova-ssh/Dockerfile.j2 | 3 + kolla/docker/octavia/octavia-api/Dockerfile.j2 | 3 + kolla/docker/octavia/octavia-base/Dockerfile.j2 | 3 + .../octavia/octavia-driver-agent/Dockerfile.j2 | 3 + .../opensearch/opensearch-dashboards/Dockerfile.j2 | 3 + kolla/docker/opensearch/opensearch/Dockerfile.j2 | 3 + kolla/docker/openstack-base/Dockerfile.j2 | 3 + .../openvswitch/openvswitch-base/Dockerfile.j2 | 3 + kolla/docker/ovn/ovn-base/Dockerfile.j2 | 3 + kolla/docker/ovn/ovn-controller/Dockerfile.j2 | 3 + kolla/docker/ovn/ovn-nb-db-server/Dockerfile.j2 | 3 + kolla/docker/ovn/ovn-northd/Dockerfile.j2 | 3 + kolla/docker/ovn/ovn-sb-db-relay/Dockerfile.j2 | 3 + kolla/docker/ovn/ovn-sb-db-server/Dockerfile.j2 | 3 + kolla/docker/ovsdpdk/ovsdpdk/Dockerfile.j2 | 3 + kolla/docker/placement/placement-api/Dockerfile.j2 | 3 + .../docker/placement/placement-base/Dockerfile.j2 | 3 + .../prometheus-blackbox-exporter/Dockerfile.j2 | 3 + .../prometheus-libvirt-exporter/Dockerfile.j2 | 3 + .../prometheus-valkey-exporter/Dockerfile.j2 | 3 + kolla/docker/proxysql/Dockerfile.j2 | 3 + kolla/docker/rabbitmq/Dockerfile.j2 | 3 + .../docker/skyline/skyline-apiserver/Dockerfile.j2 | 3 + kolla/docker/skyline/skyline-console/Dockerfile.j2 | 3 + kolla/docker/tacker/tacker-base/Dockerfile.j2 | 3 + kolla/docker/tgtd/Dockerfile.j2 | 3 + kolla/docker/trove/trove-base/Dockerfile.j2 | 3 + kolla/docker/valkey/valkey-sentinel/Dockerfile.j2 | 3 + kolla/docker/valkey/valkey-server/Dockerfile.j2 | 3 + kolla/docker/watcher/watcher-base/Dockerfile.j2 | 3 + kolla/image/kolla_worker.py | 1 + kolla/template/methods.py | 189 +++++++++-- kolla/tests/test_methods.py | 373 +++++++++++++++++++++ .../notes/cleanup-repos-85faf33025fd7e5c.yaml | 16 + tests/templates/repos.yaml.j2 | 10 + 124 files changed, 979 insertions(+), 38 deletions(-) create mode 100644 releasenotes/notes/cleanup-repos-85faf33025fd7e5c.yaml diff --git a/doc/source/admin/image-building.rst b/doc/source/admin/image-building.rst index 3a40f5f6e..82ea693ec 100644 --- a/doc/source/admin/image-building.rst +++ b/doc/source/admin/image-building.rst @@ -783,6 +783,52 @@ Kolla validates this at build time and raises an error listing the missing overrides. For Rocky Linux this means overriding ``baseos`` or ``appstream`` requires also overriding ``crb``. +Build-time-only repositories +"""""""""""""""""""""""""""" + +Repositories that point to CI mirrors or other infrastructure-internal URLs +should not be baked into the final image — they may be unreachable at runtime +and would expose internal infrastructure details. Mark such repositories with +``build_only: true`` to have kolla automatically restore or remove the +repository file at the end of each image build. + +When ``build_only: true`` is set on a repository: + +* **Before** writing the mirror configuration, kolla backs up the existing + repository file (if any) to ``/tmp/kolla-repos-backup/``. +* The repository file is written normally so all package installations in that + image can use the mirror. +* **After** all package installations, kolla injects a cleanup step into every + rendered Dockerfile that restores the original file from the backup, or + removes the file entirely if no original existed. + +This means the repository files in the final image contain the upstream URLs +(or are absent, leaving the distro defaults in place) rather than mirror URLs. + +Example — Debian with a CI mirror marked build-time-only: + +.. code-block:: yaml + + debian: + debian: + build_only: true + component: "main" + gpg_key: "/usr/share/keyrings/debian-archive-keyring.gpg" + suite: "trixie trixie-updates trixie-backports" + url: "http://ci-mirror.internal/debian" + debian-security: + build_only: true + component: "main" + gpg_key: "/usr/share/keyrings/debian-archive-keyring.gpg" + suite: "trixie-security" + url: "http://ci-mirror.internal/debian-security" + +.. note:: + + ``build_only: true`` is only effective for non-distro repository entries + (those that write a ``.repo`` or ``.sources`` file). Repositories with + ``distro: True`` are a no-op in ``handle_repos()`` and require no cleanup. + Red Hat ^^^^^^^ diff --git a/kolla/docker/aodh/aodh-base/Dockerfile.j2 b/kolla/docker/aodh/aodh-base/Dockerfile.j2 index 519537468..b2d863bb9 100644 --- a/kolla/docker/aodh/aodh-base/Dockerfile.j2 +++ b/kolla/docker/aodh/aodh-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='aodh') }} {% set aodh_base_packages = [ @@ -36,3 +38,4 @@ RUN ln -s aodh-base-source/* aodh \ {{ macros.kolla_patch_sources() }} {% block aodh_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/barbican/barbican-base/Dockerfile.j2 b/kolla/docker/barbican/barbican-base/Dockerfile.j2 index 89c44ef9a..e5edbb8a9 100644 --- a/kolla/docker/barbican/barbican-base/Dockerfile.j2 +++ b/kolla/docker/barbican/barbican-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='barbican', groups='nfast,hsmusers') }} {{ macros.install_packages(barbican_base_packages | customizable("packages")) }} @@ -34,3 +36,4 @@ RUN ln -s barbican-base-source/* barbican \ {{ macros.kolla_patch_sources() }} {% block barbican_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/base/Dockerfile.j2 b/kolla/docker/base/Dockerfile.j2 index 746f0e731..60419f41d 100644 --- a/kolla/docker/base/Dockerfile.j2 +++ b/kolla/docker/base/Dockerfile.j2 @@ -349,4 +349,5 @@ RUN touch /usr/local/bin/kolla_extend_start \ {{ macros.kolla_patch_sources() }} {% block base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} CMD ["kolla_start"] diff --git a/kolla/docker/bifrost/bifrost-base/Dockerfile.j2 b/kolla/docker/bifrost/bifrost-base/Dockerfile.j2 index 3e82a9fd3..75e2fe822 100644 --- a/kolla/docker/bifrost/bifrost-base/Dockerfile.j2 +++ b/kolla/docker/bifrost/bifrost-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set venv_path='/var/lib/kolla/venv' %} {{ macros.configure_user(name='bifrost') }} @@ -18,7 +20,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% if base_package_type == 'rpm' %} {# NOTE(mgoddard): EPEL required for nginx #} -{{ macros.enable_extra_repos(['epel']) }} +{{ macros.enable_extra_repos(['crb', 'epel']) }} {% endif %} {{ macros.install_packages(bifrost_base_packages | customizable("packages")) }} @@ -74,3 +76,4 @@ RUN chmod 750 /etc/sudoers.d \ {{ macros.kolla_patch_sources() }} {% block bifrost_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/bifrost/bifrost-deploy/Dockerfile.j2 b/kolla/docker/bifrost/bifrost-deploy/Dockerfile.j2 index 04fc733fc..3cb3d82a8 100644 --- a/kolla/docker/bifrost/bifrost-deploy/Dockerfile.j2 +++ b/kolla/docker/bifrost/bifrost-deploy/Dockerfile.j2 @@ -9,6 +9,8 @@ ENV container docker {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + RUN rm -f $(find /lib/systemd/system/sysinit.target.wants/ ! -name systemd-tmpfiles-setup.service -type l); \ rm -f /lib/systemd/system/multi-user.target.wants/*; \ rm -f /etc/systemd/system/*.wants/*; \ @@ -33,3 +35,4 @@ CMD [ "/sbin/init" ] {% block bifrost_deploy_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/blazar/blazar-base/Dockerfile.j2 b/kolla/docker/blazar/blazar-base/Dockerfile.j2 index 433842e41..926ba66a4 100644 --- a/kolla/docker/blazar/blazar-base/Dockerfile.j2 +++ b/kolla/docker/blazar/blazar-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='blazar') }} ADD blazar-base-archive /blazar-base-source @@ -27,3 +29,4 @@ RUN ln -s blazar-base-source/* blazar \ {{ macros.kolla_patch_sources() }} {% block blazar_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ceilometer/ceilometer-base/Dockerfile.j2 b/kolla/docker/ceilometer/ceilometer-base/Dockerfile.j2 index 18bd7600a..4e3a63d02 100644 --- a/kolla/docker/ceilometer/ceilometer-base/Dockerfile.j2 +++ b/kolla/docker/ceilometer/ceilometer-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='ceilometer') }} {% set ceilometer_base_pip_packages = [ @@ -41,3 +43,4 @@ RUN ln -s ceilometer-base-source/* ceilometer \ {{ macros.kolla_patch_sources() }} {% block ceilometer_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ceilometer/ceilometer-compute/Dockerfile.j2 b/kolla/docker/ceilometer/ceilometer-compute/Dockerfile.j2 index 879c4fb01..629aa5283 100644 --- a/kolla/docker/ceilometer/ceilometer-compute/Dockerfile.j2 +++ b/kolla/docker/ceilometer/ceilometer-compute/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set ceilometer_compute_packages = [ 'python3-libvirt' @@ -28,6 +30,7 @@ RUN {{ macros.install_pip(ceilometer_compute_pip_packages | customizable("pip_pa {% block ceilometer_compute_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} # NOTE(huikang): non-root user does not work with libvirt.sock. # Need configuration in nova-libvirt container to allow diff --git a/kolla/docker/ceilometer/ceilometer-ipmi/Dockerfile.j2 b/kolla/docker/ceilometer/ceilometer-ipmi/Dockerfile.j2 index a767dc842..a86c01bac 100644 --- a/kolla/docker/ceilometer/ceilometer-ipmi/Dockerfile.j2 +++ b/kolla/docker/ceilometer/ceilometer-ipmi/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set ceilometer_ipmi_packages = [ 'ipmitool' @@ -23,5 +25,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block ceilometer_ipmi_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER ceilometer diff --git a/kolla/docker/cinder/cinder-api/Dockerfile.j2 b/kolla/docker/cinder/cinder-api/Dockerfile.j2 index b82fba6d3..64a01e404 100644 --- a/kolla/docker/cinder/cinder-api/Dockerfile.j2 +++ b/kolla/docker/cinder/cinder-api/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set cinder_api_packages = [ ] %} @@ -20,3 +22,4 @@ RUN chmod 644 /usr/local/bin/kolla_cinder_extend_start {% block cinder_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/cinder/cinder-backup/Dockerfile.j2 b/kolla/docker/cinder/cinder-backup/Dockerfile.j2 index 15be355dd..4f42ddbb6 100644 --- a/kolla/docker/cinder/cinder-backup/Dockerfile.j2 +++ b/kolla/docker/cinder/cinder-backup/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set cinder_backup_packages = [ 'device-mapper-multipath', @@ -29,5 +31,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block cinder_backup_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER cinder diff --git a/kolla/docker/cinder/cinder-base/Dockerfile.j2 b/kolla/docker/cinder/cinder-base/Dockerfile.j2 index bd25d9b18..1b85d92ef 100644 --- a/kolla/docker/cinder/cinder-base/Dockerfile.j2 +++ b/kolla/docker/cinder/cinder-base/Dockerfile.j2 @@ -7,11 +7,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='cinder') }} {% if base_package_type == 'rpm' %} -{{ macros.enable_extra_repos(['ceph', 'epel']) }} +{{ macros.enable_extra_repos(['ceph', 'crb', 'epel']) }} {% set cinder_base_packages = [ 'ceph-common', @@ -58,3 +60,4 @@ RUN ln -s cinder-base-source/* cinder \ {{ macros.kolla_patch_sources() }} {% block cinder_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/cinder/cinder-volume/Dockerfile.j2 b/kolla/docker/cinder/cinder-volume/Dockerfile.j2 index 0e4f38a6e..772350e4e 100644 --- a/kolla/docker/cinder/cinder-volume/Dockerfile.j2 +++ b/kolla/docker/cinder/cinder-volume/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set cinder_volume_packages = [ 'lsscsi', @@ -54,5 +56,6 @@ RUN chmod 750 /etc/sudoers.d \ {% block cinder_volume_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER cinder diff --git a/kolla/docker/cloudkitty/cloudkitty-api/Dockerfile.j2 b/kolla/docker/cloudkitty/cloudkitty-api/Dockerfile.j2 index fd3d124f3..65dbbe1f6 100644 --- a/kolla/docker/cloudkitty/cloudkitty-api/Dockerfile.j2 +++ b/kolla/docker/cloudkitty/cloudkitty-api/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set cloudkitty_api_packages = [ ] %} @@ -19,3 +21,4 @@ RUN chmod 644 /usr/local/bin/kolla_cloudkitty_extend_start {% block cloudkitty_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/cloudkitty/cloudkitty-base/Dockerfile.j2 b/kolla/docker/cloudkitty/cloudkitty-base/Dockerfile.j2 index b545d4adf..11e517673 100644 --- a/kolla/docker/cloudkitty/cloudkitty-base/Dockerfile.j2 +++ b/kolla/docker/cloudkitty/cloudkitty-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='cloudkitty') }} {% set cloudkitty_base_pip_packages = [ @@ -27,3 +29,4 @@ RUN ln -s cloudkitty-base-source/* cloudkitty \ {{ macros.kolla_patch_sources() }} {% block cloudkitty_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/cloudkitty/cloudkitty-processor/Dockerfile.j2 b/kolla/docker/cloudkitty/cloudkitty-processor/Dockerfile.j2 index 33f30fd33..e71b52ebb 100644 --- a/kolla/docker/cloudkitty/cloudkitty-processor/Dockerfile.j2 +++ b/kolla/docker/cloudkitty/cloudkitty-processor/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set cloudkitty_processor_packages = [ ] %} @@ -16,5 +18,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block cloudkitty_processor_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER cloudkitty diff --git a/kolla/docker/collectd/Dockerfile.j2 b/kolla/docker/collectd/Dockerfile.j2 index 32ded377e..4ea5a4c40 100644 --- a/kolla/docker/collectd/Dockerfile.j2 +++ b/kolla/docker/collectd/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='collectd') }} {% set collectd_packages = [ @@ -77,5 +79,6 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start \ {% block collectd_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER collectd diff --git a/kolla/docker/cron/Dockerfile.j2 b/kolla/docker/cron/Dockerfile.j2 index d3a9213ac..8a0aef268 100644 --- a/kolla/docker/cron/Dockerfile.j2 +++ b/kolla/docker/cron/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set cron_packages = [ 'cronie', @@ -33,3 +35,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start {% block cron_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/cyborg/cyborg-agent/Dockerfile.j2 b/kolla/docker/cyborg/cyborg-agent/Dockerfile.j2 index dfc1adc0b..e8b5d9c3c 100644 --- a/kolla/docker/cyborg/cyborg-agent/Dockerfile.j2 +++ b/kolla/docker/cyborg/cyborg-agent/Dockerfile.j2 @@ -6,6 +6,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block cyborg_agent_header %}{% endblock %} {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set cyborg_agent_packages = [ 'pciutils', ] %} @@ -20,3 +22,4 @@ RUN {{ macros.install_pip(cyborg_agent_pip_packages | customizable("pip_packages {% block cyborg_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/cyborg/cyborg-api/Dockerfile.j2 b/kolla/docker/cyborg/cyborg-api/Dockerfile.j2 index d67cdeb28..ba4e6f209 100644 --- a/kolla/docker/cyborg/cyborg-api/Dockerfile.j2 +++ b/kolla/docker/cyborg/cyborg-api/Dockerfile.j2 @@ -6,6 +6,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block cyborg_api_header %}{% endblock %} {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set cyborg_api_packages = [ ] %} {{ macros.install_packages(cyborg_api_packages | customizable("packages")) }} @@ -17,3 +19,4 @@ RUN chmod 644 /usr/local/bin/kolla_cyborg_extend_start {% block cyborg_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/cyborg/cyborg-base/Dockerfile.j2 b/kolla/docker/cyborg/cyborg-base/Dockerfile.j2 index c3f3e602a..95a0eab8c 100644 --- a/kolla/docker/cyborg/cyborg-base/Dockerfile.j2 +++ b/kolla/docker/cyborg/cyborg-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='cyborg') }} ADD cyborg-base-archive /cyborg-base-source @@ -29,3 +31,4 @@ RUN ln -s cyborg-base-source/* cyborg \ {{ macros.kolla_patch_sources() }} {% block cyborg_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/designate/designate-backend-bind9/Dockerfile.j2 b/kolla/docker/designate/designate-backend-bind9/Dockerfile.j2 index cf1277aeb..7fc0e69b5 100644 --- a/kolla/docker/designate/designate-backend-bind9/Dockerfile.j2 +++ b/kolla/docker/designate/designate-backend-bind9/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set designate_backend_bind9_packages = ['bind'] %} @@ -29,3 +31,4 @@ RUN mkdir -p /var/lib/kolla/ /var/lib/{{ designate_backend_bind_name }}/ /run/{{ {% block designate_backend_bind9_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/designate/designate-base/Dockerfile.j2 b/kolla/docker/designate/designate-base/Dockerfile.j2 index 26a0beca1..46836d931 100644 --- a/kolla/docker/designate/designate-base/Dockerfile.j2 +++ b/kolla/docker/designate/designate-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='designate') }} {% set designate_base_pip_packages = [ @@ -31,3 +33,4 @@ RUN ln -s designate-base-source/* designate \ {{ macros.kolla_patch_sources() }} {% block designate_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/designate/designate-worker/Dockerfile.j2 b/kolla/docker/designate/designate-worker/Dockerfile.j2 index b4e190df6..1cfff0c54 100644 --- a/kolla/docker/designate/designate-worker/Dockerfile.j2 +++ b/kolla/docker/designate/designate-worker/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + # The bind9 package here is only to provide the rndc binary. {% if base_package_type == 'rpm' %} {% set designate_worker_packages = [ @@ -23,5 +25,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block designate_worker_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER designate diff --git a/kolla/docker/dnsmasq/Dockerfile.j2 b/kolla/docker/dnsmasq/Dockerfile.j2 index 882613be7..a91b2fca8 100644 --- a/kolla/docker/dnsmasq/Dockerfile.j2 +++ b/kolla/docker/dnsmasq/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set dnsmasq_packages = ['dnsmasq'] %} {{ macros.install_packages(dnsmasq_packages| customizable("packages")) }} @@ -17,3 +19,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start {% block dnsmasq_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/fluentd/Dockerfile.j2 b/kolla/docker/fluentd/Dockerfile.j2 index c63e1b990..68dd71976 100644 --- a/kolla/docker/fluentd/Dockerfile.j2 +++ b/kolla/docker/fluentd/Dockerfile.j2 @@ -10,6 +10,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" fluentd_binary="flue {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.enable_extra_repos(['fluentd']) }} {% if base_package_type == 'rpm' %} @@ -58,5 +60,6 @@ COPY extend_start.sh /usr/local/bin/kolla_extend_start {% block fluentd_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER {{ fluentd_user }} diff --git a/kolla/docker/glance/glance-api/Dockerfile.j2 b/kolla/docker/glance/glance-api/Dockerfile.j2 index e3efbfef3..ca1820631 100644 --- a/kolla/docker/glance/glance-api/Dockerfile.j2 +++ b/kolla/docker/glance/glance-api/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set glance_api_packages = [ 'lsscsi', @@ -34,5 +36,6 @@ RUN chmod 644 /usr/local/bin/kolla_glance_extend_start {% block glance_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER glance diff --git a/kolla/docker/glance/glance-base/Dockerfile.j2 b/kolla/docker/glance/glance-base/Dockerfile.j2 index 885cc4353..59402e663 100644 --- a/kolla/docker/glance/glance-base/Dockerfile.j2 +++ b/kolla/docker/glance/glance-base/Dockerfile.j2 @@ -7,11 +7,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='glance') }} {% if base_package_type == 'rpm' %} -{{ macros.enable_extra_repos(['ceph', 'epel']) }} +{{ macros.enable_extra_repos(['ceph', 'crb', 'epel']) }} {% set glance_base_packages = [ 'python3-rados', @@ -52,3 +54,4 @@ RUN ln -s glance-base-source/* glance \ {{ macros.kolla_patch_sources() }} {% block glance_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/gnocchi/gnocchi-base/Dockerfile.j2 b/kolla/docker/gnocchi/gnocchi-base/Dockerfile.j2 index 91199ac39..abbeb5636 100644 --- a/kolla/docker/gnocchi/gnocchi-base/Dockerfile.j2 +++ b/kolla/docker/gnocchi/gnocchi-base/Dockerfile.j2 @@ -7,11 +7,13 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='gnocchi') }} {% if base_package_type == 'rpm' %} -{{ macros.enable_extra_repos(['ceph', 'epel']) }} +{{ macros.enable_extra_repos(['ceph', 'crb', 'epel']) }} {% set gnocchi_base_packages = [ 'librados2-devel', @@ -54,3 +56,4 @@ RUN ln -s gnocchi-base-source/* gnocchi \ {{ macros.kolla_patch_sources() }} {% block gnocchi_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/grafana/Dockerfile.j2 b/kolla/docker/grafana/Dockerfile.j2 index e401d91b6..971994baf 100644 --- a/kolla/docker/grafana/Dockerfile.j2 +++ b/kolla/docker/grafana/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.enable_extra_repos(['grafana']) }} {% set grafana_packages = ['grafana'] %} @@ -38,5 +40,6 @@ RUN chmod 750 /etc/sudoers.d \ {% block grafana_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER grafana diff --git a/kolla/docker/hacluster/hacluster-base/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-base/Dockerfile.j2 index 045f21e1e..52d255b88 100644 --- a/kolla/docker/hacluster/hacluster-base/Dockerfile.j2 +++ b/kolla/docker/hacluster/hacluster-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type =='rpm' %} {{ macros.enable_extra_repos(['hacluster']) }} @@ -20,3 +22,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start {{ macros.kolla_patch_sources() }} {% block hacluster_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/hacluster/hacluster-corosync/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-corosync/Dockerfile.j2 index 74d47c380..e8ed1f147 100644 --- a/kolla/docker/hacluster/hacluster-corosync/Dockerfile.j2 +++ b/kolla/docker/hacluster/hacluster-corosync/Dockerfile.j2 @@ -7,9 +7,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set hacluster_corosync_packages = ['corosync'] %} {{ macros.install_packages(hacluster_corosync_packages | customizable("packages")) }} {{ macros.kolla_patch_sources() }} {% block hacluster_corosync_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/hacluster/hacluster-pacemaker-remote/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-pacemaker-remote/Dockerfile.j2 index 64c381e1f..a6bf2a7d4 100644 --- a/kolla/docker/hacluster/hacluster-pacemaker-remote/Dockerfile.j2 +++ b/kolla/docker/hacluster/hacluster-pacemaker-remote/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set hacluster_pacemaker_remote_packages = ['pacemaker-remote'] %} {% if base_package_type == 'deb' %} {% set hacluster_pacemaker_remote_packages = hacluster_pacemaker_remote_packages + [ @@ -19,3 +21,4 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {{ macros.kolla_patch_sources() }} {% block hacluster_pacemaker_remote_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/hacluster/hacluster-pacemaker/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-pacemaker/Dockerfile.j2 index 33eeb3144..e3c38fbb8 100644 --- a/kolla/docker/hacluster/hacluster-pacemaker/Dockerfile.j2 +++ b/kolla/docker/hacluster/hacluster-pacemaker/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set hacluster_pacemaker_packages = ['pacemaker'] %} {% if base_package_type == 'deb' %} {% set hacluster_pacemaker_packages = hacluster_pacemaker_packages + [ @@ -19,3 +21,4 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {{ macros.kolla_patch_sources() }} {% block hacluster_pacemaker_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/hacluster/hacluster-pcs/Dockerfile.j2 b/kolla/docker/hacluster/hacluster-pcs/Dockerfile.j2 index a146d0d4b..c744ad68c 100644 --- a/kolla/docker/hacluster/hacluster-pcs/Dockerfile.j2 +++ b/kolla/docker/hacluster/hacluster-pcs/Dockerfile.j2 @@ -7,9 +7,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set hacluster_pcs_packages = ['pcs','crmsh'] %} {{ macros.install_packages(hacluster_pcs_packages | customizable("packages")) }} {{ macros.kolla_patch_sources() }} {% block hacluster_pcs_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/haproxy/haproxy-ssh/Dockerfile.j2 b/kolla/docker/haproxy/haproxy-ssh/Dockerfile.j2 index a674cc75e..dda1c9d6f 100644 --- a/kolla/docker/haproxy/haproxy-ssh/Dockerfile.j2 +++ b/kolla/docker/haproxy/haproxy-ssh/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='haproxy', shell='/bin/bash') }} {% if base_package_type == 'rpm' %} @@ -40,3 +42,4 @@ COPY update-loadbalancer-cert.sh /usr/bin/update-loadbalancer-cert {% block haproxy_ssh_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/haproxy/haproxy/Dockerfile.j2 b/kolla/docker/haproxy/haproxy/Dockerfile.j2 index 36c7ca943..aed0615fe 100644 --- a/kolla/docker/haproxy/haproxy/Dockerfile.j2 +++ b/kolla/docker/haproxy/haproxy/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='haproxy') }} {% set haproxy_packages = [ @@ -24,3 +26,4 @@ RUN mkdir -p /var/lib/kolla/haproxy \ {% block haproxy_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/heat/heat-base/Dockerfile.j2 b/kolla/docker/heat/heat-base/Dockerfile.j2 index a06ea6f0d..65afe31fb 100644 --- a/kolla/docker/heat/heat-base/Dockerfile.j2 +++ b/kolla/docker/heat/heat-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='heat') }} {% if base_package_type == 'rpm' %} @@ -39,3 +41,4 @@ RUN ln -s heat-base-source/* heat \ {{ macros.kolla_patch_sources() }} {% block heat_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/horizon/Dockerfile.j2 b/kolla/docker/horizon/Dockerfile.j2 index 73dc65dd1..6e0e8e84e 100644 --- a/kolla/docker/horizon/Dockerfile.j2 +++ b/kolla/docker/horizon/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='horizon') }} {% if base_package_type == 'rpm' %} @@ -72,3 +74,4 @@ RUN ln -s horizon-source/* horizon \ {% block horizon_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/httpd/Dockerfile.j2 b/kolla/docker/httpd/Dockerfile.j2 index ec5637283..3c86c57b7 100644 --- a/kolla/docker/httpd/Dockerfile.j2 +++ b/kolla/docker/httpd/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {{ macros.enable_extra_repos(['epel']) }} {% set apache_packages = [ @@ -37,6 +39,8 @@ RUN echo > /etc/apache2/ports.conf COPY extend_start.sh /usr/local/bin/kolla_extend_start COPY httpd_setup.sh /usr/local/bin/kolla_httpd_setup RUN chmod 644 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_httpd_setup +{{ macros.kolla_patch_sources() }} USER root {% block apache_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ironic/ironic-api/Dockerfile.j2 b/kolla/docker/ironic/ironic-api/Dockerfile.j2 index 1c10d0372..f5337f04a 100644 --- a/kolla/docker/ironic/ironic-api/Dockerfile.j2 +++ b/kolla/docker/ironic/ironic-api/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set ironic_api_packages = [ ] %} {{ macros.install_packages(ironic_api_packages | customizable("packages")) }} @@ -18,3 +20,4 @@ RUN chmod 644 /usr/local/bin/kolla_ironic_extend_start {% block ironic_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ironic/ironic-base/Dockerfile.j2 b/kolla/docker/ironic/ironic-base/Dockerfile.j2 index 39265cf80..7696d2911 100644 --- a/kolla/docker/ironic/ironic-base/Dockerfile.j2 +++ b/kolla/docker/ironic/ironic-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='ironic', shell='/bin/bash') }} ADD ironic-base-archive /ironic-base-source @@ -30,3 +32,4 @@ RUN ln -s ironic-base-source/* ironic \ {{ macros.kolla_patch_sources() }} {% block ironic_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ironic/ironic-conductor/Dockerfile.j2 b/kolla/docker/ironic/ironic-conductor/Dockerfile.j2 index 15a07e4b9..40525b620 100644 --- a/kolla/docker/ironic/ironic-conductor/Dockerfile.j2 +++ b/kolla/docker/ironic/ironic-conductor/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set ironic_conductor_packages = [ 'dosfstools', @@ -71,5 +73,6 @@ RUN {{ macros.install_pip(ironic_conductor_pip_packages | customizable("pip_pack {% block ironic_conductor_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER ironic diff --git a/kolla/docker/ironic/ironic-pxe-filter/Dockerfile.j2 b/kolla/docker/ironic/ironic-pxe-filter/Dockerfile.j2 index 5b593e9f0..717c7849c 100644 --- a/kolla/docker/ironic/ironic-pxe-filter/Dockerfile.j2 +++ b/kolla/docker/ironic/ironic-pxe-filter/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set ironic_pxe_filter_packages = [] %} {% set ironic_pxe_filter_pip_packages = [] %} @@ -22,3 +24,4 @@ RUN chmod 644 /usr/local/bin/kolla_ironic_extend_start {% block ironic_pxe_filter_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ironic/ironic-pxe/Dockerfile.j2 b/kolla/docker/ironic/ironic-pxe/Dockerfile.j2 index 0475a5b05..f198e3292 100644 --- a/kolla/docker/ironic/ironic-pxe/Dockerfile.j2 +++ b/kolla/docker/ironic/ironic-pxe/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set ironic_pxe_packages = [ 'dosfstools', @@ -53,3 +55,4 @@ RUN chmod 644 /usr/local/bin/kolla_ironic_extend_start {% block ironic_pxe_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/iscsid/Dockerfile.j2 b/kolla/docker/iscsid/Dockerfile.j2 index a1e4bba61..49c8fb9fe 100644 --- a/kolla/docker/iscsid/Dockerfile.j2 +++ b/kolla/docker/iscsid/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set iscsid_packages = [ 'iscsi-initiator-utils', @@ -34,3 +36,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start \ {% block iscsid_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/keepalived/Dockerfile.j2 b/kolla/docker/keepalived/Dockerfile.j2 index 2dcdeccd7..93b8218c8 100644 --- a/kolla/docker/keepalived/Dockerfile.j2 +++ b/kolla/docker/keepalived/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.enable_extra_repos(['mariadb']) }} {% if base_package_type == 'rpm' %} @@ -32,3 +34,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start \ {% block keepalived_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/kerbside/kerbside-api/Dockerfile.j2 b/kolla/docker/kerbside/kerbside-api/Dockerfile.j2 index 6ea99eb7a..28557fe52 100644 --- a/kolla/docker/kerbside/kerbside-api/Dockerfile.j2 +++ b/kolla/docker/kerbside/kerbside-api/Dockerfile.j2 @@ -3,7 +3,9 @@ FROM {{ namespace }}/{{ image_prefix }}kerbside-base:{{ tag }} LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% endblock %} +{% import "macros.j2" as macros with context %} + COPY extend_start.sh /usr/local/bin/kolla_extend_start RUN chmod 644 /usr/local/bin/kolla_extend_start - +{{ macros.kolla_patch_sources() }} USER kerbside diff --git a/kolla/docker/kerbside/kerbside-base/Dockerfile.j2 b/kolla/docker/kerbside/kerbside-base/Dockerfile.j2 index 77f881399..bc181258f 100644 --- a/kolla/docker/kerbside/kerbside-base/Dockerfile.j2 +++ b/kolla/docker/kerbside/kerbside-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='kerbside', groups='kerbside') }} {% if base_package_type == 'rpm' %} @@ -35,4 +37,6 @@ RUN ln -s kerbside-source/* kerbside \ && {{ macros.install_pip(kerbside_pip_packages | customizable("pip_packages"), false) }} \ && rm -f /etc/machine-id +{{ macros.kolla_patch_sources() }} {% block kerbside_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/kerbside/kerbside-proxy/Dockerfile.j2 b/kolla/docker/kerbside/kerbside-proxy/Dockerfile.j2 index 6ea99eb7a..28557fe52 100644 --- a/kolla/docker/kerbside/kerbside-proxy/Dockerfile.j2 +++ b/kolla/docker/kerbside/kerbside-proxy/Dockerfile.j2 @@ -3,7 +3,9 @@ FROM {{ namespace }}/{{ image_prefix }}kerbside-base:{{ tag }} LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% endblock %} +{% import "macros.j2" as macros with context %} + COPY extend_start.sh /usr/local/bin/kolla_extend_start RUN chmod 644 /usr/local/bin/kolla_extend_start - +{{ macros.kolla_patch_sources() }} USER kerbside diff --git a/kolla/docker/keystone/keystone-base/Dockerfile.j2 b/kolla/docker/keystone/keystone-base/Dockerfile.j2 index faa424fa7..82c90e6f6 100644 --- a/kolla/docker/keystone/keystone-base/Dockerfile.j2 +++ b/kolla/docker/keystone/keystone-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='keystone') }} {% if base_package_type == 'rpm' %} @@ -43,3 +45,4 @@ RUN ln -s keystone-base-source/* keystone \ {{ macros.kolla_patch_sources() }} {% block keystone_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/keystone/keystone-fernet/Dockerfile.j2 b/kolla/docker/keystone/keystone-fernet/Dockerfile.j2 index da32ddb86..92ee4738b 100644 --- a/kolla/docker/keystone/keystone-fernet/Dockerfile.j2 +++ b/kolla/docker/keystone/keystone-fernet/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set keystone_fernet_packages = [ 'cronie', @@ -32,3 +34,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start \ {% block keystone_fernet_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/keystone/keystone-ssh/Dockerfile.j2 b/kolla/docker/keystone/keystone-ssh/Dockerfile.j2 index af290bd5f..a7b2a6e10 100644 --- a/kolla/docker/keystone/keystone-ssh/Dockerfile.j2 +++ b/kolla/docker/keystone/keystone-ssh/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='keystone', shell='/bin/bash') }} {% if base_package_type == 'rpm' %} @@ -36,3 +38,4 @@ RUN sed -ri 's/session(\s+)required(\s+)pam_loginuid.so/session\1optional\2pam_l {% block keystone_ssh_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/keystone/keystone/Dockerfile.j2 b/kolla/docker/keystone/keystone/Dockerfile.j2 index 742626c05..df2003f10 100644 --- a/kolla/docker/keystone/keystone/Dockerfile.j2 +++ b/kolla/docker/keystone/keystone/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set keystone_packages = [ 'krb5-devel', @@ -43,3 +45,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start \ {% block keystone_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/kolla-toolbox/Dockerfile.j2 b/kolla/docker/kolla-toolbox/Dockerfile.j2 index cad44524c..2e4750e2a 100644 --- a/kolla/docker/kolla-toolbox/Dockerfile.j2 +++ b/kolla/docker/kolla-toolbox/Dockerfile.j2 @@ -10,6 +10,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='ansible') }} {{ macros.configure_user(name='rabbitmq') }} @@ -125,5 +127,6 @@ RUN chmod 644 /etc/ansible/ansible.cfg \ {% block kolla_toolbox_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER ansible diff --git a/kolla/docker/letsencrypt/letsencrypt-lego/Dockerfile.j2 b/kolla/docker/letsencrypt/letsencrypt-lego/Dockerfile.j2 index b7cda214e..a52199d0b 100755 --- a/kolla/docker/letsencrypt/letsencrypt-lego/Dockerfile.j2 +++ b/kolla/docker/letsencrypt/letsencrypt-lego/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='letsencrypt', shell='/bin/bash') }} {% if base_package_type == 'rpm' %} @@ -39,3 +41,4 @@ RUN chmod +x /usr/bin/letsencrypt-certificates /usr/bin/sync-and-update-certific {% block letsencrypt_lego_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/macros.j2 b/kolla/docker/macros.j2 index 34d67335c..6d43b4ccf 100644 --- a/kolla/docker/macros.j2 +++ b/kolla/docker/macros.j2 @@ -95,3 +95,19 @@ sed -e "s/^{{package_name}}==={{ from }}/{{package_name}}=={{ to }}/g" -i requir RUN kolla_patch {% endif %} {%- endmacro %} + +{% macro kolla_cleanup_repos() -%} +{{ cleanup_repos() }} +{%- endmacro %} + +{% macro kolla_enable_base_repos() %} +{% if base_package_type == 'rpm' %} +{{ handle_repos(['baseos', 'appstream'], 'enable') }} +{% elif base_package_type == 'deb' %} +{% if base_distro == 'debian' %} +{{ handle_repos(['debian', 'debian-security'], 'enable') }} +{% elif base_distro == 'ubuntu' %} +{{ handle_repos(['ubuntu', 'ubuntu-security', 'ubuntu-cloud-archive'], 'enable') }} +{% endif %} +{% endif %} +{% endmacro %} diff --git a/kolla/docker/magnum/magnum-base/Dockerfile.j2 b/kolla/docker/magnum/magnum-base/Dockerfile.j2 index ac17b94b4..ef070f88f 100644 --- a/kolla/docker/magnum/magnum-base/Dockerfile.j2 +++ b/kolla/docker/magnum/magnum-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='magnum') }} ADD magnum-base-archive /magnum-base-source @@ -29,3 +31,4 @@ RUN ln -s magnum-base-source/* magnum \ {{ macros.kolla_patch_sources() }} {% block magnum_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/manila/manila-api/Dockerfile.j2 b/kolla/docker/manila/manila-api/Dockerfile.j2 index d7b75d388..ea5f46195 100644 --- a/kolla/docker/manila/manila-api/Dockerfile.j2 +++ b/kolla/docker/manila/manila-api/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set manila_api_packages = [ ] %} {{ macros.install_packages(manila_api_packages | customizable("packages")) }} @@ -19,5 +21,6 @@ RUN chmod 644 /usr/local/bin/kolla_manila_extend_start {% block manila_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER manila diff --git a/kolla/docker/manila/manila-base/Dockerfile.j2 b/kolla/docker/manila/manila-base/Dockerfile.j2 index a236a20df..fff2d5bd3 100644 --- a/kolla/docker/manila/manila-base/Dockerfile.j2 +++ b/kolla/docker/manila/manila-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='manila') }} {% if base_package_type == 'rpm' %} @@ -46,3 +48,4 @@ RUN ln -s manila-base-source/* manila \ {{ macros.kolla_patch_sources() }} {% block manila_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/manila/manila-data/Dockerfile.j2 b/kolla/docker/manila/manila-data/Dockerfile.j2 index 06e1d9dc9..f0454c122 100644 --- a/kolla/docker/manila/manila-data/Dockerfile.j2 +++ b/kolla/docker/manila/manila-data/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set manila_data_packages = [ @@ -27,5 +29,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block manila_data_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER manila diff --git a/kolla/docker/manila/manila-share/Dockerfile.j2 b/kolla/docker/manila/manila-share/Dockerfile.j2 index 161b6865a..f5bc29bb7 100644 --- a/kolla/docker/manila/manila-share/Dockerfile.j2 +++ b/kolla/docker/manila/manila-share/Dockerfile.j2 @@ -7,7 +7,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} + +{{ macros.enable_extra_repos(['crb']) }} + {% set manila_share_packages = [ 'ceph-common', 'sqlite', @@ -30,5 +35,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block manila_share_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER manila diff --git a/kolla/docker/mariadb-server/Dockerfile.j2 b/kolla/docker/mariadb-server/Dockerfile.j2 index 612b37330..a9a84bf73 100644 --- a/kolla/docker/mariadb-server/Dockerfile.j2 +++ b/kolla/docker/mariadb-server/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='mysql') }} {% if base_package_type == 'rpm' %} @@ -92,5 +94,6 @@ CMD ["kolla_start"] {% block mariadb_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER mysql diff --git a/kolla/docker/masakari/masakari-base/Dockerfile.j2 b/kolla/docker/masakari/masakari-base/Dockerfile.j2 index 97e31247e..92ac9bad9 100644 --- a/kolla/docker/masakari/masakari-base/Dockerfile.j2 +++ b/kolla/docker/masakari/masakari-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='masakari') }} {% if base_package_type == 'rpm' %} @@ -41,3 +43,4 @@ RUN ln -s masakari-base-source/* masakari \ {{ macros.kolla_patch_sources() }} {% block masakari_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/masakari/masakari-monitors/Dockerfile.j2 b/kolla/docker/masakari/masakari-monitors/Dockerfile.j2 index 92b8c3947..701521b4b 100644 --- a/kolla/docker/masakari/masakari-monitors/Dockerfile.j2 +++ b/kolla/docker/masakari/masakari-monitors/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {{ macros.enable_extra_repos(['hacluster']) }} @@ -51,5 +53,6 @@ RUN ln -s masakari-monitors-source/* masakari-monitors \ {% block masakari_monitors_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER masakari diff --git a/kolla/docker/memcached/Dockerfile.j2 b/kolla/docker/memcached/Dockerfile.j2 index dfe90b18e..8cf2e09d7 100644 --- a/kolla/docker/memcached/Dockerfile.j2 +++ b/kolla/docker/memcached/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='memcached', homedir='/run/memcache') }} {% set memcached_packages = ['memcached'] %} @@ -16,5 +18,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block memcached_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER memcached diff --git a/kolla/docker/mistral/mistral-api/Dockerfile.j2 b/kolla/docker/mistral/mistral-api/Dockerfile.j2 index be3e431e1..0ad4fb767 100644 --- a/kolla/docker/mistral/mistral-api/Dockerfile.j2 +++ b/kolla/docker/mistral/mistral-api/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set mistral_api_packages = [ ] %} {{ macros.install_packages(mistral_api_packages | customizable("packages")) }} @@ -18,3 +20,4 @@ RUN chmod 644 /usr/local/bin/kolla_mistral_extend_start {% block mistral_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/mistral/mistral-base/Dockerfile.j2 b/kolla/docker/mistral/mistral-base/Dockerfile.j2 index 1d72c1cac..d459fda1f 100644 --- a/kolla/docker/mistral/mistral-base/Dockerfile.j2 +++ b/kolla/docker/mistral/mistral-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='mistral') }} ADD mistral-base-archive /mistral-base-source @@ -36,3 +38,4 @@ RUN ln -s mistral-base-source/* mistral \ {{ macros.kolla_patch_sources() }} {% block mistral_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/multipathd/Dockerfile.j2 b/kolla/docker/multipathd/Dockerfile.j2 index 1341c62a7..19ef76fa5 100644 --- a/kolla/docker/multipathd/Dockerfile.j2 +++ b/kolla/docker/multipathd/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set multipathd_packages = ['device-mapper-multipath'] %} {% elif base_package_type == 'deb' %} @@ -19,3 +21,4 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block multipathd_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/neutron/neutron-base/Dockerfile.j2 b/kolla/docker/neutron/neutron-base/Dockerfile.j2 index 1550a0f76..1c454e0ce 100644 --- a/kolla/docker/neutron/neutron-base/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.enable_extra_repos(['docker-ce']) }} {{ macros.configure_user(name='neutron') }} @@ -101,3 +103,4 @@ RUN ln -s neutron-base-source/* neutron \ {{ macros.kolla_patch_sources() }} {% block neutron_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/neutron/neutron-bgp-dragent/Dockerfile.j2 b/kolla/docker/neutron/neutron-bgp-dragent/Dockerfile.j2 index 3ad2ab596..66ee77f63 100644 --- a/kolla/docker/neutron/neutron-bgp-dragent/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-bgp-dragent/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + ADD neutron-bgp-dragent-archive /neutron-bgp-dragent-source {% set neutron_bgp_dragent_pip_packages = [ @@ -20,5 +22,6 @@ RUN ln -s neutron-bgp-dragent-source/* neutron_dynamic_routing \ {% block neutron_bgp_dragent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/neutron/neutron-dhcp-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-dhcp-agent/Dockerfile.j2 index 035433bf2..750526097 100644 --- a/kolla/docker/neutron/neutron-dhcp-agent/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-dhcp-agent/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set neutron_dhcp_agent_packages = [ ] %} @@ -18,5 +20,6 @@ COPY extend_start.sh /usr/local/bin/kolla_extend_start {% block neutron_dhcp_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/neutron/neutron-l3-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-l3-agent/Dockerfile.j2 index ae0457c18..52b63462a 100644 --- a/kolla/docker/neutron/neutron-l3-agent/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-l3-agent/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set neutron_l3_agent_packages = [ 'libreswan', @@ -28,5 +30,6 @@ COPY extend_start.sh /usr/local/bin/kolla_extend_start {% block neutron_l3_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/neutron/neutron-metadata-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-metadata-agent/Dockerfile.j2 index 3736f70c8..b6be8d739 100644 --- a/kolla/docker/neutron/neutron-metadata-agent/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-metadata-agent/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set neutron_metadata_agent_packages = [ ] %} @@ -18,5 +20,6 @@ COPY extend_start.sh /usr/local/bin/kolla_extend_start {% block neutron_metadata_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/neutron/neutron-mlnx-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-mlnx-agent/Dockerfile.j2 index 4ee89c19a..7eb6305fe 100644 --- a/kolla/docker/neutron/neutron-mlnx-agent/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-mlnx-agent/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set neutron_mlnx_agent_packages = [ 'python3-libvirt', ] %} @@ -23,5 +25,6 @@ RUN {{ macros.install_pip(neutron_mlnx_agent_pip_packages | customizable("pip_pa {% block neutron_mlnx_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/neutron/neutron-openvswitch-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-openvswitch-agent/Dockerfile.j2 index b9499e6f7..d0a963259 100644 --- a/kolla/docker/neutron/neutron-openvswitch-agent/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-openvswitch-agent/Dockerfile.j2 @@ -7,11 +7,14 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.install_packages(neutron_openvswitch_agent_packages | customizable("packages")) }} {{ macros.kolla_patch_sources() }} {% block neutron_openvswitch_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2 index fe4e352ac..915bef108 100644 --- a/kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-ovn-agent/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set neutron_ovn_agent_packages = [ ] %} @@ -16,5 +18,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block neutron_ovn_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/neutron/neutron-ovn-vpn-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-ovn-vpn-agent/Dockerfile.j2 index 4fbaaa78f..ff1f6b48f 100644 --- a/kolla/docker/neutron/neutron-ovn-vpn-agent/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-ovn-vpn-agent/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + # Note: VPN is currently not working on RHEL 10 due to a known issue: # https://bugs.launchpad.net/neutron/+bug/2146308 {% if base_package_type == 'rpm' %} @@ -27,5 +29,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block neutron_ovn_vpn_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/neutron/neutron-server/Dockerfile.j2 b/kolla/docker/neutron/neutron-server/Dockerfile.j2 index bda0d3dcf..0ee7ceabf 100644 --- a/kolla/docker/neutron/neutron-server/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-server/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set neutron_server_pip_packages = [ 'networking-hyperv' ] %} @@ -29,5 +31,6 @@ RUN {{ macros.install_pip(neutron_server_pip_packages | customizable("pip_packag {% block neutron_server_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/neutron/neutron-sriov-agent/Dockerfile.j2 b/kolla/docker/neutron/neutron-sriov-agent/Dockerfile.j2 index c5d74fbb2..c4a1f1d4b 100644 --- a/kolla/docker/neutron/neutron-sriov-agent/Dockerfile.j2 +++ b/kolla/docker/neutron/neutron-sriov-agent/Dockerfile.j2 @@ -7,11 +7,14 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.install_packages(neutron_sriov_agent_packages | customizable("packages")) }} {{ macros.kolla_patch_sources() }} {% block neutron_sriov_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER neutron diff --git a/kolla/docker/nova/nova-api/Dockerfile.j2 b/kolla/docker/nova/nova-api/Dockerfile.j2 index 57846af79..08353a708 100644 --- a/kolla/docker/nova/nova-api/Dockerfile.j2 +++ b/kolla/docker/nova/nova-api/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set nova_api_packages = [ ] %} {{ macros.install_packages(nova_api_packages | customizable("packages")) }} @@ -18,3 +20,4 @@ RUN chmod 644 /usr/local/bin/kolla_nova_extend_start {% block nova_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/nova/nova-base/Dockerfile.j2 b/kolla/docker/nova/nova-base/Dockerfile.j2 index 423a9760a..da5340f2a 100644 --- a/kolla/docker/nova/nova-base/Dockerfile.j2 +++ b/kolla/docker/nova/nova-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='nova', groups='qemu') }} {% if base_package_type == 'rpm' %} @@ -84,3 +86,4 @@ RUN ln -s nova-base-source/* nova \ {{ macros.kolla_patch_sources() }} {% block nova_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/nova/nova-compute-ironic/Dockerfile.j2 b/kolla/docker/nova/nova-compute-ironic/Dockerfile.j2 index 3c455e2ec..69227056c 100644 --- a/kolla/docker/nova/nova-compute-ironic/Dockerfile.j2 +++ b/kolla/docker/nova/nova-compute-ironic/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set nova_compute_ironic_packages = [ 'genisoimage', 'nvme-cli', @@ -19,5 +21,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block nova_compute_ironic_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER nova diff --git a/kolla/docker/nova/nova-compute/Dockerfile.j2 b/kolla/docker/nova/nova-compute/Dockerfile.j2 index 8b3c1bcfe..de8d8062d 100644 --- a/kolla/docker/nova/nova-compute/Dockerfile.j2 +++ b/kolla/docker/nova/nova-compute/Dockerfile.j2 @@ -7,9 +7,11 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} -{{ macros.enable_extra_repos(['ceph', 'epel']) }} +{{ macros.enable_extra_repos(['ceph', 'crb', 'epel']) }} {% set nova_compute_packages = [ 'ceph-common', @@ -108,5 +110,6 @@ RUN {{ macros.install_pip(nova_compute_pip_packages | customizable("pip_packages {% block nova_compute_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER nova diff --git a/kolla/docker/nova/nova-libvirt-spice/Dockerfile.j2 b/kolla/docker/nova/nova-libvirt-spice/Dockerfile.j2 index 4c7ded894..4691df8fd 100644 --- a/kolla/docker/nova/nova-libvirt-spice/Dockerfile.j2 +++ b/kolla/docker/nova/nova-libvirt-spice/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='nova', groups='qemu') }} {% if base_package_type == 'rpm' %} @@ -118,3 +120,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start && chmod 744 /usr/local/bin/koll {% block nova_libvirt_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/nova/nova-libvirt/Dockerfile.j2 b/kolla/docker/nova/nova-libvirt/Dockerfile.j2 index fb82401b3..cfca7306a 100644 --- a/kolla/docker/nova/nova-libvirt/Dockerfile.j2 +++ b/kolla/docker/nova/nova-libvirt/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='nova', groups='qemu') }} {% if base_package_type == 'rpm' %} @@ -98,3 +100,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start && chmod 744 /usr/local/bin/koll {% block nova_libvirt_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/nova/nova-novncproxy/Dockerfile.j2 b/kolla/docker/nova/nova-novncproxy/Dockerfile.j2 index 4952ed734..2c13db694 100644 --- a/kolla/docker/nova/nova-novncproxy/Dockerfile.j2 +++ b/kolla/docker/nova/nova-novncproxy/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set nova_novncproxy_packages = [ 'novnc' ] %} @@ -17,5 +19,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block nova_novncproxy_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER nova diff --git a/kolla/docker/nova/nova-spicehtml5proxy/Dockerfile.j2 b/kolla/docker/nova/nova-spicehtml5proxy/Dockerfile.j2 index f3a90b0c5..4d22973f5 100644 --- a/kolla/docker/nova/nova-spicehtml5proxy/Dockerfile.j2 +++ b/kolla/docker/nova/nova-spicehtml5proxy/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set nova_spicehtml5proxy_packages = [ @@ -29,5 +31,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block nova_spicehtml5proxy_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER nova diff --git a/kolla/docker/nova/nova-ssh/Dockerfile.j2 b/kolla/docker/nova/nova-ssh/Dockerfile.j2 index 0d9e36b65..dfb269180 100644 --- a/kolla/docker/nova/nova-ssh/Dockerfile.j2 +++ b/kolla/docker/nova/nova-ssh/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='nova', shell='/bin/bash') }} {% set nova_ssh_packages = [ @@ -32,3 +34,4 @@ RUN sed -ri 's/session(\s+)required(\s+)pam_loginuid.so/session\1optional\2pam_l {% block nova_ssh_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/octavia/octavia-api/Dockerfile.j2 b/kolla/docker/octavia/octavia-api/Dockerfile.j2 index ccb7bad11..c5c7406a8 100644 --- a/kolla/docker/octavia/octavia-api/Dockerfile.j2 +++ b/kolla/docker/octavia/octavia-api/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set octavia_api_packages = [ ] %} @@ -29,3 +31,4 @@ RUN if [ "$(ls /plugins)" ]; then \ {% block octavia_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/octavia/octavia-base/Dockerfile.j2 b/kolla/docker/octavia/octavia-base/Dockerfile.j2 index 81a589a09..9cd040578 100644 --- a/kolla/docker/octavia/octavia-base/Dockerfile.j2 +++ b/kolla/docker/octavia/octavia-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='octavia') }} {% if base_package_type == 'rpm' %} @@ -46,3 +48,4 @@ RUN ln -s /octavia-base-source/* octavia \ {{ macros.kolla_patch_sources() }} {% block octavia_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/octavia/octavia-driver-agent/Dockerfile.j2 b/kolla/docker/octavia/octavia-driver-agent/Dockerfile.j2 index b3519922a..fdd078ed7 100644 --- a/kolla/docker/octavia/octavia-driver-agent/Dockerfile.j2 +++ b/kolla/docker/octavia/octavia-driver-agent/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set octavia_driver_agent_packages = [ ] %} @@ -25,5 +27,6 @@ RUN if [ "$(ls /plugins)" ]; then \ {% block octavia_driver_agent_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER octavia diff --git a/kolla/docker/opensearch/opensearch-dashboards/Dockerfile.j2 b/kolla/docker/opensearch/opensearch-dashboards/Dockerfile.j2 index 3249b62d2..f6bd31587 100644 --- a/kolla/docker/opensearch/opensearch-dashboards/Dockerfile.j2 +++ b/kolla/docker/opensearch/opensearch-dashboards/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='opensearch-dashboards', shell='/bin/bash', homedir='/usr/share/opensearch-dashboards') }} {{ macros.enable_extra_repos(['opensearch-dashboards']) }} @@ -22,5 +24,6 @@ RUN chmod 755 /usr/local/bin/kolla_extend_start {% block opensearch_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER opensearch-dashboards diff --git a/kolla/docker/opensearch/opensearch/Dockerfile.j2 b/kolla/docker/opensearch/opensearch/Dockerfile.j2 index 6ad8fb29a..2765d9985 100644 --- a/kolla/docker/opensearch/opensearch/Dockerfile.j2 +++ b/kolla/docker/opensearch/opensearch/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='opensearch', shell='/bin/bash', homedir='/usr/share/opensearch') }} {{ macros.enable_extra_repos(['opensearch']) }} @@ -28,5 +30,6 @@ RUN chmod 755 /usr/local/bin/kolla_extend_start {% block opensearch_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER opensearch diff --git a/kolla/docker/openstack-base/Dockerfile.j2 b/kolla/docker/openstack-base/Dockerfile.j2 index b8ed2e465..e062045c9 100644 --- a/kolla/docker/openstack-base/Dockerfile.j2 +++ b/kolla/docker/openstack-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {{ macros.enable_extra_repos(['crb', 'epel']) }} @@ -211,3 +213,4 @@ RUN {{ macros.install_pip(['pip', 'wheel', 'setuptools']) }} \ {{ macros.kolla_patch_sources() }} {% block openstack_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/openvswitch/openvswitch-base/Dockerfile.j2 b/kolla/docker/openvswitch/openvswitch-base/Dockerfile.j2 index 44d8df41c..46fe0be83 100644 --- a/kolla/docker/openvswitch/openvswitch-base/Dockerfile.j2 +++ b/kolla/docker/openvswitch/openvswitch-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% block ovs_install %} {% if base_package_type == 'rpm' %} @@ -43,3 +45,4 @@ RUN if [ -e /usr/sbin/tcpdump ]; then mv /usr/sbin/tcpdump /usr/bin/tcpdump; fi {{ macros.kolla_patch_sources() }} {% block openvswitch_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ovn/ovn-base/Dockerfile.j2 b/kolla/docker/ovn/ovn-base/Dockerfile.j2 index 3efd001a3..9ab9f0aa6 100644 --- a/kolla/docker/ovn/ovn-base/Dockerfile.j2 +++ b/kolla/docker/ovn/ovn-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set ovn_base_packages = [ 'ovn${KOLLA_RPM_OVN_VERSION}', @@ -27,3 +29,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start {{ macros.kolla_patch_sources() }} {% block ovn_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ovn/ovn-controller/Dockerfile.j2 b/kolla/docker/ovn/ovn-controller/Dockerfile.j2 index f95e61fee..a04562107 100644 --- a/kolla/docker/ovn/ovn-controller/Dockerfile.j2 +++ b/kolla/docker/ovn/ovn-controller/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set ovn_controller_packages = [ 'ovn${KOLLA_RPM_OVN_VERSION}-host' @@ -27,3 +29,4 @@ RUN chmod 644 /usr/local/bin/kolla_ovn_extend_start {% block ovn_controller_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ovn/ovn-nb-db-server/Dockerfile.j2 b/kolla/docker/ovn/ovn-nb-db-server/Dockerfile.j2 index ea6a53249..932d7a5d7 100644 --- a/kolla/docker/ovn/ovn-nb-db-server/Dockerfile.j2 +++ b/kolla/docker/ovn/ovn-nb-db-server/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set ovn_nb_db_server_packages = [ 'ovn${KOLLA_RPM_OVN_VERSION}-central', @@ -29,3 +31,4 @@ RUN chmod 644 /usr/local/bin/kolla_ovn_extend_start {% block ovn_nb_db_server_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ovn/ovn-northd/Dockerfile.j2 b/kolla/docker/ovn/ovn-northd/Dockerfile.j2 index 4a15e10eb..227584ed4 100644 --- a/kolla/docker/ovn/ovn-northd/Dockerfile.j2 +++ b/kolla/docker/ovn/ovn-northd/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set ovn_northd_packages = [ 'ovn${KOLLA_RPM_OVN_VERSION}-central', @@ -27,3 +29,4 @@ RUN chmod 644 /usr/local/bin/kolla_ovn_extend_start {% block ovn_northd_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ovn/ovn-sb-db-relay/Dockerfile.j2 b/kolla/docker/ovn/ovn-sb-db-relay/Dockerfile.j2 index 427b6f7f1..1d1761033 100644 --- a/kolla/docker/ovn/ovn-sb-db-relay/Dockerfile.j2 +++ b/kolla/docker/ovn/ovn-sb-db-relay/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block ovn_sb_db_server_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + {% block ovn_sb_db_relay_ovn_ctl %} {# TODO(mnasiadka): Switch to 25.03 branch when available, ideally rpm/deb packages will be available. #} @@ -14,5 +16,6 @@ RUN curl -o /usr/share/ovn/scripts/ovn-ctl https://raw.githubusercontent.com/ovn COPY extend_start.sh /usr/local/bin/kolla_ovn_extend_start RUN chmod 644 /usr/local/bin/kolla_ovn_extend_start +{{ macros.kolla_patch_sources() }} {% block ovn_sb_db_relay_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/kolla/docker/ovn/ovn-sb-db-server/Dockerfile.j2 b/kolla/docker/ovn/ovn-sb-db-server/Dockerfile.j2 index afceb8173..fbef63713 100644 --- a/kolla/docker/ovn/ovn-sb-db-server/Dockerfile.j2 +++ b/kolla/docker/ovn/ovn-sb-db-server/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set ovn_sb_db_server_packages = [ 'ovn${KOLLA_RPM_OVN_VERSION}-central', @@ -29,3 +31,4 @@ RUN chmod 644 /usr/local/bin/kolla_ovn_extend_start {% block ovn_sb_db_server_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/ovsdpdk/ovsdpdk/Dockerfile.j2 b/kolla/docker/ovsdpdk/ovsdpdk/Dockerfile.j2 index eab4f5474..0eaf85cf1 100644 --- a/kolla/docker/ovsdpdk/ovsdpdk/Dockerfile.j2 +++ b/kolla/docker/ovsdpdk/ovsdpdk/Dockerfile.j2 @@ -4,6 +4,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% endblock %} {% import "macros.j2" as macros with context %} + +{{ macros.kolla_enable_base_repos() }} {% block ovsdpdk_header %}{% endblock %} {% block ovsdpdk_install %} @@ -38,3 +40,4 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start {{ macros.kolla_patch_sources() }} {% block ovsdpdk_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/placement/placement-api/Dockerfile.j2 b/kolla/docker/placement/placement-api/Dockerfile.j2 index a13f65bdf..6f5281ca4 100644 --- a/kolla/docker/placement/placement-api/Dockerfile.j2 +++ b/kolla/docker/placement/placement-api/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set placement_api_packages = [ ] %} {{ macros.install_packages(placement_api_packages | customizable("packages")) }} @@ -17,3 +19,4 @@ COPY extend_start.sh /usr/local/bin/kolla_placement_extend_start {% block placement_api_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/placement/placement-base/Dockerfile.j2 b/kolla/docker/placement/placement-base/Dockerfile.j2 index 6454da748..258b09cee 100644 --- a/kolla/docker/placement/placement-base/Dockerfile.j2 +++ b/kolla/docker/placement/placement-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='placement') }} {% if base_package_type == 'rpm' %} @@ -42,3 +44,4 @@ RUN ln -s placement-base-source/* placement \ {{ macros.kolla_patch_sources() }} {% block placement_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 index 95018facf..f918d4f12 100644 --- a/kolla/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 +++ b/kolla/docker/prometheus/prometheus-blackbox-exporter/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {% set blackbox_packages = [ 'libcap' @@ -32,5 +34,6 @@ RUN ln -s /prometheus-blackbox-exporter-source/* prometheus-blackbox-exporter \ {% block prometheus_blackbox_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER prometheus diff --git a/kolla/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 index c32b2f8c7..cdf01797f 100644 --- a/kolla/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 +++ b/kolla/docker/prometheus/prometheus-libvirt-exporter/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% block prometheus_libvirt_exporter_header %}{% endblock %} {{ macros.install_packages(prometheus_libvirt_exporter_packages | customizable("packages")) }} @@ -21,5 +23,6 @@ RUN ln -s /prometheus-libvirt-exporter-source/* prometheus-libvirt-exporter \ {% block prometheus_libvirt_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER root diff --git a/kolla/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 b/kolla/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 index c6cf79ac3..348c7fe2a 100644 --- a/kolla/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 +++ b/kolla/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 @@ -5,6 +5,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% block prometheus_valkey_exporter_header %}{% endblock %} {{ macros.install_packages(prometheus_valkey_exporter_packages | customizable("packages")) }} @@ -21,5 +23,6 @@ RUN ln -s /prometheus-valkey-exporter-source/* prometheus-valkey-exporter \ {% block prometheus_valkey_exporter_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER prometheus diff --git a/kolla/docker/proxysql/Dockerfile.j2 b/kolla/docker/proxysql/Dockerfile.j2 index a76dbcda8..4ddf7d5cb 100644 --- a/kolla/docker/proxysql/Dockerfile.j2 +++ b/kolla/docker/proxysql/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.enable_extra_repos(['proxysql']) }} {% set proxysql_packages = [ @@ -39,5 +41,6 @@ RUN install -g proxysql -o proxysql -m 770 -d /var/lib/kolla/proxysql \ {% block proxysql_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER proxysql diff --git a/kolla/docker/rabbitmq/Dockerfile.j2 b/kolla/docker/rabbitmq/Dockerfile.j2 index bd600785b..79c762e4c 100644 --- a/kolla/docker/rabbitmq/Dockerfile.j2 +++ b/kolla/docker/rabbitmq/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='rabbitmq') }} {{ macros.enable_extra_repos(['erlang', 'rabbitmq']) }} @@ -65,5 +67,6 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start {% block rabbitmq_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER rabbitmq diff --git a/kolla/docker/skyline/skyline-apiserver/Dockerfile.j2 b/kolla/docker/skyline/skyline-apiserver/Dockerfile.j2 index 85b40d51c..e50b0467d 100644 --- a/kolla/docker/skyline/skyline-apiserver/Dockerfile.j2 +++ b/kolla/docker/skyline/skyline-apiserver/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + ADD skyline-apiserver-archive /skyline-apiserver-source {% set skyline_apiserver_pip_packages = [ @@ -23,5 +25,6 @@ RUN ln -s skyline-apiserver-source/* skyline-apiserver \ {% block skyline_apiserver_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER skyline diff --git a/kolla/docker/skyline/skyline-console/Dockerfile.j2 b/kolla/docker/skyline/skyline-console/Dockerfile.j2 index ba62f5041..9b34f503f 100644 --- a/kolla/docker/skyline/skyline-console/Dockerfile.j2 +++ b/kolla/docker/skyline/skyline-console/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% set skyline_console_packages = [ 'nginx' ] %} @@ -26,5 +28,6 @@ RUN ln -s skyline-console-source/* skyline-console \ {% block skyline_console_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER root diff --git a/kolla/docker/tacker/tacker-base/Dockerfile.j2 b/kolla/docker/tacker/tacker-base/Dockerfile.j2 index c24c8d87c..e84a4fe21 100644 --- a/kolla/docker/tacker/tacker-base/Dockerfile.j2 +++ b/kolla/docker/tacker/tacker-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='tacker') }} {% if base_package_type == 'rpm' %} @@ -41,3 +43,4 @@ RUN ln -s tacker-base-source/* tacker \ {{ macros.kolla_patch_sources() }} {% block tacker_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/tgtd/Dockerfile.j2 b/kolla/docker/tgtd/Dockerfile.j2 index b8cbbaaf5..864aa1232 100644 --- a/kolla/docker/tgtd/Dockerfile.j2 +++ b/kolla/docker/tgtd/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} RUN echo 'Not available for {{ base_distro }}' \ @@ -24,3 +26,4 @@ RUN sed -i '1 i include /var/lib/cinder/volumes/*' /etc/tgt/targets.conf {% block tgtd_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/trove/trove-base/Dockerfile.j2 b/kolla/docker/trove/trove-base/Dockerfile.j2 index a675b2b72..5309b744e 100644 --- a/kolla/docker/trove/trove-base/Dockerfile.j2 +++ b/kolla/docker/trove/trove-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='trove') }} ADD trove-base-archive /trove-base-source @@ -28,3 +30,4 @@ RUN ln -s trove-base-source/* trove \ {{ macros.kolla_patch_sources() }} {% block trove_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/docker/valkey/valkey-sentinel/Dockerfile.j2 b/kolla/docker/valkey/valkey-sentinel/Dockerfile.j2 index 94828a38f..e9b89113b 100644 --- a/kolla/docker/valkey/valkey-sentinel/Dockerfile.j2 +++ b/kolla/docker/valkey/valkey-sentinel/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {{ macros.enable_extra_repos(['epel']) }} {% set valkey_sentinel_packages = ['valkey'] %} @@ -22,5 +24,6 @@ RUN chmod 644 /usr/local/bin/kolla_extend_start {% block valkey_sentinel_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER valkey diff --git a/kolla/docker/valkey/valkey-server/Dockerfile.j2 b/kolla/docker/valkey/valkey-server/Dockerfile.j2 index be157d89e..e0005a9e0 100644 --- a/kolla/docker/valkey/valkey-server/Dockerfile.j2 +++ b/kolla/docker/valkey/valkey-server/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {% if base_package_type == 'rpm' %} {{ macros.enable_extra_repos(['epel']) }} {% endif %} @@ -19,5 +21,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% block valkey_server_footer %}{% endblock %} {% block footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} USER valkey diff --git a/kolla/docker/watcher/watcher-base/Dockerfile.j2 b/kolla/docker/watcher/watcher-base/Dockerfile.j2 index 8de6ceb9d..e5530842d 100644 --- a/kolla/docker/watcher/watcher-base/Dockerfile.j2 +++ b/kolla/docker/watcher/watcher-base/Dockerfile.j2 @@ -7,6 +7,8 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" {% import "macros.j2" as macros with context %} +{{ macros.kolla_enable_base_repos() }} + {{ macros.configure_user(name='watcher') }} ADD watcher-base-archive /watcher-base-source @@ -27,3 +29,4 @@ RUN ln -s watcher-base-source/* watcher \ {{ macros.kolla_patch_sources() }} {% block watcher_base_footer %}{% endblock %} +{{ macros.kolla_cleanup_repos() }} diff --git a/kolla/image/kolla_worker.py b/kolla/image/kolla_worker.py index b54e81bea..acaa08ed0 100644 --- a/kolla/image/kolla_worker.py +++ b/kolla/image/kolla_worker.py @@ -329,6 +329,7 @@ class KollaWorker(object): return { 'debian_package_install': jinja_methods.debian_package_install, 'handle_repos': jinja_methods.handle_repos, + 'cleanup_repos': jinja_methods.cleanup_repos, 'raise_error': jinja_methods.raise_error, } diff --git a/kolla/template/methods.py b/kolla/template/methods.py index 8bb7a7fc3..fcef7ae11 100644 --- a/kolla/template/methods.py +++ b/kolla/template/methods.py @@ -45,6 +45,22 @@ echo 'enabled=1' >>/etc/yum.repos.d/{repo}.repo" DNF_REPO_GPGCHECK = " && echo 'repo_gpgcheck={repo_gpgcheck}' \ >>/etc/yum.repos.d/{repo}.repo" +BACKUP_DIR = '/tmp/kolla-repos-backup' # nosec B108 +APT_BACKUP = ( + 'mkdir -p {backup_dir}' + ' && cp /etc/apt/sources.list.d/{repo}.sources' + ' {backup_dir}/{repo}.sources 2>/dev/null || true' + ' && touch {backup_dir}/{repo}.enabled' + ' && ' +) +RPM_BACKUP = ( + 'mkdir -p {backup_dir}' + ' && cp /etc/yum.repos.d/{file}' + ' {backup_dir}/{file} 2>/dev/null || true' + ' && touch {backup_dir}/{file}.enabled' + ' && ' +) + def debian_package_install(packages, clean_package_cache=True): """Jinja utility method for building debian-based package install command. @@ -99,6 +115,41 @@ def debian_package_install(packages, clean_package_cache=True): return ' && '.join(cmds) +def _load_repos(repos_yaml_override=None): + """Load default repos.yaml and merge an optional override file.""" + default_repofile = os.path.dirname( + os.path.realpath(__file__)) + '/repos.yaml' + with open(default_repofile, 'r') as f: + repo_data = yaml.safe_load(f) + + if repos_yaml_override: + with open(repos_yaml_override, 'r') as f: + for section, repos in yaml.safe_load(f).items(): + if section in repo_data: + repo_data[section].update(repos) + else: + repo_data[section] = repos + + return repo_data + + +def _build_repo_list(repo_data, base_package_type, base_distro, base_arch): + """Flatten repo_data sections for the current distro/arch into one dict.""" + result = {} + for section in (base_package_type, base_distro, + '%s-%s' % (base_distro, base_arch)): + for repo_name, repo_info in repo_data.get(section, {}).items(): + if repo_name in result: + merged = {**result[repo_name], **repo_info} + if any(k in merged for k in + ('baseurl', 'metalink', 'mirrorlist', 'url')): + merged.pop('distro', None) + result[repo_name] = merged + else: + result[repo_name] = repo_info + return result + + @pass_context def handle_repos(context, reponames, mode): """Generate Dockerfile RUN commands to enable or disable package repos. @@ -120,19 +171,9 @@ def handle_repos(context, reponames, mode): if not isinstance(reponames, list): raise TypeError("First argument should be a list of repositories") - default_repofile = os.path.dirname( - os.path.realpath(__file__)) + '/repos.yaml' - with open(default_repofile, 'r') as repos_file: - repo_data = yaml.safe_load(repos_file) - default_repo_data = {k: dict(v) for k, v in repo_data.items()} - - if context.get('repos_yaml'): - with open(context.get('repos_yaml'), 'r') as repos_file: - for section, repos in yaml.safe_load(repos_file).items(): - if section in repo_data: - repo_data[section].update(repos) - else: - repo_data[section] = repos + repos_yaml = context.get('repos_yaml') + repo_data = _load_repos(repos_yaml) + default_repo_data = _load_repos() base_package_type = context.get('base_package_type') base_distro = context.get('base_distro') @@ -141,30 +182,23 @@ def handle_repos(context, reponames, mode): openstack_release_codename = context.get('openstack_release_codename') commands = '' - - def _build_repo_list(data): - result = {} - for section in (base_package_type, base_distro, - '%s-%s' % (base_distro, base_arch)): - for repo_name, repo_info in data.get(section, {}).items(): - if repo_name in result: - merged = {**result[repo_name], **repo_info} - if any(k in merged for k in - ('baseurl', 'metalink', 'mirrorlist', 'url')): - merged.pop('distro', None) - result[repo_name] = merged - else: - result[repo_name] = repo_info - return result + backed_up_files = set() try: - repo_list = _build_repo_list(repo_data) + repo_list = _build_repo_list( + repo_data, base_package_type, base_distro, base_arch) except KeyError: # NOTE(hrw): Fallback to distro list repo_list = repo_data[base_distro] - if base_package_type == 'rpm' and context.get('repos_yaml'): - default_repo_list = _build_repo_list(default_repo_data) + # NOTE: repos_yaml overrides replace a repo's whole entry (see + # _load_repos), so an override that doesn't restate 'file_group' would + # otherwise lose it. Keep the default list around to fall back to the + # distro's real on-disk layout for repos sharing a file. + default_repo_list = _build_repo_list( + default_repo_data, base_package_type, base_distro, base_arch) + + if base_package_type == 'rpm' and repos_yaml: distro_overridden = {r for r, d in repo_list.items() if not d.get('distro') and default_repo_list.get(r, {}).get('distro')} @@ -192,6 +226,21 @@ def handle_repos(context, reponames, mode): if base_package_type == 'rpm': if mode == 'enable': if not _repo.get('distro'): + if _repo.get('build_only'): + # NOTE: some distros (e.g. Rocky's baseos, + # appstream and crb) share a single .repo file, + # so back up that shared file, not one named + # after this repo, or the original content is + # lost once handle_repos rewrites the file. + repo_file = ( + _repo.get('file_group') + or default_repo_list.get(repo, {}).get( + 'file_group') + or '{}.repo'.format(repo)) + if repo_file not in backed_up_files: + commands += RPM_BACKUP.format( + backup_dir=BACKUP_DIR, file=repo_file) + backed_up_files.add(repo_file) commands += DNF_REMOVE_EXISTING.format( name=_repo['name']) commands += " && " @@ -252,6 +301,13 @@ def handle_repos(context, reponames, mode): elif base_package_type == "deb": if mode == "enable" and not _repo.get('distro'): + if _repo.get('build_only'): + sources_file = ( + '/etc/apt/sources.list.d/{}.sources'.format(repo)) + if sources_file not in backed_up_files: + commands += APT_BACKUP.format( + backup_dir=BACKUP_DIR, repo=repo) + backed_up_files.add(sources_file) gpg_key = _repo['gpg_key'] signed_by = gpg_key if gpg_key.startswith('/') \ else '/etc/kolla/apt-keys/' + gpg_key @@ -286,5 +342,76 @@ def handle_repos(context, reponames, mode): return commands +def get_cleanup_commands(repos_yaml, base_package_type, base_distro, + base_arch): + """Return a RUN command string restoring or removing build_only repos. + + Repos marked build_only: true are backed up before being overwritten in + handle_repos(). This function generates the matching restore commands so + that mirror URLs are not baked into the final image. Repos that had no + prior file (no backup exists) are deleted instead of restored. + + Returns an empty string when there are no build_only repos. + """ + repo_data = _load_repos(repos_yaml) + repo_list = _build_repo_list( + repo_data, base_package_type, base_distro, base_arch) + default_repo_list = _build_repo_list( + _load_repos(), base_package_type, base_distro, base_arch) + + cleanup_cmds = [] + restored_file_groups = set() + for repo_name, repo_info in repo_list.items(): + if not repo_info.get('build_only'): + continue + if base_package_type == 'rpm' and not repo_info.get('distro'): + own_file = '{}.repo'.format(repo_name) + file_group = ( + repo_info.get('file_group') + or default_repo_list.get(repo_name, {}).get('file_group') + or own_file) + if file_group != own_file: + # handle_repos always writes this repo's override to + # own_file, regardless of where the original repo lived, + # so it always needs dropping on its own. + cleanup_cmds.append( + 'rm -f /etc/yum.repos.d/{}'.format(own_file)) + if file_group in restored_file_groups: + continue + restored_file_groups.add(file_group) + cleanup_cmds.append( + '[ -f {backup_dir}/{file}.enabled ]' + ' && ( mv {backup_dir}/{file}' + ' /etc/yum.repos.d/{file} 2>/dev/null' + ' || rm -f /etc/yum.repos.d/{file} )' + ' || true'.format( + backup_dir=BACKUP_DIR, file=file_group)) + elif base_package_type == 'deb' and not repo_info.get('distro'): + cleanup_cmds.append( + '[ -f {backup_dir}/{repo}.enabled ]' + ' && ( mv {backup_dir}/{repo}.sources' + ' /etc/apt/sources.list.d/{repo}.sources 2>/dev/null' + ' || rm -f /etc/apt/sources.list.d/{repo}.sources )' + ' || true'.format( + backup_dir=BACKUP_DIR, repo=repo_name)) + + if not cleanup_cmds: + return '' + + cleanup_cmds.append('rm -rf {}'.format(BACKUP_DIR)) + return 'RUN ' + ' \\\n && '.join(cleanup_cmds) + + +@pass_context +def cleanup_repos(context): + """Jinja2-callable wrapper around get_cleanup_commands().""" + return get_cleanup_commands( + context.get('repos_yaml'), + context.get('base_package_type'), + context.get('base_distro'), + context.get('base_arch'), + ) + + def raise_error(msg: str) -> t.NoReturn: raise Exception(msg) diff --git a/kolla/tests/test_methods.py b/kolla/tests/test_methods.py index 8a577aead..1e30f1f9b 100644 --- a/kolla/tests/test_methods.py +++ b/kolla/tests/test_methods.py @@ -10,6 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os import tempfile import yaml @@ -398,6 +399,378 @@ class MethodsTest(base.TestCase): self.assertRaises(ValueError, methods.handle_repos, template_vars, ['test-repo'], 'enable') + def test_handle_repos_deb_build_only_backup(self): + repos = {'debian': {'build-only-mirror': { + 'build_only': True, + 'url': 'http://mirror.example.com/debian', + 'suite': 'trixie', + 'component': 'main', + 'gpg_key': '/usr/share/keyrings/debian-archive-keyring.gpg', + }}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(repos, f) + fname = f.name + try: + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'debian', + 'base_package_type': 'deb', + 'openstack_release_codename': 'Gazpacho', + 'repos_yaml': fname, + } + result = methods.handle_repos( + template_vars, ['build-only-mirror'], 'enable') + self.assertIn('mkdir -p /tmp/kolla-repos-backup', result) + self.assertIn( + 'cp /etc/apt/sources.list.d/build-only-mirror.sources' + ' /tmp/kolla-repos-backup/build-only-mirror.sources', + result) + self.assertIn( + 'touch /tmp/kolla-repos-backup/build-only-mirror.enabled', + result) + # backup must precede the actual repo write + self.assertLess( + result.index('cp /etc/apt/sources.list.d/build-only-mirror'), + result.index("echo 'Uris:")) + finally: + os.unlink(fname) + + def test_handle_repos_rpm_build_only_backup(self): + repos = {'rpm': {'build-only-mirror': { + 'build_only': True, + 'name': 'build-only-mirror', + 'baseurl': 'http://mirror.example.com/rpm/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10', + }}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(repos, f) + fname = f.name + try: + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'centos', + 'base_package_type': 'rpm', + 'repos_yaml': fname, + } + result = methods.handle_repos( + template_vars, ['build-only-mirror'], 'enable') + self.assertIn('mkdir -p /tmp/kolla-repos-backup', result) + self.assertIn( + 'cp /etc/yum.repos.d/build-only-mirror.repo' + ' /tmp/kolla-repos-backup/build-only-mirror.repo', + result) + self.assertIn( + 'touch /tmp/kolla-repos-backup/build-only-mirror.repo' + '.enabled', + result) + # backup must precede DNF_REMOVE_EXISTING + self.assertLess( + result.index( + 'cp /etc/yum.repos.d/build-only-mirror.repo'), + result.index('grep -rlF')) + finally: + os.unlink(fname) + + def test_handle_repos_rpm_shared_file_group_backup(self): + """Repos sharing a file_group back up that file once, by its name. + + e.g. Rocky's baseos/appstream/crb all live in rocky.repo. + """ + repos = {'rpm': { + 'shared-a': { + 'build_only': True, + 'file_group': 'shared.repo', + 'name': 'shared-a', + 'baseurl': 'http://mirror.example.com/a/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-a', + }, + 'shared-b': { + 'build_only': True, + 'file_group': 'shared.repo', + 'name': 'shared-b', + 'baseurl': 'http://mirror.example.com/b/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-b', + }, + }} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(repos, f) + fname = f.name + try: + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'centos', + 'base_package_type': 'rpm', + 'repos_yaml': fname, + } + result = methods.handle_repos( + template_vars, ['shared-a', 'shared-b'], 'enable') + self.assertEqual( + 1, + result.count( + 'cp /etc/yum.repos.d/shared.repo' + ' /tmp/kolla-repos-backup/shared.repo')) + self.assertNotIn('shared-a.repo /tmp/kolla-repos-backup', + result) + self.assertNotIn('shared-b.repo /tmp/kolla-repos-backup', + result) + # each repo still gets its own override file written + self.assertIn('>/etc/yum.repos.d/shared-a.repo', result) + self.assertIn('>/etc/yum.repos.d/shared-b.repo', result) + finally: + os.unlink(fname) + + def test_get_cleanup_commands_rpm_shared_file_group(self): + """The shared file is restored once, each own override always.""" + repos = {'rpm': { + 'shared-a': { + 'build_only': True, + 'file_group': 'shared.repo', + 'name': 'shared-a', + 'baseurl': 'http://mirror.example.com/a/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-a', + }, + 'shared-b': { + 'build_only': True, + 'file_group': 'shared.repo', + 'name': 'shared-b', + 'baseurl': 'http://mirror.example.com/b/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-b', + }, + }} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(repos, f) + fname = f.name + try: + result = methods.get_cleanup_commands( + fname, 'rpm', 'centos', 'x86_64') + self.assertEqual( + 1, + result.count( + 'mv /tmp/kolla-repos-backup/shared.repo' + ' /etc/yum.repos.d/shared.repo')) + self.assertIn('rm -f /etc/yum.repos.d/shared-a.repo', result) + self.assertIn('rm -f /etc/yum.repos.d/shared-b.repo', result) + finally: + os.unlink(fname) + + def _rocky_mirror_override(self): + """The exact override shape documented for Rocky, minus file_group. + + repos_yaml overrides replace a repo's whole entry, so this matches + what a real user would write per doc/source/admin/image-building + .rst - it must not restate 'file_group' for the fix to be tested. + """ + return {'rocky': { + 'baseos': { + 'build_only': True, + 'name': 'baseos', + 'baseurl': 'http://mirror.example.com/rocky/10/BaseOS/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10', + }, + 'appstream': { + 'build_only': True, + 'name': 'appstream', + 'baseurl': 'http://mirror.example.com/rocky/10/AppStream/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10', + }, + 'crb': { + 'build_only': True, + 'name': 'crb', + 'baseurl': 'http://mirror.example.com/rocky/10/CRB/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10', + }, + }} + + def test_handle_repos_rocky_baseos_backs_up_shared_file(self): + """file_group must be resolved even if the override omits it. + + Rocky's baseos/appstream/crb live in rocky.repo, not their own + .repo files, and a repos_yaml override doesn't restate file_group. + """ + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(self._rocky_mirror_override(), f) + fname = f.name + try: + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'rocky', + 'base_package_type': 'rpm', + 'repos_yaml': fname, + } + result = methods.handle_repos( + template_vars, ['baseos', 'appstream'], 'enable') + self.assertEqual( + 1, + result.count( + 'cp /etc/yum.repos.d/rocky.repo' + ' /tmp/kolla-repos-backup/rocky.repo')) + self.assertNotIn('baseos.repo /tmp/kolla-repos-backup', result) + self.assertNotIn('appstream.repo /tmp/kolla-repos-backup', + result) + finally: + os.unlink(fname) + + def test_get_cleanup_commands_rocky_restores_shared_file(self): + """Restoring baseos/appstream/crb recovers the shared rocky.repo.""" + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(self._rocky_mirror_override(), f) + fname = f.name + try: + result = methods.get_cleanup_commands( + fname, 'rpm', 'rocky', 'x86_64') + self.assertEqual( + 1, + result.count( + 'mv /tmp/kolla-repos-backup/rocky.repo' + ' /etc/yum.repos.d/rocky.repo')) + self.assertIn('rm -f /etc/yum.repos.d/baseos.repo', result) + self.assertIn('rm -f /etc/yum.repos.d/appstream.repo', result) + self.assertIn('rm -f /etc/yum.repos.d/crb.repo', result) + finally: + os.unlink(fname) + + def test_handle_repos_build_only_no_double_backup(self): + """Each distinct file is backed up exactly once per handle_repos.""" + repos = {'debian': { + 'mirror-a': { + 'build_only': True, + 'url': 'http://mirror.example.com/a', + 'suite': 'trixie', + 'component': 'main', + 'gpg_key': '/usr/share/keyrings/debian-archive-keyring.gpg', + }, + 'mirror-b': { + 'build_only': True, + 'url': 'http://mirror.example.com/b', + 'suite': 'trixie', + 'component': 'main', + 'gpg_key': '/usr/share/keyrings/debian-archive-keyring.gpg', + }, + }} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(repos, f) + fname = f.name + try: + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'debian', + 'base_package_type': 'deb', + 'openstack_release_codename': 'Gazpacho', + 'repos_yaml': fname, + } + result = methods.handle_repos( + template_vars, ['mirror-a', 'mirror-b'], 'enable') + self.assertEqual( + 1, + result.count( + 'cp /etc/apt/sources.list.d/mirror-a.sources' + ' /tmp/kolla-repos-backup/mirror-a.sources')) + self.assertEqual( + 1, + result.count( + 'cp /etc/apt/sources.list.d/mirror-b.sources' + ' /tmp/kolla-repos-backup/mirror-b.sources')) + finally: + os.unlink(fname) + + def test_handle_repos_without_build_only_no_backup(self): + template_vars = { + 'base_arch': 'x86_64', + 'base_distro': 'debian', + 'base_package_type': 'deb', + 'openstack_release_codename': 'Gazpacho', + } + result = methods.handle_repos(template_vars, ['grafana'], 'enable') + self.assertNotIn('kolla-repos-backup', result) + + def test_get_cleanup_commands_deb(self): + repos = {'debian': {'build-only-mirror': { + 'build_only': True, + 'url': 'http://mirror.example.com/debian', + 'suite': 'trixie', + 'component': 'main', + 'gpg_key': '/usr/share/keyrings/debian-archive-keyring.gpg', + }}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(repos, f) + fname = f.name + try: + result = methods.get_cleanup_commands( + fname, 'deb', 'debian', 'x86_64') + self.assertTrue(result.startswith('RUN ')) + self.assertIn( + '[ -f /tmp/kolla-repos-backup/build-only-mirror.enabled ]', + result) + self.assertIn( + 'mv /tmp/kolla-repos-backup/build-only-mirror.sources' + ' /etc/apt/sources.list.d/build-only-mirror.sources', + result) + self.assertIn( + 'rm -f /etc/apt/sources.list.d/build-only-mirror.sources', + result) + self.assertIn('rm -rf /tmp/kolla-repos-backup', result) + finally: + os.unlink(fname) + + def test_get_cleanup_commands_rpm(self): + repos = {'rpm': {'build-only-mirror': { + 'build_only': True, + 'name': 'build-only-mirror', + 'baseurl': 'http://mirror.example.com/', + 'gpgkey': 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10', + }}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(repos, f) + fname = f.name + try: + result = methods.get_cleanup_commands( + fname, 'rpm', 'centos', 'x86_64') + self.assertTrue(result.startswith('RUN ')) + self.assertIn( + '[ -f /tmp/kolla-repos-backup/build-only-mirror.repo' + '.enabled ]', + result) + self.assertIn( + 'mv /tmp/kolla-repos-backup/build-only-mirror.repo' + ' /etc/yum.repos.d/build-only-mirror.repo', + result) + self.assertIn( + 'rm -f /etc/yum.repos.d/build-only-mirror.repo', + result) + self.assertIn('rm -rf /tmp/kolla-repos-backup', result) + finally: + os.unlink(fname) + + def test_get_cleanup_commands_empty_without_build_only(self): + result = methods.get_cleanup_commands(None, 'deb', 'debian', 'x86_64') + self.assertEqual('', result) + + def test_get_cleanup_commands_skips_distro_repos(self): + """distro: True repos are a no-op in handle_repos.""" + repos = {'debian': {'debian': { + 'build_only': True, + 'distro': True, + }}} + with tempfile.NamedTemporaryFile(mode='w', suffix='.yaml', + delete=False) as f: + yaml.dump(repos, f) + fname = f.name + try: + result = methods.get_cleanup_commands( + fname, 'deb', 'debian', 'x86_64') + self.assertEqual('', result) + finally: + os.unlink(fname) + def test_repos_yaml_rpm_section_override_not_blocked_by_distro_section( self): """Overriding distro repos in 'rpm' section must not be undone. diff --git a/releasenotes/notes/cleanup-repos-85faf33025fd7e5c.yaml b/releasenotes/notes/cleanup-repos-85faf33025fd7e5c.yaml new file mode 100644 index 000000000..627cce663 --- /dev/null +++ b/releasenotes/notes/cleanup-repos-85faf33025fd7e5c.yaml @@ -0,0 +1,16 @@ +--- +features: + - | + Repository cleanup is now performed via Jinja2 macros + (``kolla_cleanup_repos()``) injected directly into each Dockerfile + template, replacing the previous Python-level injection in + ``kolla_worker.py``. This ensures cleanup always runs before any + ``USER`` directive, avoiding permission errors when non-root service + users attempted to modify root-owned repository files. + - | + Base OS repositories (``baseos``, ``appstream`` on RPM distros; + ``debian``/``debian-security`` or ``ubuntu``/``ubuntu-security``/ + ``ubuntu-cloud-archive`` on Debian-based distros) are now explicitly + re-enabled in every service image via the new ``kolla_enable_base_repos()`` + macro. This guarantees that packages from base OS repositories remain + available in child images after parent image cleanup. diff --git a/tests/templates/repos.yaml.j2 b/tests/templates/repos.yaml.j2 index 42c6724f9..9129f74eb 100644 --- a/tests/templates/repos.yaml.j2 +++ b/tests/templates/repos.yaml.j2 @@ -2,12 +2,14 @@ {% if base_distro == 'debian' %} debian: debian: + build_only: true component: "main" gpg_key: "/usr/share/keyrings/debian-archive-keyring.gpg" suite: "trixie trixie-updates trixie-backports" trusted: True url: "http://{{ nodepool_mirror_host }}/debian" debian-security: + build_only: true component: "main" gpg_key: "/usr/share/keyrings/debian-archive-keyring.gpg" suite: "trixie-security" @@ -17,31 +19,37 @@ debian: rocky: appstream: baseurl: "http://dl.rockylinux.org/$contentdir/$releasever/AppStream/$basearch/os/" + build_only: true gpgkey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10" name: "appstream" baseos: baseurl: "http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/" + build_only: true gpgkey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10" name: "baseos" crb: baseurl: "http://dl.rockylinux.org/$contentdir/$releasever/CRB/$basearch/os/" + build_only: true gpgkey: "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-10" name: "crb" {% elif base_distro == 'ubuntu' %} ubuntu: ubuntu: + build_only: true component: "main universe" gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" suite: "noble noble-updates noble-backports" trusted: True url: "http://{{ nodepool_mirror_host }}/ubuntu/" ubuntu-security: + build_only: true component: "main universe" gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" suite: "noble-security" trusted: True url: "http://{{ nodepool_mirror_host }}/ubuntu/" ubuntu-cloud-archive: + build_only: true component: "main" gpg_key: "/usr/share/keyrings/ubuntu-cloud-keyring.gpg" suite: "noble-updates/gazpacho" @@ -49,12 +57,14 @@ ubuntu: url: "http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive" ubuntu-aarch64: ubuntu: + build_only: true component: "main universe" gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" suite: "noble noble-updates noble-backports" trusted: True url: "http://{{ nodepool_mirror_host }}/ubuntu-ports/" ubuntu-security: + build_only: true component: "main universe" gpg_key: "/usr/share/keyrings/ubuntu-archive-keyring.gpg" suite: "noble-security" -- cgit v1.2.3