diff options
110 files changed, 787 insertions, 637 deletions
diff --git a/README.rst b/README.rst index 4af919296..766d6b928 100644 --- a/README.rst +++ b/README.rst @@ -8,17 +8,18 @@ Kolla Overview .. Change things from this point on -The Kolla project is a member of the OpenStack `Big Tent -Governance <https://governance.openstack.org/tc/reference/projects/index.html>`__. +The Kolla project is a member of the OpenStack `Governance +<https://governance.openstack.org/tc/reference/projects/index.html>`__. Kolla's mission statement is: :: - To provide production-ready containers and deployment tools for operating - OpenStack clouds. + To provide tools to create production-ready containers and + to provide deployment tools for operating OpenStack clouds. -Kolla provides `Docker <https://docker.com/>`__ containers, +Kolla provides tools to create containers that can be run under either +`Docker <https://docker.com/>`__ or `Podman <https://podman.io/>`, as well as `Ansible <https://ansible.com/>`__ playbooks to deploy OpenStack on baremetal or virtual machine to meet Kolla's mission. @@ -39,29 +40,28 @@ Quickstart <https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html The Kolla Repository ==================== -The Kolla repository is one of three deliverables of the OpenStack Kolla -project. The three deliverables that make up the Kolla project are: - -================ ========================================================= -Deliverable Repository -================ ========================================================= -kolla https://opendev.org/openstack/kolla -kolla-ansible https://opendev.org/openstack/kolla-ansible -kayobe https://opendev.org/openstack/kayobe -================ ========================================================= - -The `Docker images <https://docs.docker.com/storage/storagedriver/>`__ -are built by the Kolla project maintainers. A detailed process for -contributing to the images can be found in the `image building -guide <https://docs.openstack.org/kolla/latest/admin/image-building.html>`__. - -The Kolla developers build images in the `kolla` namespace for every tagged -release. - -You can view the available images on `Docker Hub -<https://hub.docker.com/u/kolla/>`__ or with the Docker CLI:: - - $ sudo docker search kolla +The Kolla repository is one of four deliverables of the OpenStack Kolla +project. The four deliverables that make up the Kolla project are: + +======================== ====================================================== +Deliverable Repository +======================== ====================================================== +kolla https://opendev.org/openstack/kolla +kolla-ansible https://opendev.org/openstack/kolla-ansible +ansible-collection-kolla https://opendev.org/openstack/ansible-collection-kolla +kayobe https://opendev.org/openstack/kayobe +======================== ====================================================== + +The Kolla developers publish images in the Quay.io `openstack.kolla` namespace +for every tagged release. You can view the available images on `Quay.io +<https://quay.io/organization/openstack.kolla>`__. + +.. warning:: + Kolla(-ansible) defaults to using these images in order to ease testing and + demonstration setups, but they are not intended to be used beyond this. + In particular, they do not undergo any security scrutiny. If you intend to + deploy Kolla for production purposes, you are advised to create and curate your + own set of images using the ``kolla`` tool. OpenStack services ------------------ @@ -87,10 +87,10 @@ Kolla provides images to deploy the following OpenStack projects: - `Manila <https://docs.openstack.org/manila/latest/>`__ - `Masakari <https://docs.openstack.org/masakari/latest/>`__ - `Mistral <https://docs.openstack.org/mistral/latest/>`__ -- `Monasca <https://docs.openstack.org/monasca-api/latest/>`__ - `Neutron <https://docs.openstack.org/neutron/latest/>`__ - `Nova <https://docs.openstack.org/nova/latest/>`__ - `Octavia <https://docs.openstack.org/octavia/latest/>`__ +- `Placement <https://docs.openstack.org/placement/latest/>`__ - Skyline (`APIServer <https://docs.openstack.org/skyline-apiserver/latest/>`__ and `Console <https://docs.openstack.org/skyline-console/latest/>`__) - `Tacker <https://docs.openstack.org/tacker/latest/>`__ - `Trove <https://docs.openstack.org/trove/latest/>`__ @@ -103,44 +103,33 @@ Infrastructure components Kolla provides images to deploy the following infrastructure components: - `Collectd <https://collectd.org>`__, - `InfluxDB <https://influxdata.com/time-series-platform/influxdb/>`__, and `Grafana <https://grafana.com>`__ for performance monitoring. -- `Corosync <https://clusterlabs.org/corosync.html>`__ and - `Pacemaker <https://clusterlabs.org/pacemaker>`__ for HAcluster. -- `Elasticsearch <https://www.elastic.co/de/products/elasticsearch>`__ and - `Kibana <https://www.elastic.co/products/kibana>`__ to search, analyze, - and visualize log messages. - `Cron <https://cron-job.org>`__ for log rotation. - `Etcd <https://etcd.io/>`__ a distributed key value store that provides a reliable way to store data across a cluster of machines. - `Fluentd <https://www.fluentd.org/>`__ as an open source data collector for unified logging layer. - `Gnocchi <https://gnocchi.xyz/>`__ a time-series storage database. +- `Corosync <https://clusterlabs.org/corosync.html>`__ and + `Pacemaker <https://clusterlabs.org/pacemaker>`__ for HAcluster. - `HAProxy <https://www.haproxy.org/>`__ and `Keepalived <https://www.keepalived.org/>`__ for high availability of services and their endpoints. -- `Kafka <https://kafka.apache.org/documentation/>`__ a distributed streaming - platform. - `MariaDB and Galera Cluster <https://mariadb.com/kb/en/library/galera-cluster/>`__ for highly available MySQL databases. - `Memcached <https://www.memcached.org/>`__ a distributed memory object caching system. -- `Open vSwitch <https://www.openvswitch.org/>`__ for use with Neutron. - MariaDB Backup A tool which provides a method of performing a hot backup of your MySQL data while the system is running. +- `Open vSwitch <https://www.openvswitch.org/>`__ for use with Neutron. +- `Opensearch <https://opensearch.org/>`__ to search, analyze, + and visualize log messages. - `Prometheus <https://prometheus.io/>`__ an open-source systems monitoring and alerting toolkit originally built at SoundCloud. -- `Qdrouterd <https://qpid.apache.org/components/dispatch-router/index.html>`__ as a - direct messaging back end for communication between services. - `RabbitMQ <https://www.rabbitmq.com/>`__ as a broker messaging back end for communication between services. -- `Redis Sentinel <https://redis.io/topics/sentinel>`__ provides high availability for redis +- `Valkey Sentinel <https://valkey.io/topics/sentinel>`__ provides high availability for valkey along with collateral tasks such as monitoring, notification and acts as configuration provider for clients. -- `Telegraf <https://www.docs.influxdata.com/telegraf/>`__ as a plugin-driven server - agent for collecting & reporting metrics. -- `ZooKeeper <https://zookeeper.apache.org/>`__ as a centralized service for maintaining - configuration information, naming, providing distributed synchronization, and providing - group services. Directories =========== @@ -175,14 +164,6 @@ workflow <https://docs.openstack.org/infra/manual/developers.html>`__. <https://docs.openstack.org/kolla/latest/contributor/meeting.html>`__. - Contribute `code <https://opendev.org/openstack/kolla>`__. -Contributors -============ - -Check out who is `contributing -code <https://stackalytics.io/?module=kolla-group&metric=commits>`__ and -`contributing -reviews <https://stackalytics.io/?module=kolla-group&metric=marks>`__. - Notices ======= diff --git a/doc/source/ceph_versions.csv b/doc/source/ceph_versions.csv index 36c9cc80c..85af90aa2 100644 --- a/doc/source/ceph_versions.csv +++ b/doc/source/ceph_versions.csv @@ -1,5 +1,5 @@ Distro,Ceph, -,Source, Release +,Source,Release Rocky Linux,CentOS Storage SIG,Squid Ubuntu,Ubuntu,Squid Debian,Debian,Pacific diff --git a/doc/source/contributor/release-management.rst b/doc/source/contributor/release-management.rst index 441bf3907..91f483e38 100644 --- a/doc/source/contributor/release-management.rst +++ b/doc/source/contributor/release-management.rst @@ -473,7 +473,7 @@ After a branch enters EM, we typically do the following: * stop backporting fixes to the branch by default. Important fixes or those requested by community members may be merged if deemed appropriate -* stop publishing images to Dockerhub +* stop publishing images to Quay.io * stop actively maintaining CI End of Life (EOL) diff --git a/doc/source/contributor/versions.rst b/doc/source/contributor/versions.rst index b3adf1920..b549f19a2 100644 --- a/doc/source/contributor/versions.rst +++ b/doc/source/contributor/versions.rst @@ -15,32 +15,26 @@ information about package sources. ============== ================ ============================================= Name Version Package source information ============== ================ ============================================= - Grafana 9.x `Grafana install guide`_ - InfluxDB 1.8.x `InfluxDB upstream repo`_ - Kibana 7.x `Kibana install guide`_ - Logstash 7.x `Logstash install guide`_ - MariaDB 10.11 (LTS) `MariaDB Community downloads`_ + Grafana 12.x `Grafana install guide`_ + MariaDB 11.4 (LTS) `MariaDB Community downloads`_ Galera 26.4 (LTS) `MariaDB Community downloads`_ OpenSearch 3.x `OpenSearch install guide`_ - ProxySQL 2.7.x `ProxySQL repository`_ - Rabbitmq 4.1.x - CentOS/Rocky: + ProxySQL 3.0.x `ProxySQL repository`_ + RabbitMQ 4.2.x - CentOS/Rocky: `Team RabbitMQ 'Cloudsmith' repo (RPM)`_ - Debian/Ubuntu: `Team RabbitMQ 'Cloudsmith' repo (Deb)`_ - Erlang 27.X - CentOS/Rocky aarch64: + Erlang 27.x - CentOS/Rocky aarch64: `openstack-kolla COPR`_ - CentOS/Rocky x86-64: `Team RabbitMQ 'Cloudsmith' repo (RPM)`_ - Debian/Ubuntu: `Team RabbitMQ 'Modern Erlang' PPA`_ Fluentd 6.x (LTS) `Fluentd install guide`_ - Telegraf 1.24.x `InfluxDB upstream repo`_ ============== ================ ============================================= .. _`InfluxDB upstream repo`: https://repos.influxdata.com/ .. _`OpenSearch install guide`: https://opensearch.org/downloads.html -.. _`Kibana install guide`: https://www.elastic.co/guide/en/kibana/7.10/install.html -.. _`Logstash install guide`: https://www.elastic.co/guide/en/logstash/7.9/installing-logstash.html .. _`Fluentd install guide`: https://www.fluentd.org/download .. _`ProxySQL repository`: https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/ diff --git a/doc/source/matrix_aarch64.csv b/doc/source/matrix_aarch64.csv index 028bba2c2..7dbd5849f 100644 --- a/doc/source/matrix_aarch64.csv +++ b/doc/source/matrix_aarch64.csv @@ -20,7 +20,6 @@ hacluster,N,U,U haproxy,U,U,U heat,U,U,U horizon,U,U,U -influxdb,N,U,U ironic,U,U,U iscsid,U,U,U keepalived,U,U,U @@ -46,11 +45,10 @@ ovsdpdk,N,U,U placement,U,U,U prometheus,U,U,U rabbitmq,U,U,U -redis,U,U,U skyline,U,U,U tacker,U,U,U -telegraf,N,N,N tgtd,U,U,U trove,U,U,U +valkey,U,U,U watcher,U,U,U zun,U,U,U diff --git a/doc/source/matrix_x86.csv b/doc/source/matrix_x86.csv index 14c37597d..512577aac 100644 --- a/doc/source/matrix_x86.csv +++ b/doc/source/matrix_x86.csv @@ -21,7 +21,6 @@ hacluster-pcs,N,U,U haproxy,T,T,U heat,T,T,T horizon,T,T,T -influxdb,U,U,U ironic,T,T,U iscsid,T,T,U keepalived,T,T,U @@ -47,12 +46,11 @@ ovsdpdk,N,U,U placement,T,T,T prometheus,U,U,U rabbitmq,T,T,T -redis,T,U,U skyline,U,U,U swift,T,T,U tacker,T,U,U -telegraf,U,U,U tgtd,N,T,U trove,U,U,U +valkey,T,U,U watcher,U,U,U zun,T,T,U diff --git a/doc/source/openvswitch_versions.csv b/doc/source/openvswitch_versions.csv new file mode 100644 index 000000000..55813a60b --- /dev/null +++ b/doc/source/openvswitch_versions.csv @@ -0,0 +1,5 @@ +Distro,Open vSwitch, +,Source,Release +Rocky Linux,CentOS NFV SIG,3.5 +Ubuntu,UCA,3.6 +Debian,DEB,3.5 diff --git a/doc/source/ovn_versions.csv b/doc/source/ovn_versions.csv new file mode 100644 index 000000000..f0a8c5210 --- /dev/null +++ b/doc/source/ovn_versions.csv @@ -0,0 +1,5 @@ +Distro,OVN, +,Source,Release +Rocky Linux,CentOS NFV SIG,25.09 +Ubuntu,UCA,25.09 +Debian,DEB,25.03 diff --git a/doc/source/support_matrix.rst b/doc/source/support_matrix.rst index 48338af6f..31c67e70a 100644 --- a/doc/source/support_matrix.rst +++ b/doc/source/support_matrix.rst @@ -18,7 +18,7 @@ The following base container images are supported: Distribution Default base Default base tag ================== =============================== ================ Rocky Linux quay.io/rockylinux/rockylinux 10 -Debian Bookworm debian bookworm +Debian Trixie debian trixie Ubuntu Noble ubuntu 24.04 ================== =============================== ================ @@ -33,6 +33,22 @@ Ceph versions in Kolla images :stub-columns: 1 :file: ./ceph_versions.csv +Open vSwitch versions in Kolla images +===================================== + +.. csv-table:: Open vSwitch versions + :header-rows: 2 + :stub-columns: 1 + :file: ./openvswitch_versions.csv + +OVN versions in Kolla images +============================ + +.. csv-table:: OVN versions + :header-rows: 2 + :stub-columns: 1 + :file: ./ovn_versions.csv + Support clause definitions ========================== diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2 index 45e7f9c03..0503098df 100644 --- a/docker/base/Dockerfile.j2 +++ b/docker/base/Dockerfile.j2 @@ -40,7 +40,7 @@ ENV PS1="$(tput bold)($(printenv KOLLA_SERVICE_NAME))$(tput sgr0)[$(id -un)@$(ho # desire such functionality. I think we will :) ENV KOLLA_RPM_OVS_VERSION=3.5 \ - KOLLA_RPM_OVN_VERSION=25.03 + KOLLA_RPM_OVN_VERSION=25.09 RUN cat /tmp/kolla_bashrc >> /etc/bashrc \ && sed -i 's|^\(override_install_langs=.*\)|# \1|' /etc/dnf/dnf.conf @@ -115,11 +115,6 @@ RUN {{ macros.install_packages(base_centos_yum_repo_packages | customizable("cen {% block base_centos_repo_overrides_post_yum %}{% endblock -%} && {{ macros.rpm_security_update(clean_package_cache) }} -{# NOTE(mnasiadka): dumb-init is only in EPEL10.1 onwards and RHEL/Rocky/clones use the same #} -{# EPEL release as the installed distro release #} -{# TODO: Remove it when Rocky 10.1 is out #} -RUN dnf config-manager --save --setopt=*.metalink="https://mirrors.fedoraproject.org/metalink?repo=epel-z-10.1&arch=\$basearch" epel - #### END REPO ENABLEMENT {# We are back to the basic if conditional here which is: @@ -192,12 +187,12 @@ RUN cat /tmp/kolla_bashrc >> /etc/bash.bashrc \ && sed -i -e s/#*LAST_SYSTEM_UID=999/LAST_SYSTEM_UID=59999/g \ -e s/#*LAST_SYSTEM_GID=999/LAST_SYSTEM_GID=59999/g /etc/adduser.conf +{# NOTE(mnasiadka): Ubuntu arm64 uses ports.ubuntu.com #} {% block base_ubuntu_package_sources_list %} -{% if base_distro == 'debian' or ( base_distro == 'ubuntu' and base_arch == 'x86_64' ) %} -RUN rm -f /etc/apt/sources.list.d/{{ base_distro }}.sources -COPY sources.list.{{ base_distro }} /etc/apt/sources.list +{% if base_distro == "ubuntu" and base_arch == 'aarch64' %} +COPY {{ base_distro }}.sources.arm64 /etc/apt/sources.list.d/{{ base_distro }}.sources {% else %} -COPY sources.list.{{ base_distro }}.{{ base_arch }} /etc/apt/sources.list +COPY {{ base_distro }}.sources /etc/apt/sources.list.d/ {% endif %} COPY sources.list /etc/apt/sources.list.d/kolla-custom.list {% endblock %} @@ -243,7 +238,7 @@ COPY apt_preferences /etc/apt/preferences.d/kolla-custom {% set base_apt_keys = [ {'name': 'erlang-ppa', 'keyid': 'F77F1EDA57EBB1CC'}, - {'name': 'rabbitmq', 'keyid': '9F4587F226208342'}, + {'name': 'rabbitmq', 'keyid': '6B73A36E6026DFCA'}, {'name': 'haproxy', 'keyid': 'CFFB779AADC995E4F350A060505D97A41C61B9CD'}, ] %} @@ -252,7 +247,7 @@ COPY apt_preferences /etc/apt/preferences.d/kolla-custom {'name': 'docker-ce', 'url': 'https://download.docker.com/linux/debian/gpg'}, {'name': 'fluentd', 'url': 'https://fluentd.cdn.cncf.io/GPG-KEY-fluent-package'}, {'name': 'grafana', 'url': 'https://rpm.grafana.com/gpg.key'}, - {'name': 'influxdb', 'url': 'https://repos.influxdata.com/influxdata-archive_compat.key'}, + {'name': 'influxdb', 'url': 'https://repos.influxdata.com/influxdata-archive.key'}, {'name': 'mariadb', 'url': 'https://downloads.mariadb.com/MariaDB/mariadb-keyring-2019.gpg', 'type': 'gpg'}, {'name': 'opensearch', 'url': 'https://artifacts.opensearch.org/publickeys/opensearch-release.pgp'}, {'name': 'proxysql', 'url': 'https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key'}, diff --git a/docker/base/apt_preferences.debian b/docker/base/apt_preferences.debian index 5edb8814a..08e21ff22 100644 --- a/docker/base/apt_preferences.debian +++ b/docker/base/apt_preferences.debian @@ -1,4 +1,4 @@ # NOTE(hrw): we do not want backports unless requested Package: * -Pin: release n=bookworm-backports +Pin: release n=trixie-backports Pin-Priority: -1000 diff --git a/docker/base/debian.sources b/docker/base/debian.sources new file mode 100644 index 000000000..28c61c81d --- /dev/null +++ b/docker/base/debian.sources @@ -0,0 +1,13 @@ +Types: deb +# http://snapshot.debian.org/archive/debian/20251020T000000Z +URIs: http://deb.debian.org/debian +Suites: trixie trixie-updates trixie-backports +Components: main +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg + +Types: deb +# http://snapshot.debian.org/archive/debian-security/20251020T000000Z +URIs: http://deb.debian.org/debian-security +Suites: trixie-security +Components: main +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg diff --git a/docker/base/sources.list.debian b/docker/base/sources.list.debian deleted file mode 100644 index 89f7a1160..000000000 --- a/docker/base/sources.list.debian +++ /dev/null @@ -1,11 +0,0 @@ -# Default repos -deb http://deb.debian.org/debian bookworm main - -# debian security updates -deb http://deb.debian.org/debian-security bookworm-security main - -# debian updates -deb http://deb.debian.org/debian bookworm-updates main - -# debian backports -deb http://deb.debian.org/debian bookworm-backports main diff --git a/docker/base/sources.list.ubuntu b/docker/base/sources.list.ubuntu deleted file mode 100644 index 6542433e3..000000000 --- a/docker/base/sources.list.ubuntu +++ /dev/null @@ -1,15 +0,0 @@ -# For non-x86 architectures we use sources.list.ubuntu.<arch> - -# Default repos -deb mirror://mirrors.ubuntu.com/mirrors.txt noble main universe -deb mirror://mirrors.ubuntu.com/mirrors.txt noble-updates main universe -deb mirror://mirrors.ubuntu.com/mirrors.txt noble-backports main universe -deb mirror://mirrors.ubuntu.com/mirrors.txt noble-security main universe - -# We need to add the repo for the updated packages they provide. The main ones -# are qemu, libvirt, and openvswitch. -deb http://ubuntu-cloud.archive.canonical.com/ubuntu noble-updates/flamingo main - -# NOTE(hrw): extra repositories are added into image when they are needed as -# separate files in /etc/apt/sources.list.d/ directory. For that purpose they -# are defined in kolla/template/repos.yaml file. diff --git a/docker/base/sources.list.ubuntu.aarch64 b/docker/base/sources.list.ubuntu.aarch64 deleted file mode 100644 index d4cfbe20f..000000000 --- a/docker/base/sources.list.ubuntu.aarch64 +++ /dev/null @@ -1,15 +0,0 @@ -# Default repos -deb http://ports.ubuntu.com/ noble main universe -deb http://ports.ubuntu.com/ noble-updates main universe -deb http://ports.ubuntu.com/ noble-security main universe - -# Backports have a lower priority and must be explicitly installed to be used -deb http://ports.ubuntu.com/ noble-backports main universe - -# We need to add the repo for the updated packages they provide. The main ones -# are qemu, libvirt, and openvswitch. -deb http://ubuntu-cloud.archive.canonical.com/ubuntu noble-updates/flamingo main - -# NOTE(hrw): extra repositories are added into image when they are needed as -# separate files in /etc/apt/sources.list.d/ directory. For that purpose they -# are defined in kolla/template/repos.yaml file. diff --git a/docker/base/ubuntu.sources b/docker/base/ubuntu.sources new file mode 100644 index 000000000..f8f609cee --- /dev/null +++ b/docker/base/ubuntu.sources @@ -0,0 +1,24 @@ +Types: deb +URIs: http://archive.ubuntu.com/ubuntu/ +Suites: noble noble-updates noble-backports +Components: main universe +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg + +## Ubuntu security updates. Aside from URIs and Suites, +## this should mirror your choices in the previous section. +Types: deb +URIs: http://security.ubuntu.com/ubuntu/ +Suites: noble-security +Components: main universe +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg + +## Ubuntu Cloud Archive +Types: deb +URIs: http://ubuntu-cloud.archive.canonical.com/ubuntu +Suites: noble-updates/gazpacho +Components: main +Signed-By: /usr/share/keyrings/ubuntu-cloud-keyring.gpg + +# NOTE(hrw): extra repositories are added into image when they are needed as +# separate files in /etc/apt/sources.list.d/ directory. For that purpose they +# are defined in kolla/template/repos.yaml file. diff --git a/docker/base/ubuntu.sources.arm64 b/docker/base/ubuntu.sources.arm64 new file mode 100644 index 000000000..751af7ccf --- /dev/null +++ b/docker/base/ubuntu.sources.arm64 @@ -0,0 +1,24 @@ +Types: deb +URIs: http://ports.ubuntu.com/ubuntu-ports/ +Suites: noble noble-updates noble-backports +Components: main universe +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg + +## Ubuntu security updates. Aside from URIs and Suites, +## this should mirror your choices in the previous section. +Types: deb +URIs: http://ports.ubuntu.com/ubuntu-ports/ +Suites: noble-security +Components: main universe +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg + +## Ubuntu Cloud Archive +Types: deb +URIs: http://ubuntu-cloud.archive.canonical.com/ubuntu +Suites: noble-updates/gazpacho +Components: main +Signed-By: /usr/share/keyrings/ubuntu-cloud-keyring.gpg + +# NOTE(hrw): extra repositories are added into image when they are needed as +# separate files in /etc/apt/sources.list.d/ directory. For that purpose they +# are defined in kolla/template/repos.yaml file. diff --git a/docker/bifrost/bifrost-base/Dockerfile.j2 b/docker/bifrost/bifrost-base/Dockerfile.j2 index e31a12b32..a84f0e0e3 100644 --- a/docker/bifrost/bifrost-base/Dockerfile.j2 +++ b/docker/bifrost/bifrost-base/Dockerfile.j2 @@ -19,22 +19,10 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {# NOTE(mgoddard): EPEL required for nginx #} {{ macros.enable_extra_repos(['epel']) }} - - {% set bifrost_base_packages = bifrost_base_packages + [ - 'python3.12', - 'python3.12-devel' - ] %} {% endif %} {{ macros.install_packages(bifrost_base_packages | customizable("packages")) }} -{# Ensure we use Python 3.12 on RPM-based systems #} -{% if base_package_type == 'rpm' %} -RUN cd /usr/bin && \ - rm -f python3 && \ - ln -s python3.12 python3 -{% endif %} - ENV VENV {{ venv_path }} {% set bifrost_base_pip_packages = [ @@ -47,12 +35,7 @@ COPY build_arg.yml /tmp/build_arg.yml RUN mkdir -p /requirements \ && curl -o /requirements/upper-constraints.txt ${UPPER_CONSTRAINTS_FILE:-https://releases.openstack.org/constraints/upper/{{ openstack_release }}} \ && python3 -m venv --system-site-packages {{ venv_path }} \ - && KOLLA_DISTRO_PYTHON_VERSION=$(/usr/bin/python3 -c "import sys; print('{}.{}'.format(sys.version_info.major, sys.version_info.minor))") \ - && cd {{ venv_path }}/lib \ - && rm -f python3 \ - && ln -s python${KOLLA_DISTRO_PYTHON_VERSION} python3 - -RUN ln -s bifrost-base-source/* bifrost \ + && ln -s bifrost-base-source/* bifrost \ && {{ macros.install_pip(['pip', 'wheel', 'setuptools']) }} \ && {{ macros.install_pip(bifrost_base_pip_packages | customizable("pip_packages")) }} @@ -67,7 +50,7 @@ RUN apt-get --error-on=any update && \ {%- else %} RUN echo " " && \ {%- endif %} - bash -c '$VENV/bin/pip install "ansible>=12,<13" && \ + bash -c '$VENV/bin/pip install "ansible>=12,<14" && \ $VENV/bin/ansible-galaxy collection install -r /bifrost/ansible-collections-requirements.yml && \ $VENV/bin/ansible-playbook -vvvv -i /bifrost/playbooks/inventory/target \ /bifrost/playbooks/install.yaml \ diff --git a/docker/glance/glance-api/Dockerfile.j2 b/docker/glance/glance-api/Dockerfile.j2 index 992fc0996..045efb6ae 100644 --- a/docker/glance/glance-api/Dockerfile.j2 +++ b/docker/glance/glance-api/Dockerfile.j2 @@ -11,6 +11,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% set glance_api_packages = [ 'lsscsi', 'device-mapper-multipath', + 'nvme-cli', 'qemu-img' ] %} {% elif base_package_type == 'deb' %} @@ -18,6 +19,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build 'lsscsi', 'multipath-tools', 'nfs-common', + 'nvme-cli', 'qemu-utils' ] %} {% endif %} diff --git a/docker/haproxy/haproxy-ssh/extend_start.sh b/docker/haproxy/haproxy-ssh/extend_start.sh index 421e4bd6f..4b2239100 100644 --- a/docker/haproxy/haproxy-ssh/extend_start.sh +++ b/docker/haproxy/haproxy-ssh/extend_start.sh @@ -1,6 +1,6 @@ #!/bin/bash -SSH_HOST_KEY_TYPES=( "rsa" "dsa" "ecdsa" "ed25519" ) +SSH_HOST_KEY_TYPES=( "rsa" "ecdsa" "ed25519" ) for key_type in ${SSH_HOST_KEY_TYPES[@]}; do KEY_PATH=/etc/ssh/ssh_host_${key_type}_key diff --git a/docker/horizon/Dockerfile.j2 b/docker/horizon/Dockerfile.j2 index f2cb0b433..c7d6f8aa2 100644 --- a/docker/horizon/Dockerfile.j2 +++ b/docker/horizon/Dockerfile.j2 @@ -36,7 +36,8 @@ ADD horizon-archive /horizon-source ADD plugins-archive / {% set horizon_pip_packages = [ - '/horizon' + '/horizon', + 'django_redis' ] %} {% set horizon_plugins_pip_packages = [ @@ -49,10 +50,13 @@ COPY extend_start.sh /usr/local/bin/kolla_extend_start # NOTE(kevko): This dance with local settings python paths below is needed # because we are using different distros with different python version and we need to # know to which path symlink should point to. -# NOTE(mnasiadka): pinning setuptools due to https://bugs.launchpad.net/horizon/+bug/2007574 +# NOTE(bbezak): pin setuptools for pip build isolation due to +# https://bugs.launchpad.net/horizon/+bug/2141293 RUN ln -s horizon-source/* horizon \ && {{ macros.upper_constraints_remove("horizon") }} \ - && {{ macros.install_pip(horizon_pip_packages | customizable("pip_packages")) }} \ + && echo "setuptools<82" > /tmp/horizon-build-constraints.txt \ + && PIP_BUILD_CONSTRAINT=/tmp/horizon-build-constraints.txt \ + {{ macros.install_pip(horizon_pip_packages | customizable("pip_packages")) }} \ && mkdir -p /etc/openstack-dashboard \ && cp -r /horizon/openstack_dashboard/conf/* /etc/openstack-dashboard/ \ && cp /horizon/openstack_dashboard/local/local_settings.py.example /etc/openstack-dashboard/local_settings.py \ diff --git a/docker/httpd/Dockerfile.j2 b/docker/httpd/Dockerfile.j2 new file mode 100644 index 000000000..a41465661 --- /dev/null +++ b/docker/httpd/Dockerfile.j2 @@ -0,0 +1,44 @@ +FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }} +{% block labels %} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" +{% endblock %} + +{% block apache_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{% if base_package_type == 'rpm' %} +{# NOTE(mnasiadka): mod_auth_mellon missing in CentOS 10 Stream - temporarily from Kolla COPR #} +{{ macros.enable_extra_repos(['epel', 'kolla_el10']) }} + {% set apache_packages = [ + 'httpd', + 'mod_ssl', + 'mod_auth_mellon', + 'mod_auth_openidc', + 'mod_proxy_uwsgi' + ] %} +{% elif base_package_type == 'deb' %} + {% set apache_packages = [ + 'apache2', + 'ca-certificates', + 'libapache2-mod-auth-mellon', + 'libapache2-mod-auth-openidc' + ] %} +{% endif %} + +{{ macros.install_packages(apache_packages | customizable("packages")) }} + +{% if base_package_type == 'rpm' %} +RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \ + && sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf +{% elif base_package_type == 'deb' %} +RUN echo > /etc/apache2/ports.conf +{% endif %} + +COPY extend_start.sh /usr/local/bin/kolla_extend_start +RUN chmod 644 /usr/local/bin/kolla_extend_start + +USER root + +{% block apache_footer %}{% endblock %} + diff --git a/docker/httpd/extend_start.sh b/docker/httpd/extend_start.sh new file mode 100644 index 000000000..d47af64b9 --- /dev/null +++ b/docker/httpd/extend_start.sh @@ -0,0 +1 @@ +. /usr/local/bin/kolla_httpd_setup diff --git a/docker/influxdb/Dockerfile.j2 b/docker/influxdb/Dockerfile.j2 deleted file mode 100644 index 060973dd6..000000000 --- a/docker/influxdb/Dockerfile.j2 +++ /dev/null @@ -1,29 +0,0 @@ -FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }} -{% block labels %} -LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" -{% endblock %} - -{% block influxdb_header %}{% endblock %} - -{% import "macros.j2" as macros with context %} - -{{ macros.configure_user(name='influxdb') }} - -{{ macros.enable_extra_repos(['influxdb']) }} - -{% set influxdb_packages = ['influxdb'] %} -{{ macros.install_packages(influxdb_packages | customizable("packages")) }} - -COPY influxdb_sudoers /etc/sudoers.d/kolla_influxdb_sudoers -COPY extend_start.sh /usr/local/bin/kolla_extend_start - -RUN chmod 750 /etc/sudoers.d \ - && chmod 440 /etc/sudoers.d/kolla_influxdb_sudoers \ - && chmod 644 /usr/local/bin/kolla_extend_start - -{{ macros.kolla_patch_sources() }} - -{% block influxdb_footer %}{% endblock %} -{% block footer %}{% endblock %} - -USER influxdb diff --git a/docker/influxdb/extend_start.sh b/docker/influxdb/extend_start.sh deleted file mode 100644 index 42a3c4607..000000000 --- a/docker/influxdb/extend_start.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -# Create log directory, with appropriate permissions -INFLUXDB_LOG_DIR=/var/log/kolla/influxdb - -if [[ ! -d "${INFLUXDB_LOG_DIR}" ]]; then - mkdir -p ${INFLUXDB_LOG_DIR} -fi -if [[ $(stat -c %a ${INFLUXDB_LOG_DIR}) != "755" ]]; then - chmod 755 ${INFLUXDB_LOG_DIR} -fi diff --git a/docker/influxdb/influxdb_sudoers b/docker/influxdb/influxdb_sudoers deleted file mode 100644 index a9757b264..000000000 --- a/docker/influxdb/influxdb_sudoers +++ /dev/null @@ -1 +0,0 @@ -%kolla ALL=(root) NOPASSWD: /usr/bin/chown -R influxdb\: /var/lib/influxdb, /bin/chown -R influxdb\: /var/lib/influxdb diff --git a/docker/ironic/ironic-pxe/Dockerfile.j2 b/docker/ironic/ironic-pxe/Dockerfile.j2 index 6a2131de6..eb357610b 100644 --- a/docker/ironic/ironic-pxe/Dockerfile.j2 +++ b/docker/ironic/ironic-pxe/Dockerfile.j2 @@ -17,15 +17,10 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build 'ipxe-bootimgs-aarch64', 'mtools', 'shim-*64', + 'syslinux-tftpboot', 'tftp-server', ] %} - {% if base_arch in ['x86_64'] %} - {% set ironic_pxe_packages = ironic_pxe_packages + [ - 'syslinux-tftpboot' - ] %} - {% endif %} - {{ macros.install_packages(ironic_pxe_packages | customizable("packages")) }} {% elif base_package_type == 'deb' %} {% set ironic_pxe_packages = [ diff --git a/docker/kolla-toolbox/Dockerfile.j2 b/docker/kolla-toolbox/Dockerfile.j2 index 9f97ed386..c730c5566 100644 --- a/docker/kolla-toolbox/Dockerfile.j2 +++ b/docker/kolla-toolbox/Dockerfile.j2 @@ -40,7 +40,7 @@ COPY apt_preferences_rabbitmq.{{ base_distro }} /etc/apt/preferences.d/rabbitmq 'openvswitch${KOLLA_RPM_OVS_VERSION}', 'python3', 'python3-devel', - 'rabbitmq-server-4.1.*' + 'rabbitmq-server-4.2.*' ] %} {% elif base_package_type == 'deb' %} @@ -61,31 +61,17 @@ COPY apt_preferences_rabbitmq.{{ base_distro }} /etc/apt/preferences.d/rabbitmq {% endif %} {{ macros.install_packages(kolla_toolbox_packages | customizable("packages")) }} -{# NOTE(kevko): - In all distros, there is always a /usr/bin/python3 -> python3.X. - However, this is disrupted for RHEL-based systems because, unlike - other distros, we upgrade Python above [1], but we forget to set - the default python3 to the new python3.X. As a result also, everything - outside of the virtual environment ends up running on Python 3.9. - - So, let's correctly set python3 -> python3.X since we had to install - it and now have default python3 points to the new version. - - [1] https://review.opendev.org/c/openstack/kolla/+/924245 -#} -{% if base_package_type == 'rpm' %} -RUN cd /usr/bin && \ - rm -f python3 && \ - ln -s python3.12 python3 -{% endif %} - {% block kolla_toolbox_pip_conf %} -ENV UPPER_CONSTRAINTS_FILE=https://releases.openstack.org/constraints/upper/{{ openstack_release }} +ENV UPPER_CONSTRAINTS_FILE=/requirements/upper-constraints.txt {% endblock %} {% block kolla_toolbox_upper_constraints %} -RUN mkdir -p /requirements \ - && curl -o /requirements/upper-constraints.txt $UPPER_CONSTRAINTS_FILE \ +ADD kolla-toolbox-archive /kolla-toolbox-source + +RUN case "$UPPER_CONSTRAINTS_FILE" in \ + http*) mkdir -p /requirements && curl -LO $UPPER_CONSTRAINTS_FILE /requirements/upper-constraints.txt ;; \ + *) ln -s kolla-toolbox-source/* /requirements ;; \ + esac \ && {{ macros.upper_constraints_remove("openstacksdk") }} \ && python3 -m venv --system-site-packages {{ venv_path }} \ && KOLLA_DISTRO_PYTHON_VERSION=$(/usr/bin/python3 -c "import sys; print('{}.{}'.format(sys.version_info.major, sys.version_info.minor))") \ @@ -96,9 +82,9 @@ RUN mkdir -p /requirements \ ENV PATH {{ venv_path }}/bin:$PATH {% set kolla_toolbox_pip_packages = [ - 'ansible-core==2.19.*', + 'ansible-core==2.20.*', + 'ansible-runner', 'cmd2', - 'influxdb', 'openstacksdk', 'os-client-config', 'pbr', diff --git a/docker/kolla-toolbox/ansible.cfg b/docker/kolla-toolbox/ansible.cfg index 53708de39..ec505f4a4 100644 --- a/docker/kolla-toolbox/ansible.cfg +++ b/docker/kolla-toolbox/ansible.cfg @@ -1,3 +1,4 @@ [defaults] -remote_tmp = /tmp +inject_facts_as_vars = False log_path = /var/log/kolla/ansible.log +remote_tmp = /tmp diff --git a/docker/kolla-toolbox/requirements.yml b/docker/kolla-toolbox/requirements.yml index 0c4025d01..83c795142 100644 --- a/docker/kolla-toolbox/requirements.yml +++ b/docker/kolla-toolbox/requirements.yml @@ -1,11 +1,11 @@ --- collections: - name: ansible.posix - version: '<2' + version: '<3' - name: community.general - version: '<4' + version: '<13' - name: community.mysql - version: '<3' + version: '<5' - name: community.rabbitmq version: '<2' - name: openstack.cloud diff --git a/docker/manila/manila-share/Dockerfile.j2 b/docker/manila/manila-share/Dockerfile.j2 index 35ff6b8f4..210d8b31c 100644 --- a/docker/manila/manila-share/Dockerfile.j2 +++ b/docker/manila/manila-share/Dockerfile.j2 @@ -8,10 +8,6 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% import "macros.j2" as macros with context %} {% if base_package_type == 'rpm' %} - -{# NOTE(mnasiadka): glusterfs-fuse missing in CentOS 10 Stream - temporarily from Kolla COPR #} -{{ macros.enable_extra_repos(['ceph', 'epel', 'kolla_el10']) }} - {% set manila_share_packages = [ 'ceph-common', 'sqlite', diff --git a/docker/mariadb-server/Dockerfile.j2 b/docker/mariadb-server/Dockerfile.j2 index 8d17ff4ff..af9297396 100644 --- a/docker/mariadb-server/Dockerfile.j2 +++ b/docker/mariadb-server/Dockerfile.j2 @@ -9,19 +9,16 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {{ macros.configure_user(name='mysql') }} -{# NOTE(mnasiadka): Use AppStream version of MariaDB for now in CentOS #} - {% if base_package_type == 'rpm' %} {# NOTE(mgoddard): EPEL required for pv package #} -{{ macros.enable_extra_repos(['epel']) }} +{{ macros.enable_extra_repos(['epel', 'mariadb']) }} {% set mariadb_packages = [ 'expect', 'mariadb', 'mariadb-backup', 'mariadb-server', - 'mariadb-server-galera', 'pv', 'rsync', 'tar' @@ -36,7 +33,10 @@ RUN ln -s /usr/lib64/galera-4 /usr/lib64/galera 'expect', 'mariadb-backup', 'mariadb-client', - 'mariadb-server' + 'mariadb-server', + 'pv', + 'rsync', + 'tar' ] %} {% endif %} diff --git a/docker/neutron/neutron-base/Dockerfile.j2 b/docker/neutron/neutron-base/Dockerfile.j2 index e3d19178d..956551fbd 100644 --- a/docker/neutron/neutron-base/Dockerfile.j2 +++ b/docker/neutron/neutron-base/Dockerfile.j2 @@ -78,6 +78,7 @@ RUN chmod +x /usr/local/lib/neutron-wrappers/copy-wrappers \ && chmod +x /usr/local/lib/neutron-wrappers/delete-wrappers RUN ln -s neutron-base-source/* neutron \ + && {{ macros.upper_constraints_remove('networking-generic-switch') }} \ && {{ macros.install_pip(neutron_base_pip_packages | customizable("pip_packages")) }} \ && mkdir -p /etc/neutron \ && cp -r /neutron/etc/* /etc/neutron/ \ diff --git a/docker/nova/nova-compute-ironic/Dockerfile.j2 b/docker/nova/nova-compute-ironic/Dockerfile.j2 index b248025c8..c849dc18f 100644 --- a/docker/nova/nova-compute-ironic/Dockerfile.j2 +++ b/docker/nova/nova-compute-ironic/Dockerfile.j2 @@ -7,7 +7,11 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% import "macros.j2" as macros with context %} -{% set nova_compute_ironic_packages = ['xorriso', 'nvme-cli'] %} +{% set nova_compute_ironic_packages = [ + 'genisoimage', + 'nvme-cli', + 'xorriso' +] %} {{ macros.install_packages(nova_compute_ironic_packages | customizable("packages")) }} diff --git a/docker/nova/nova-libvirt/Dockerfile.j2 b/docker/nova/nova-libvirt/Dockerfile.j2 index d65d31584..88e4a52d6 100644 --- a/docker/nova/nova-libvirt/Dockerfile.j2 +++ b/docker/nova/nova-libvirt/Dockerfile.j2 @@ -54,6 +54,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build 'python3-rbd', 'qemu-block-extra', 'qemu-system', + 'qemu-system-modules-spice', 'qemu-utils', 'sasl2-bin', 'swtpm', diff --git a/docker/openstack-base/Dockerfile.j2 b/docker/openstack-base/Dockerfile.j2 index fafd405d5..1b5d0ae89 100644 --- a/docker/openstack-base/Dockerfile.j2 +++ b/docker/openstack-base/Dockerfile.j2 @@ -44,7 +44,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build 'git', 'libapache2-mod-wsgi-py3', 'libffi-dev', - 'libpcre3-dev', + 'libpcre2-dev', 'libpq-dev', 'libssl-dev', 'libxml2-dev', @@ -174,10 +174,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build 'simplegeneric', 'simplejson', 'six', - 'sqlalchemy-migrate', 'sqlparse', 'stevedore', - 'tooz[consul,etcd,etcd3gw,zake,redis,postgresql,mysql,zookeeper,memcached,ipc]', + 'tooz[consul,etcd,etcd3gw,redis,postgresql,mysql,zookeeper,memcached,ipc]', 'unicodecsv', 'uwsgi', 'warlock', diff --git a/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 new file mode 100644 index 000000000..7f38bae19 --- /dev/null +++ b/docker/prometheus/prometheus-valkey-exporter/Dockerfile.j2 @@ -0,0 +1,25 @@ +FROM {{ namespace }}/{{ image_prefix }}prometheus-base:{{ tag }} +{% block labels %} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" +{% endblock %} + +{% import "macros.j2" as macros with context %} + +{% block prometheus_valkey_exporter_header %}{% endblock %} + +{{ macros.install_packages(prometheus_valkey_exporter_packages | customizable("packages")) }} + +{% block prometheus_valkey_exporter_install %} +ADD prometheus-valkey-exporter-archive /prometheus-valkey-exporter-source + +RUN ln -s /prometheus-valkey-exporter-source/* prometheus-valkey-exporter \ + && cp /prometheus-valkey-exporter/redis_exporter /opt/valkey-exporter + +{% endblock %} + +{{ macros.kolla_patch_sources() }} + +{% block prometheus_valkey_exporter_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER prometheus diff --git a/docker/rabbitmq/Dockerfile.j2 b/docker/rabbitmq/Dockerfile.j2 index 4f00c818a..36feb9c25 100644 --- a/docker/rabbitmq/Dockerfile.j2 +++ b/docker/rabbitmq/Dockerfile.j2 @@ -24,7 +24,7 @@ COPY apt_preferences_rabbitmq.{{ base_distro }} /etc/apt/preferences.d/rabbitmq {% set rabbitmq_packages = [ 'erlang-27.*', - 'rabbitmq-server-4.1.*' + 'rabbitmq-server-4.2.*' ] %} {% elif base_package_type == 'deb' %} diff --git a/docker/rabbitmq/apt_preferences_rabbitmq.debian b/docker/rabbitmq/apt_preferences_rabbitmq.debian index 714f52fac..cc6404b3e 100644 --- a/docker/rabbitmq/apt_preferences_rabbitmq.debian +++ b/docker/rabbitmq/apt_preferences_rabbitmq.debian @@ -1,5 +1,5 @@ Package: rabbitmq-server -Pin: version 4.1.* +Pin: version 4.2.* Pin-Priority: 1000 Package: erlang* diff --git a/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu b/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu index 714f52fac..cc6404b3e 100644 --- a/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu +++ b/docker/rabbitmq/apt_preferences_rabbitmq.ubuntu @@ -1,5 +1,5 @@ Package: rabbitmq-server -Pin: version 4.1.* +Pin: version 4.2.* Pin-Priority: 1000 Package: erlang* diff --git a/docker/redis/redis-base/Dockerfile.j2 b/docker/redis/redis-base/Dockerfile.j2 deleted file mode 100644 index 89dccd258..000000000 --- a/docker/redis/redis-base/Dockerfile.j2 +++ /dev/null @@ -1,17 +0,0 @@ -FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }} -{% block labels %} -LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" -{% endblock %} - -{% block redis_base_header %}{% endblock %} - -{% import "macros.j2" as macros with context %} - -{{ macros.configure_user(name='redis', homedir='/run/redis') }} - -COPY extend_start.sh /usr/local/bin/kolla_extend_start -RUN chmod 644 /usr/local/bin/kolla_extend_start - -{{ macros.kolla_patch_sources() }} - -{% block redis_base_footer %}{% endblock %} diff --git a/docker/redis/redis-base/extend_start.sh b/docker/redis/redis-base/extend_start.sh deleted file mode 100644 index f5f12ac70..000000000 --- a/docker/redis/redis-base/extend_start.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -if [[ ! -d "/var/log/kolla/redis" ]]; then - mkdir -p /var/log/kolla/redis -fi - -if [[ $(stat -c %a /var/log/kolla/redis) != "755" ]]; then - chmod 755 /var/log/kolla/redis -fi diff --git a/docker/redis/redis-sentinel/Dockerfile.j2 b/docker/redis/redis-sentinel/Dockerfile.j2 deleted file mode 100644 index 83fc60df0..000000000 --- a/docker/redis/redis-sentinel/Dockerfile.j2 +++ /dev/null @@ -1,25 +0,0 @@ -FROM {{ namespace }}/{{ image_prefix }}redis-base:{{ tag }} -{% block labels %} -LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" -{% endblock %} - -{% block redis_sentinel_header %}{% endblock %} - -{% import "macros.j2" as macros with context %} - -{% if base_package_type == 'rpm' %} - {% set redis_sentinel_packages = ['redis'] %} -{% elif base_package_type == 'deb' %} - {% set redis_sentinel_packages = ['redis-sentinel'] %} -{% endif %} -{{ macros.install_packages(redis_sentinel_packages | customizable("packages")) }} - -COPY extend_start.sh /usr/local/bin/kolla_extend_start -RUN chmod 644 /usr/local/bin/kolla_extend_start - -{{ macros.kolla_patch_sources() }} - -{% block redis_sentinel_footer %}{% endblock %} -{% block footer %}{% endblock %} - -USER redis diff --git a/docker/redis/redis-sentinel/extend_start.sh b/docker/redis/redis-sentinel/extend_start.sh deleted file mode 100644 index 9044f3990..000000000 --- a/docker/redis/redis-sentinel/extend_start.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -if [[ ! -d "/var/log/kolla/redis" ]]; then - mkdir -p /var/log/kolla/redis -fi - -if [[ $(stat -c %a /var/log/kolla/redis) != "755" ]]; then - chmod 755 /var/log/kolla/redis -fi - -# The CONFIG REWRITE command rewrites the redis.conf -# file the server was started with, applying the minimal -# changes needed to make it reflect the configuration -# currently used by the server, which may be different -# compared to the original one because of the use of -# the CONFIG SET command. -# -# https://redis.io/commands/config-rewrite/ -# -# Because of above behaviour it's needed to -# hack kolla's CMD. -# -# Without this hack -# /usr/local/bin/kolla_set_configs --check -# is always reporting changed. -# -# Therefore redis-sentinel is always restarted -# even if configuration is not changed from -# kolla-ansible side. -if [ ! -z "${REDIS_CONF}" ] && [ ! -z ${REDIS_GEN_CONF} ]; then - cp ${REDIS_CONF} ${REDIS_GEN_CONF} -fi diff --git a/docker/redis/redis/Dockerfile.j2 b/docker/redis/redis/Dockerfile.j2 deleted file mode 100644 index 7e5ce923b..000000000 --- a/docker/redis/redis/Dockerfile.j2 +++ /dev/null @@ -1,22 +0,0 @@ -FROM {{ namespace }}/{{ image_prefix }}redis-base:{{ tag }} -{% block labels %} -LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" -{% endblock %} - -{% block redis_header %}{% endblock %} - -{% import "macros.j2" as macros with context %} - -{% if base_package_type == 'rpm' %} - {% set redis_packages = ['redis'] %} -{% elif base_package_type == 'deb' %} - {% set redis_packages = ['redis-server'] %} -{% endif %} -{{ macros.install_packages(redis_packages | customizable("packages")) }} - -{{ macros.kolla_patch_sources() }} - -{% block redis_footer %}{% endblock %} -{% block footer %}{% endblock %} - -USER redis diff --git a/docker/telegraf/Dockerfile.j2 b/docker/telegraf/Dockerfile.j2 deleted file mode 100644 index da431aeee..000000000 --- a/docker/telegraf/Dockerfile.j2 +++ /dev/null @@ -1,46 +0,0 @@ -FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }} -{% block labels %} -LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" -{% endblock %} - -{% block telegraf_header %}{% endblock %} - -{% import "macros.j2" as macros with context %} - -{{ macros.enable_extra_repos(['influxdb']) }} -{{ macros.configure_user(name='telegraf', homedir='/etc/telegraf') }} - -{% set telegraf_packages = [ - 'chrony', - 'net-tools', - 'telegraf' -] %} - -{% if base_package_type == 'rpm' %} - -{{ macros.enable_extra_repos(['opstools']) }} - - {% set telegraf_packages = telegraf_packages + [ - 'collectd', - ] %} -{% elif base_package_type == 'deb' %} - {% set telegraf_packages = telegraf_packages + [ - 'collectd-core', - ] %} -{% endif %} - -{{ macros.install_packages(telegraf_packages | customizable("packages")) }} - -COPY telegraf_sudoers /etc/sudoers.d/kolla_telegraf_sudoers -COPY extend_start.sh /usr/local/bin/kolla_extend_start - -RUN chmod 750 /etc/sudoers.d \ - && chmod 440 /etc/sudoers.d/kolla_telegraf_sudoers \ - && chmod 644 /usr/local/bin/kolla_extend_start - -{{ macros.kolla_patch_sources() }} - -{% block telegraf_footer %}{% endblock %} -{% block footer %}{% endblock %} - -USER telegraf diff --git a/docker/telegraf/extend_start.sh b/docker/telegraf/extend_start.sh deleted file mode 100644 index 2830da1cb..000000000 --- a/docker/telegraf/extend_start.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -TELEGRAF_LOG_DIR="/var/log/kolla/telegraf" - -if [[ ! -d "${TELEGRAF_LOG_DIR}" ]]; then - mkdir -p ${TELEGRAF_LOG_DIR} -fi -if [[ $(stat -c %a ${TELEGRAF_LOG_DIR}) != "755" ]]; then - chmod 755 ${TELEGRAF_LOG_DIR} -fi diff --git a/docker/telegraf/telegraf_sudoers b/docker/telegraf/telegraf_sudoers deleted file mode 100644 index d6e1e092f..000000000 --- a/docker/telegraf/telegraf_sudoers +++ /dev/null @@ -1 +0,0 @@ -%kolla ALL=(root) NOPASSWD: /usr/bin/chown -R telegraf\: /var/lib/telegraf, /bin/chown -R telegraf\: /var/lib/telegraf diff --git a/docker/valkey/valkey-server/Dockerfile.j2 b/docker/valkey/valkey-server/Dockerfile.j2 index 046260d7b..9d187ffbe 100644 --- a/docker/valkey/valkey-server/Dockerfile.j2 +++ b/docker/valkey/valkey-server/Dockerfile.j2 @@ -9,10 +9,10 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build {% if base_package_type == 'rpm' %} {{ macros.enable_extra_repos(['epel']) }} - {% set valkey_server_packages = ['valkey'] %} -{% elif base_package_type == 'deb' %} - {% set valkey_server_packages = ['valkey'] %} {% endif %} + +{% set valkey_server_packages = ['valkey'] %} + {{ macros.install_packages(valkey_server_packages | customizable("packages")) }} {{ macros.kolla_patch_sources() }} diff --git a/kolla/common/config.py b/kolla/common/config.py index 2ec2194ac..d66221af1 100644 --- a/kolla/common/config.py +++ b/kolla/common/config.py @@ -26,22 +26,20 @@ BASE_ARCH = ['x86_64', 'aarch64'] DEBIAN_ARCH = ['amd64', 'arm64'] DEFAULT_BASE_TAGS = { 'centos': {'name': 'quay.io/centos/centos', 'tag': 'stream10'}, - 'debian': {'name': 'debian', 'tag': 'bookworm'}, + 'debian': {'name': 'debian', 'tag': 'trixie'}, 'rocky': {'name': 'quay.io/rockylinux/rockylinux', 'tag': '10'}, 'ubuntu': {'name': 'ubuntu', 'tag': '24.04'}, } # NOTE(hrw): has to match PRETTY_NAME in /etc/os-release DISTRO_PRETTY_NAME = { 'centos': 'CentOS Stream 10', - 'debian': 'Debian GNU/Linux 12 (bookworm)', + 'debian': 'Debian GNU/Linux 13 (trixie)', 'rocky': 'Rocky Linux 10.* (Red Quartz)', 'ubuntu': 'Ubuntu 24.04.* LTS', } -OPENSTACK_RELEASE = '2025.2' -# NOTE(mnasiadka): Using Epoxy here, since Debian OpenStack builds Flamingo -# only for Trixie -OPENSTACK_RELEASE_CODENAME = 'Epoxy' +OPENSTACK_RELEASE = '2026.1' +OPENSTACK_RELEASE_CODENAME = 'Gazpacho' # TODO(mandre) check for file integrity instead of downloading from an HTTPS # source @@ -64,9 +62,8 @@ _PROFILE_OPTS = [ 'openvswitch', 'proxysql', 'rabbitmq', - 'redis', - 'storm', 'tgtd', + 'valkey', ], help='Infra images'), cfg.ListOpt('main', @@ -90,20 +87,16 @@ _PROFILE_OPTS = [ 'cloudkitty', 'designate', 'gnocchi', - 'influxdb', 'ironic', - 'kafka', 'kuryr', 'magnum', 'manila', 'masakari', 'mistral', 'octavia', - 'redis', 'tacker', - 'telegraf', 'trove', - 'zookeeper', + 'valkey', 'zun', ], help='Aux Images'), @@ -203,9 +196,7 @@ _CLI_OPTS = [ cfg.MultiOpt('regex', types.String(), positional=True, required=False, help=('Build only images matching regex and its' ' dependencies')), - cfg.StrOpt('registry', - help=('The container image registry host. The default registry' - ' host is Docker Hub')), + cfg.StrOpt('registry', help='The container image registry host'), cfg.StrOpt('save-dependency', help=('Path to the file to store the docker image' ' dependency in Graphviz dot format')), diff --git a/kolla/common/sources.py b/kolla/common/sources.py index 4073ae12a..24a0d7851 100644 --- a/kolla/common/sources.py +++ b/kolla/common/sources.py @@ -54,11 +54,11 @@ SOURCES = { 'etcd': { # NOTE(wszumski): Upgrade one minor version at a time: # https://etcd.io/docs/v3.6/upgrades/upgrade_3_6/ - 'version': '3.6.4', + 'version': '3.6.5', 'type': 'url', 'sha256': { - 'amd64': '4d5f3101daa534e45ccaf3eec8d21c19b7222db377bcfd5e5a9144155238c105', # noqa: E501 - 'arm64': '323421fa279f4f3d7da4c7f2dfa17d9e49529cb2b4cdf40899a7416bccdde42d'}, # noqa: E501 + 'amd64': '66bad39ed920f6fc15fd74adcb8bfd38ba9a6412f8c7852d09eb11670e88cac3', # noqa: E501 + 'arm64': '7010161787077b07de29b15b76825ceacbbcedcb77fe2e6832f509be102cab6b'}, # noqa: E501 'location': ('https://github.com/etcd-io/etcd/' 'releases/download/v${version}' '/etcd-v${version}-linux-${debian_arch}.tar.gz')}, @@ -156,6 +156,10 @@ SOURCES = { 'type': 'url', 'location': ('$tarballs_base/openstack/keystone/' 'keystone-${openstack_branch}.tar.gz')}, + 'kolla-toolbox': { + 'type': 'url', + 'location': ('$tarballs_base/openstack/requirements/' + 'requirements-${openstack_branch}.tar.gz')}, 'kuryr-base': { 'type': 'url', 'location': ('$tarballs_base/openstack/kuryr/' @@ -165,11 +169,11 @@ SOURCES = { 'location': ('$tarballs_base/openstack/kuryr-libnetwork/' 'kuryr-libnetwork-${openstack_branch}.tar.gz')}, 'letsencrypt-lego': { - 'version': 'v4.25.2', + 'version': 'v4.27.0', 'type': 'url', 'sha256': { - 'amd64': '6022cf99bdc310ebba21c059fcbf1cb5939e17b2f95dade6bb6f878f9590a961', # noqa: E501 - 'arm64': '3dc4bc343b265a66bb174d3dd03b769bc40c326d680b240b948d12e97ddd4bf8'}, # noqa: E501 + 'amd64': '898b58bbbca4282d706b4f204593cb94fc2ed13232777236c06dc20259bbcd02', # noqa: E501 + 'arm64': '2973b412d37e5d652a91bda1a6bf7642491e316bc0f855a614e2c996249014dc'}, # noqa: E501 'location': ('https://github.com/go-acme/lego/' 'releases/download/${version}/' 'lego_${version}_linux_${debian_arch}.tar.gz')}, @@ -178,11 +182,11 @@ SOURCES = { 'location': ('$tarballs_base/openstack/magnum/' 'magnum-${openstack_branch}.tar.gz')}, 'magnum-conductor-plugin-helm': { - 'version': 'v3.16.3', + 'version': 'v3.19.0', 'type': 'url', 'sha256': { - 'amd64': 'f5355c79190951eed23c5432a3b920e071f4c00a64f75e077de0dd4cb7b294ea', # noqa: E501 - 'arm64': '5bd34ed774df6914b323ff84a0a156ea6ff2ba1eaf0113962fa773f3f9def798'}, # noqa: E501 + 'amd64': 'a7f81ce08007091b86d8bd696eb4d86b8d0f2e1b9f6c714be62f82f96a594496', # noqa: E501 + 'arm64': '440cf7add0aee27ebc93fada965523c1dc2e0ab340d4348da2215737fc0d76ad'}, # noqa: E501 'location': ('https://get.helm.sh/helm' '-${version}-linux-${debian_arch}.tar.gz')}, 'manila-base': { @@ -271,66 +275,66 @@ SOURCES = { 'location': ('$tarballs_base/openstack/placement/' 'placement-${openstack_branch}.tar.gz')}, 'prometheus-alertmanager': { - 'version': '0.28.1', + 'version': '0.31.1', 'type': 'url', 'sha256': { - 'amd64': '5ac7ab5e4b8ee5ce4d8fb0988f9cb275efcc3f181b4b408179fafee121693311', # noqa: E501 - 'arm64': 'd8832540e5b9f613d2fd759e31d603173b9c61cc7bb5e3bc7ae2f12038b1ce4f'}, # noqa: E501 + 'amd64': '35191cbd9d4f8162458b78dd7e93990cccd246044d9a6f788adb1c66ac3ea07b', # noqa: E501 + 'arm64': '266dda88b64318c27847ef9af4ff450fc178c827550a8039420c5ca8657a4a8b'}, # noqa: E501 'location': ('https://github.com/' 'prometheus/alertmanager/' 'releases/download/v${version}/' 'alertmanager' '-${version}.linux-${debian_arch}.tar.gz')}, 'prometheus-blackbox-exporter': { - 'version': '0.27.0', + 'version': '0.28.0', 'type': 'url', 'sha256': { - 'amd64': '507a77ff411822fd6b543e8b8d9e00e1cc49408df465588cd746753bf05046e2', # noqa: E501 - 'arm64': '618f0ce44ecec617d5aab28f7e4cb930b41b45fcd3d899536d2b9653fc176e5a'}, # noqa: E501 + 'amd64': 'caf5d242fb1cf6d5cb678f3f799f22703d4fafea26b03dcbbd7e1f1825e06329', # noqa: E501 + 'arm64': '63312be0983d85e5109710a7dc93df3051157ae581853fa3655d171cc1b2806e'}, # noqa: E501 'location': ('https://github.com/' 'prometheus/blackbox_exporter/' 'releases/download/v${version}/' 'blackbox_exporter' '-${version}.linux-${debian_arch}.tar.gz')}, 'prometheus-cadvisor': { - 'version': '0.53.0', + 'version': '0.56.2', 'type': 'url', 'sha256': { - 'amd64': '999c2c77b3ae80ea00b63a876a1ed92cc68e0a307fb3c51057107101e417bd0a', # noqa: E501 - 'arm64': '8c898e2d9a9d8e3b3b8b22a1a29b4489b2a7c962d0b8bca204c4f777d3961feb'}, # noqa: E501 + 'amd64': 'ad92930f16a2f9da15190675e09eeaceb8fd38637d07a686bb0dd68695f692af', # noqa: E501 + 'arm64': 'b7a707379496fd7a7b5d2768c5c494427112f534ba5069f889af28ffe6ad11bb'}, # noqa: E501 'location': ('https://github.com/' 'google/cadvisor/' 'releases/download/v${version}/' 'cadvisor' '-v${version}-linux-${debian_arch}')}, 'prometheus-elasticsearch-exporter': { - 'version': '1.9.0', + 'version': '1.10.0', 'type': 'url', 'sha256': { - 'amd64': '472fcafab63c5a3a2dd17d9a5e9919de4741a72e4f286c1e6252f3d99cebe425', # noqa: E501 - 'arm64': 'd1ba36fe0a6b7ce84d995e728044b53cc869f6033ce0ead4601232205d850947'}, # noqa: E501 + 'amd64': '1dcf288082a25b2741e98da6c9fc012b6c821696a26c6ac57c20042f24714a74', # noqa: E501 + 'arm64': '0ff4753a975eb5611c03123d565e8aaa84e4c05f698ce0a2d6c0f437a14bfe34'}, # noqa: E501 'location': ('https://github.com/' 'prometheus-community/elasticsearch_exporter/' 'releases/download/v${version}/' 'elasticsearch_exporter' '-${version}.linux-${debian_arch}.tar.gz')}, 'prometheus-libvirt-exporter': { - 'version': '2.2.0', + 'version': '2.3.1', 'type': 'url', 'sha256': { - 'amd64': '37e26779be1ebaef2e76d7304a3d3ecfbdc232a5c57645ee0f97b13f014bd842', # noqa: E501 - 'arm64': '94ac011349d60d70c14985df2942d02ecac87c0b7c7a468133394eb1800a22b0'}, # noqa: E501 + 'amd64': '2e1657d10291059f420a467cbe3363c7353bbce9d5445f0d8d302bd96caaf0a8', # noqa: E501 + 'arm64': '676dc76766ce4a2eaa8324a3aca8cfe89711536337d3b5b862ddf141fb57a224'}, # noqa: E501 'location': ('https://github.com/' 'inovex/prometheus-libvirt-exporter/' 'releases/download/v${version}/' 'prometheus-libvirt-exporter' '-${version}.linux-${debian_arch}.tar.gz')}, 'prometheus-memcached-exporter': { - 'version': '0.15.3', + 'version': '0.15.5', 'type': 'url', 'sha256': { - 'amd64': '7e4eb9f4af3971918fbfd35fa31b74dc08b2a728f488f934d8c7c7ecced2c85f', # noqa: E501 - 'arm64': '8565c24a80e30e189479b1092d23a7cc9173fc3f3591881b34ed99c62c3ead6f'}, # noqa: E501 + 'amd64': '5b82e6579b77fae00683d10d5923329173925a5abd95a799f5489a66136b884c', # noqa: E501 + 'arm64': '609e6d7484f22fd9e405c0022a9e2d7f86eedef1cfa55772231528271082aeae'}, # noqa: E501 'location': ('https://github.com/' 'prometheus/memcached_exporter/' 'releases/download/v${version}/' @@ -348,22 +352,22 @@ SOURCES = { 'mtail' '_${version}_linux_${debian_arch}.tar.gz')}, 'prometheus-mysqld-exporter': { - 'version': '0.17.2', + 'version': '0.18.0', 'type': 'url', 'sha256': { - 'amd64': 'ef6a2322b869d7d3c1ee3493e28a939ff80b367373142b9b2f3f70a6709d00d7', # noqa: E501 - 'arm64': '7d7ba18830ca374812a75cca1519b7c2fdea6d14183787bcd1b36900cdf588ee'}, # noqa: E501 + 'amd64': '46e8f45654352bdd42d162b2b4a68f00055d45acc168f9c068235b9e3acc39c1', # noqa: E501 + 'arm64': 'abdb452600ca086b68244aadf8045fbf0b6a48dcb76eed5576995806c176f6ce'}, # noqa: E501 'location': ('https://github.com/' 'prometheus/mysqld_exporter/' 'releases/download/v${version}/' 'mysqld_exporter' '-${version}.linux-${debian_arch}.tar.gz')}, 'prometheus-node-exporter': { - 'version': '1.9.1', + 'version': '1.10.2', 'type': 'url', 'sha256': { - 'amd64': 'becb950ee80daa8ae7331d77966d94a611af79ad0d3307380907e0ec08f5b4e8', # noqa: E501 - 'arm64': '848f139986f63232ced83babe3cad1679efdbb26c694737edc1f4fbd27b96203'}, # noqa: E501 + 'amd64': 'c46e5b6f53948477ff3a19d97c58307394a29fe64a01905646f026ddc32cb65b', # noqa: E501 + 'arm64': 'de69ec8341c8068b7c8e4cfe3eb85065d24d984a3b33007f575d307d13eb89a6'}, # noqa: E501 'location': ('https://github.com/' 'prometheus/node_exporter/' 'releases/download/v${version}/' @@ -381,16 +385,27 @@ SOURCES = { 'openstack-exporter' '_${version}_linux_${debian_arch}.tar.gz')}, 'prometheus-server': { - 'version': '3.5.0', + 'version': '3.5.1', 'type': 'url', 'sha256': { - 'amd64': 'e811827af26d822afb09a4f28314f61b618b12cff5369835a67f674d8b46f39a', # noqa: E501 - 'arm64': '173389cc42bf09c4e6e54cb53fa07a5a835d7c261e14775d2183181d6e385d1c'}, # noqa: E501 + 'amd64': 'cd6aea0ab214b05838470668dfcee7d01a7d91913509a227b00401ca872423f0', # noqa: E501 + 'arm64': 'cdb1de33d6d3ed73b4633cebedb70258c29e41bd132d287d387f322a046143d2'}, # noqa: E501 'location': ('https://github.com/' 'prometheus/prometheus/' 'releases/download/v${version}/' 'prometheus' '-${version}.linux-${debian_arch}.tar.gz')}, + 'prometheus-valkey-exporter': { + 'version': '1.82.0', + 'type': 'url', + 'sha256': { + 'amd64': '2d98dd0888f46e206bf3ad1b7c1784934a3a39cd8774cf47615f4c15594547cd', # noqa: E501 + 'arm64': '13aaa6acbb145848cb97ed3bab22747e094b3f0ed22df83c8ace593e3c527c95'}, # noqa: E501 + 'location': ('https://github.com/' + 'oliver006/redis_exporter/' + 'releases/download/v${version}/' + 'redis_exporter' + '-v${version}.linux-${debian_arch}.tar.gz')}, 'skyline-apiserver': { 'type': 'url', 'location': ('$tarballs_base/openstack/skyline-apiserver/' diff --git a/kolla/common/users.py b/kolla/common/users.py index de8fc315c..623456071 100644 --- a/kolla/common/users.py +++ b/kolla/common/users.py @@ -89,7 +89,7 @@ USERS = { 'uid': 42420, 'gid': 42420, }, - 'influxdb-user': { + 'influxdb-user': { # unused user (influxdb dropped) 'uid': 42421, 'gid': 42421, }, @@ -185,7 +185,7 @@ USERS = { 'uid': 42447, 'gid': 42447, }, - 'telegraf-user': { + 'telegraf-user': { # unused user (telegraf dropped) 'uid': 42448, 'gid': 42448, }, @@ -217,7 +217,7 @@ USERS = { 'uid': 42459, 'gid': 42459, }, - 'redis-user': { + 'redis-user': { # unused user (redis dropped) 'uid': 42460, 'gid': 42460, }, diff --git a/kolla/image/kolla_worker.py b/kolla/image/kolla_worker.py index 723914f5a..680595f86 100644 --- a/kolla/image/kolla_worker.py +++ b/kolla/image/kolla_worker.py @@ -11,6 +11,8 @@ # limitations under the License. import datetime +import git +import importlib.metadata import json import os import queue @@ -42,7 +44,7 @@ PROJECT_ROOT = os.path.abspath(os.path.join( class Image(object): def __init__(self, name, canonical_name, path, parent_name='', status=Status.UNPROCESSED, parent=None, - source=None, logger=None, engine_client=None): + source=None, logger=None, engine_client=None, labels=None): self.name = name self.canonical_name = canonical_name self.path = path @@ -57,11 +59,12 @@ class Image(object): self.plugins = [] self.additions = [] self.engine_client = engine_client + self.labels = labels or {} def copy(self): c = Image(self.name, self.canonical_name, self.path, logger=self.logger, parent_name=self.parent_name, - status=self.status, parent=self.parent) + status=self.status, parent=self.parent, labels=self.labels) if self.source: c.source = self.source.copy() if self.children: @@ -143,6 +146,9 @@ class KollaWorker(object): self.image_statuses_allowed_to_fail = dict() self.maintainer = conf.maintainer self.patches_path = conf.patches_path + self.scm_labels = self._get_scm_labels() + self.build_created = (datetime.datetime.now(datetime.timezone.utc) + .strftime('%Y-%m-%dT%H:%M:%SZ')) try: self.engine_client = engine.getEngineClient(self.conf) @@ -157,6 +163,53 @@ class KollaWorker(object): LOG.info("Exception caught: {0}".format(e)) sys.exit(1) + def _get_scm_labels(self): + labels = {} + + # Method 1: Install via PIP (direct_url.json) + try: + dist = importlib.metadata.distribution('kolla') + direct_url_file = [ + p for p in dist.files if p.name == 'direct_url.json' + ] + + if direct_url_file: + content = dist.read_text('direct_url.json') + if content: + data = json.loads(content) + if 'url' in data: + labels['org.opencontainers.image.source'] = data['url'] + if 'vcs_info' in data and 'commit_id' in data['vcs_info']: + labels['org.opencontainers.image.revision'] = ( + data['vcs_info']['commit_id']) + except Exception as e: + LOG.debug(f"Could not retrieve PIP direct_url info: {e}") + + # Method 2: Fallback to Git (if PIP info is local or missing) + source = labels.get('org.opencontainers.image.source', '') + if not labels.get('org.opencontainers.image.revision') or \ + source.startswith('file:'): + try: + repo = git.Repo(PROJECT_ROOT, search_parent_directories=True) + + labels['org.opencontainers.image.revision'] = ( + repo.head.object.hexsha) + + if source.startswith('file:') or not source: + labels['org.opencontainers.image.source'] = ( + 'https://opendev.org/openstack/kolla') + + LOG.debug("Detected SCM info via Git fallback: %s", labels) + except Exception as e: + LOG.debug("Git fallback failed: %s", e) + + source_url = labels.get('org.opencontainers.image.source', '') + if source_url.startswith('file:'): + labels['org.opencontainers.image.source'] = ( + 'https://opendev.org/openstack/kolla') + + return labels + def _get_images_dir(self): possible_paths = ( PROJECT_ROOT, @@ -694,10 +747,25 @@ class KollaWorker(object): else: parent_name = '' del match + + oci_labels = self.scm_labels.copy() + oci_labels.update({ + "org.opencontainers.image.title": image_name, + "org.opencontainers.image.description": ( + "OpenStack Kolla {} image".format(image_name)), + "org.opencontainers.image.version": self.tag, + "org.opencontainers.image.created": self.build_created, + "org.opencontainers.image.authors": self.maintainer, + "org.opencontainers.image.url": ( + "https://opendev.org/openstack/kolla"), + "org.opencontainers.image.licenses": "Apache-2.0" + }) + image = Image(image_name, canonical_name, path, parent_name=parent_name, logger=utils.make_a_logger(self.conf, image_name), - engine_client=self.engine_client) + engine_client=self.engine_client, + labels=oci_labels) # NOTE(jeffrey4l): register the opts if the section didn't # register in the kolla/common/config.py file diff --git a/kolla/image/tasks.py b/kolla/image/tasks.py index 39d759390..6bee905f7 100644 --- a/kolla/image/tasks.py +++ b/kolla/image/tasks.py @@ -407,6 +407,9 @@ class BuildTask(EngineTask): buildargs = self.update_buildargs() kwargs = {} + if hasattr(image, 'labels') and image.labels: + kwargs['labels'] = image.labels + if self.conf.engine == engine.Engine.PODMAN.value: # TODO(kevko): dockerfile path is a workaround, # should be removed as soon as it will be fixed in podman-py diff --git a/kolla/image/unbuildable.py b/kolla/image/unbuildable.py index 997b4b86b..5dbc72094 100644 --- a/kolla/image/unbuildable.py +++ b/kolla/image/unbuildable.py @@ -26,14 +26,10 @@ UNBUILDABLE_IMAGES = { "hacluster-pcs", # Missing crmsh package "nova-spicehtml5proxy", # Missing spicehtml5 package "ovsdpdk", # Not supported on CentOS - "redis-base", # Missing in CS10 - "telegraf", # CS10 no opstools repo "tgtd", # Not supported on CentOS }, 'debian': { - "openvswitch-netcontrold", - # https://bugs.launchpad.net/kolla/+bug/2027668 }, 'rocky': { @@ -41,8 +37,6 @@ UNBUILDABLE_IMAGES = { "hacluster-pcs", # Missing crmsh package "nova-spicehtml5proxy", # Missing spicehtml5 package "ovsdpdk", # Not supported on CentOS - "redis-base", # Missing in Rocky10 - "telegraf", # CS10 no opstools repo "tgtd", # Not supported on CentOS }, diff --git a/kolla/template/repos.yaml b/kolla/template/repos.yaml index 6739c9bd1..d559f6f09 100644 --- a/kolla/template/repos.yaml +++ b/kolla/template/repos.yaml @@ -27,39 +27,40 @@ deb: debian: erlang: url: "https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang/ubuntu" - suite: "jammy" + suite: "noble" component: "main" gpg_key: "erlang-ppa.gpg" docker-ce: url: "https://download.docker.com/linux/debian" - suite: "bookworm" + suite: "trixie" component: "stable" gpg_key: "docker-ce.asc" fluentd: - url: "https://fluentd.cdn.cncf.io/lts/6/debian/bookworm" - suite: "bookworm" + url: "https://fluentd.cdn.cncf.io/lts/6/debian/trixie" + suite: "trixie" component: "contrib" gpg_key: "fluentd.asc" + # NOTE(mnasiadka): 11.4 does not have trixie builds yet mariadb: url: "https://dlm.mariadb.com/repo/mariadb-server/11.4/repo/debian" suite: "bookworm" component: "main" gpg_key: "mariadb.gpg" proxysql: - url: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/bookworm/" + url: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/trixie/" suite: "./" component: "" gpg_key: "proxysql.asc" rabbitmq: - url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian" - suite: "bookworm" + url: "https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie/" + suite: "trixie" component: "main" gpg_key: "rabbitmq.gpg" debian-aarch64: rabbitmq: - url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian" - suite: "bookworm" + url: "https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie" + suite: "trixie" component: "main" # NOTE(mnasiadka): Since rabbitmq is really noarch and community mirror is not # syncing binary-aarch64 - we're using amd64 here. @@ -93,14 +94,14 @@ ubuntu: component: "" gpg_key: "proxysql.asc" rabbitmq: - url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu" + url: "https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble" suite: "noble" component: "main" gpg_key: "rabbitmq.gpg" ubuntu-aarch64: rabbitmq: - url: "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu" + url: "https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/noble" suite: "noble" component: "main" # NOTE(mnasiadka): Since rabbitmq is really noarch and community mirror is not @@ -111,7 +112,7 @@ ubuntu-aarch64: rpm: ceph: gpgkey: "https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage" - metalink: "https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-9-stream&arch=$basearch" + metalink: "https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-10-stream&arch=$basearch" name: "centos-ceph-squid" crb: distro: True @@ -146,7 +147,7 @@ rpm: distro: true influxdb: baseurl: "https://repos.influxdata.com/rhel/9/$basearch/stable" - gpgkey: "https://repos.influxdata.com/influxdata-archive_compat.key" + gpgkey: "https://repos.influxdata.com/influxdata-archive.key" name: "influxdb" kolla_el10: baseurl: "https://download.copr.fedorainfracloud.org/results/@openstack-kolla/el10-missing/epel-10-$basearch/" @@ -160,7 +161,7 @@ rpm: baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/yum" gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" repo_gpgcheck: 1 - name: "opensearch32.x" + name: "opensearch-3.x" opensearch-dashboards: baseurl: "https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.x/yum" gpgkey: "https://artifacts.opensearch.org/publickeys/opensearch-release.pgp" @@ -174,7 +175,7 @@ rpm: distro: True name: "opstools" proxysql: - baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/9" + baseurl: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/almalinux/10" gpgkey: "https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key" name: "proxysql" rabbitmq: diff --git a/kolla/tests/test_methods.py b/kolla/tests/test_methods.py index 6559c5d4d..e1dc810d1 100644 --- a/kolla/tests/test_methods.py +++ b/kolla/tests/test_methods.py @@ -58,7 +58,7 @@ class MethodsTest(base.TestCase): expectCmd += ">>/etc/yum.repos.d/ceph.repo && " expectCmd += "echo 'gpgkey=https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage' " # noqa: E501 expectCmd += ">>/etc/yum.repos.d/ceph.repo && " - expectCmd += "echo 'metalink=https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-9-stream&arch=$basearch' " # noqa: E501 + expectCmd += "echo 'metalink=https://mirrors.centos.org/metalink?repo=centos-storage-sig-ceph-squid-10-stream&arch=$basearch' " # noqa: E501 expectCmd += ">>/etc/yum.repos.d/ceph.repo" self.assertEqual(expectCmd, result) @@ -191,13 +191,13 @@ class MethodsTest(base.TestCase): } result = methods.handle_repos(template_vars, ["rabbitmq"], "enable") - expectCmd = "RUN echo 'Uris: https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian' " # noqa: E501 + expectCmd = "RUN echo 'Uris: https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie' " # noqa: E501 expectCmd += ">/etc/apt/sources.list.d/rabbitmq.sources && " expectCmd += "echo 'Components: main' " expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && " expectCmd += "echo 'Types: deb' " expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && " - expectCmd += "echo 'Suites: bookworm' " + expectCmd += "echo 'Suites: trixie' " expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && " expectCmd += "echo 'Signed-By: /etc/kolla/apt-keys/rabbitmq.gpg' " expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && " @@ -236,13 +236,13 @@ class MethodsTest(base.TestCase): expectCmd += ">>/etc/apt/sources.list.d/grafana.sources && " expectCmd += "echo 'Uris: " - expectCmd += "https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/debian' " # noqa: E501 + expectCmd += "https://deb1.rabbitmq.com/rabbitmq-server/debian/trixie/' " # noqa: E501 expectCmd += ">/etc/apt/sources.list.d/rabbitmq.sources && " expectCmd += "echo 'Components: main' " expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && " expectCmd += "echo 'Types: deb' " expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && " - expectCmd += "echo 'Suites: bookworm' " + expectCmd += "echo 'Suites: trixie' " expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources && " expectCmd += "echo 'Signed-By: /etc/kolla/apt-keys/rabbitmq.gpg' " expectCmd += ">>/etc/apt/sources.list.d/rabbitmq.sources" diff --git a/releasenotes/notes/add-oci-standard-labels-f68cc6eb3a4db7c7.yaml b/releasenotes/notes/add-oci-standard-labels-f68cc6eb3a4db7c7.yaml new file mode 100644 index 000000000..e9ba30dfb --- /dev/null +++ b/releasenotes/notes/add-oci-standard-labels-f68cc6eb3a4db7c7.yaml @@ -0,0 +1,10 @@ +--- +features: + - | + Implemented support for Open Container Initiative (OCI) standard labels + in generated container images. + + Kolla images are now tagged with standard metadata to improve traceability + and observability. The build process automatically detects source + information and populates labels such as build creation time, version, + source URL, and commit revision. diff --git a/releasenotes/notes/add-valkey-exporter-e21762a106307538.yaml b/releasenotes/notes/add-valkey-exporter-e21762a106307538.yaml new file mode 100644 index 000000000..78cf5d4f8 --- /dev/null +++ b/releasenotes/notes/add-valkey-exporter-e21762a106307538.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Adds support for Valkey monitoring by introducing a new + ``prometheus-valkey-exporter`` container image. diff --git a/releasenotes/notes/ansible-core-2-20-bd912e1767d5f197.yaml b/releasenotes/notes/ansible-core-2-20-bd912e1767d5f197.yaml new file mode 100644 index 000000000..bf7ac0e7d --- /dev/null +++ b/releasenotes/notes/ansible-core-2-20-bd912e1767d5f197.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Version of ``ansible-core`` in ``kolla-toolbox`` has been updated to + ``2.20``. diff --git a/releasenotes/notes/bug-2035975-94c5670049a7e1a6.yaml b/releasenotes/notes/bug-2035975-94c5670049a7e1a6.yaml new file mode 100644 index 000000000..2c4186576 --- /dev/null +++ b/releasenotes/notes/bug-2035975-94c5670049a7e1a6.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Fix missing nvme-cli package in Glance container. + `LP#2035975 <https://launchpad.net/bugs/2035975>`__ diff --git a/releasenotes/notes/bug-2093414-12e2d0f21e34bc59.yaml b/releasenotes/notes/bug-2093414-12e2d0f21e34bc59.yaml new file mode 100644 index 000000000..0cf23f330 --- /dev/null +++ b/releasenotes/notes/bug-2093414-12e2d0f21e34bc59.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + Adds the ``django-redis`` package to the Horizon image. + This enables using Redis or Valkey as a Django cache and + session backend. + `LP#2093414 <https://launchpad.net/bugs/2093414>`__ diff --git a/releasenotes/notes/bug-2132960-genisoimage_package_nova-compute-ironic-28f4c262ec201f99.yaml b/releasenotes/notes/bug-2132960-genisoimage_package_nova-compute-ironic-28f4c262ec201f99.yaml new file mode 100644 index 000000000..beffc2df0 --- /dev/null +++ b/releasenotes/notes/bug-2132960-genisoimage_package_nova-compute-ironic-28f4c262ec201f99.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Add missing genisoimage package to nova-compute-ironic + container to fix ironic baremetal provisioning error. + `LP#2132960 <https://bugs.launchpad.net/kolla/+bug/2132960>`__ diff --git a/releasenotes/notes/deb822-3f0435dfce6da841.yaml b/releasenotes/notes/deb822-3f0435dfce6da841.yaml new file mode 100644 index 000000000..572248317 --- /dev/null +++ b/releasenotes/notes/deb822-3f0435dfce6da841.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + ``base`` container image sources.list for Debian and Ubuntu have been + reworked to use ``deb822`` and now are called ``debian.sources`` and + ``ubuntu.sources``. diff --git a/releasenotes/notes/debian-trixie-23987480043dc662.yaml b/releasenotes/notes/debian-trixie-23987480043dc662.yaml new file mode 100644 index 000000000..68555cfea --- /dev/null +++ b/releasenotes/notes/debian-trixie-23987480043dc662.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Debian ``trixie`` is now used instead of ``bookworm``. Trixie is the current + stable release of Debian. diff --git a/releasenotes/notes/debian-trixie-spice-814929ed1efbcad1.yaml b/releasenotes/notes/debian-trixie-spice-814929ed1efbcad1.yaml new file mode 100644 index 000000000..eca8927dd --- /dev/null +++ b/releasenotes/notes/debian-trixie-spice-814929ed1efbcad1.yaml @@ -0,0 +1,8 @@ +--- +fixes: + - | + Debian Trixie container images require the additional + qemu-system-modules-spice operating system package for SPICE consoles + to function correctly. This package has therefore been added + to the nova-libvirt container build. Further details are available in + the bug report at `LP#2138186 <https://launchpad.net/bugs/2138186>`__. diff --git a/releasenotes/notes/deprecate-collectd-8ba94052bdc9424b.yaml b/releasenotes/notes/deprecate-collectd-8ba94052bdc9424b.yaml deleted file mode 100644 index c41b720f9..000000000 --- a/releasenotes/notes/deprecate-collectd-8ba94052bdc9424b.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -deprecations: - - | - Deprecates support for building ``collectd`` images. diff --git a/releasenotes/notes/deprecate-telegraf-db2b0b9f30591552.yaml b/releasenotes/notes/deprecate-telegraf-db2b0b9f30591552.yaml index 7aa96baff..0667f571d 100644 --- a/releasenotes/notes/deprecate-telegraf-db2b0b9f30591552.yaml +++ b/releasenotes/notes/deprecate-telegraf-db2b0b9f30591552.yaml @@ -1,4 +1,4 @@ --- deprecations: - | - Deprecates support for building ``telegraf`` images. + Deprecates support for building ``collectd`` and ``telegraf`` images. diff --git a/releasenotes/notes/drop-influxdb-cb3161a1e04fa38e.yaml b/releasenotes/notes/drop-influxdb-cb3161a1e04fa38e.yaml new file mode 100644 index 000000000..47800626e --- /dev/null +++ b/releasenotes/notes/drop-influxdb-cb3161a1e04fa38e.yaml @@ -0,0 +1,4 @@ +--- +upgrade: + - | + Support for building ``influxdb`` container images has been dropped. diff --git a/releasenotes/notes/drop-redis-d286ca1237747c48.yaml b/releasenotes/notes/drop-redis-d286ca1237747c48.yaml new file mode 100644 index 000000000..9710a37a2 --- /dev/null +++ b/releasenotes/notes/drop-redis-d286ca1237747c48.yaml @@ -0,0 +1,4 @@ +--- +upgrade: + - | + ``redis`` container image has been dropped due to migration to ``valkey``. diff --git a/releasenotes/notes/drop-telegraf-28dd961f18ed7825.yaml b/releasenotes/notes/drop-telegraf-28dd961f18ed7825.yaml new file mode 100644 index 000000000..93de985b2 --- /dev/null +++ b/releasenotes/notes/drop-telegraf-28dd961f18ed7825.yaml @@ -0,0 +1,4 @@ +--- +upgrade: + - | + Support for building ``telegraf`` container images has been dropped. diff --git a/releasenotes/notes/drop-venus-435234b3bff7f209.yaml b/releasenotes/notes/drop-venus-435234b3bff7f209.yaml index 879e494a0..b6d221842 100644 --- a/releasenotes/notes/drop-venus-435234b3bff7f209.yaml +++ b/releasenotes/notes/drop-venus-435234b3bff7f209.yaml @@ -1,5 +1,5 @@ --- upgrade: - | - Support for building ``Venus`` container images has been dropped, - following it's inactivity and producing breaking Horizon plugin builds. + Support for building ``Venus`` container images has been dropped due to the + project's inactivity and the Horizon plugin build failures it caused. diff --git a/releasenotes/notes/flamingo-prelude-b72f2599ed9d25d5.yaml b/releasenotes/notes/flamingo-prelude-b72f2599ed9d25d5.yaml new file mode 100644 index 000000000..c0b40675a --- /dev/null +++ b/releasenotes/notes/flamingo-prelude-b72f2599ed9d25d5.yaml @@ -0,0 +1,24 @@ +--- +prelude: | + The Kolla ``21.0.0`` (Flamingo) release modernises the base operating + systems and core infrastructure shipped by the containers. Highlights + include: + + * Rocky Linux 10 replaces Rocky Linux 9 as the only supported Rocky base + image, removing the Delorean/CentOS Cloud SIG dependency and tightening RPM + repository handling via ``repos.yaml`` (including a new versioned Erlang + source for aarch64). + * Data-plane services received major upgrades: ``MariaDB`` now tracks the + 11.4 LTS series with the upstream health check script and the legacy + clustercheck image removed, ``ProxySQL`` moves to 3.x, ``Bifrost`` consumes + Ansible 11, ``RabbitMQ`` advances to 4.1, and ``Gnocchi`` is updated to + 4.7.0. + * Observability components were refreshed with ``Fluentd`` 6.x LTS, + ``OpenSearch``/``OpenSearch Dashboards`` 3.x, broad ``Prometheus`` exporter + and infrastructure bumps (``etcd``, ``helm``, ``letsencrypt-lego``), and the + retirement of the ``collectd``, ``telegraf``, and ``prometheus-ovn-exporter`` + images. + * The container portfolio was streamlined: support landed for the + ``ironic-pxe-filter`` image and ``neutron-metadata-agent`` wrapper scripts, + while dormant services such as ``ironic-inspector`` and ``Venus`` were + dropped. diff --git a/releasenotes/notes/fluentd-update-8db10e760b2dc4d5.yaml b/releasenotes/notes/fluentd-update-8db10e760b2dc4d5.yaml index 6ecb744c0..7ac12764b 100644 --- a/releasenotes/notes/fluentd-update-8db10e760b2dc4d5.yaml +++ b/releasenotes/notes/fluentd-update-8db10e760b2dc4d5.yaml @@ -1,4 +1,4 @@ --- upgrade: - | - Update Fluentd to version 6.x LTS. + Updates ``Fluentd`` to the 6.x LTS series. diff --git a/releasenotes/notes/handle-deprecated-rabbitmq-package-archive-47548e7a41baa68b.yaml b/releasenotes/notes/handle-deprecated-rabbitmq-package-archive-47548e7a41baa68b.yaml new file mode 100644 index 000000000..b24cc3cdc --- /dev/null +++ b/releasenotes/notes/handle-deprecated-rabbitmq-package-archive-47548e7a41baa68b.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + `As announced in July 2025 <https://www.rabbitmq.com/blog/2025/07/16/debian-apt-repositories-are-moving>`__, + the RabbitMQ project has changed the location and signing key for their Debian and + Ubuntu packages. The repository configuration has been updated accordingly. + `LP#2131736 <https://launchpad.net/bugs/2131736>`__ diff --git a/releasenotes/notes/image-purpose-1884e00f993e09d0.yaml b/releasenotes/notes/image-purpose-1884e00f993e09d0.yaml new file mode 100644 index 000000000..0296e9e1b --- /dev/null +++ b/releasenotes/notes/image-purpose-1884e00f993e09d0.yaml @@ -0,0 +1,7 @@ +--- +prelude: > + The Kolla project publishes images to quay.io. + These are however only intended for demonstration and testing purposes. + In particular, they do not undergo any security scrutiny. If you intend to + deploy Kolla for production purposes, you are advised to create and curate your + own set of images. diff --git a/releasenotes/notes/influxdb-repo-gpg-key-04eb924f249e54a5.yaml b/releasenotes/notes/influxdb-repo-gpg-key-04eb924f249e54a5.yaml new file mode 100644 index 000000000..07b865f2c --- /dev/null +++ b/releasenotes/notes/influxdb-repo-gpg-key-04eb924f249e54a5.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Updates the InfluxDB repository GPG key from the expired + ``influxdata-archive_compat.key`` to the recommended + ``influxdata-archive.key`` as per https://repos.influxdata.com. diff --git a/releasenotes/notes/ironic-pxe-syslinux-tftpboot-3dc6415ed140dc50.yaml b/releasenotes/notes/ironic-pxe-syslinux-tftpboot-3dc6415ed140dc50.yaml new file mode 100644 index 000000000..a2764704b --- /dev/null +++ b/releasenotes/notes/ironic-pxe-syslinux-tftpboot-3dc6415ed140dc50.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Install syslinux-tftpboot in the ironic-pxe RPM image on all architectures + so TFTP boot files (pxelinux.0, chain.c32, ldlinux.c32) are present on + aarch64. diff --git a/releasenotes/notes/mariadb-11.4-b66b5baf9f5e6cd0.yaml b/releasenotes/notes/mariadb-11.4-b66b5baf9f5e6cd0.yaml index 17c0f9845..9fa74e899 100644 --- a/releasenotes/notes/mariadb-11.4-b66b5baf9f5e6cd0.yaml +++ b/releasenotes/notes/mariadb-11.4-b66b5baf9f5e6cd0.yaml @@ -1,5 +1,5 @@ --- -features: +upgrade: - | - ``MariaDB`` version has been updated to ``11.4 LTS``. - This version will be supported until 29th May 2029. + Updates ``MariaDB`` to the ``11.4`` LTS release, which is supported until + 29 May 2029. diff --git a/releasenotes/notes/opensearch-upgrade-9e263a65f015a376.yaml b/releasenotes/notes/opensearch-upgrade-9e263a65f015a376.yaml index d7e00e331..9c3f5a300 100644 --- a/releasenotes/notes/opensearch-upgrade-9e263a65f015a376.yaml +++ b/releasenotes/notes/opensearch-upgrade-9e263a65f015a376.yaml @@ -1,4 +1,4 @@ --- upgrade: - | - Update OpenSearch and OpenSearch Dashboards to version 3.x. + Updates ``OpenSearch`` and ``OpenSearch Dashboards`` to version 3.x. diff --git a/releasenotes/notes/rabbitmq-41-d881d0b6bbf46446.yaml b/releasenotes/notes/rabbitmq-41-d881d0b6bbf46446.yaml index 8046fc722..2456bcf66 100644 --- a/releasenotes/notes/rabbitmq-41-d881d0b6bbf46446.yaml +++ b/releasenotes/notes/rabbitmq-41-d881d0b6bbf46446.yaml @@ -1,4 +1,4 @@ --- upgrade: - | - ``rabbitmq`` version has been updated to ``4.1``. + Updates ``RabbitMQ`` to version ``4.1``. diff --git a/releasenotes/notes/rabbitmq-42-84cf0d09c9f33ef4.yaml b/releasenotes/notes/rabbitmq-42-84cf0d09c9f33ef4.yaml new file mode 100644 index 000000000..f30512f6e --- /dev/null +++ b/releasenotes/notes/rabbitmq-42-84cf0d09c9f33ef4.yaml @@ -0,0 +1,4 @@ +--- +upgrade: + - | + ``rabbitmq`` version has been updated to ``4.2``. diff --git a/releasenotes/notes/remove-prometheus-ovn-exporter-c5f5005b4d1a4b12.yaml b/releasenotes/notes/remove-prometheus-ovn-exporter-c5f5005b4d1a4b12.yaml index 6bac39901..04382375e 100644 --- a/releasenotes/notes/remove-prometheus-ovn-exporter-c5f5005b4d1a4b12.yaml +++ b/releasenotes/notes/remove-prometheus-ovn-exporter-c5f5005b4d1a4b12.yaml @@ -1,5 +1,5 @@ --- -deprecations: +upgrade: - | - The OVN exporter has been removed with immediate effect since 1) it isn't - used in Kolla Ansible and 2) the source repo was archived in Dec 2024. + Removes the ``prometheus-ovn-exporter`` image because it is unused by + Kolla Ansible and the upstream repository was archived in December 2024. diff --git a/releasenotes/notes/rocky-10-4111fa0160be14ab.yaml b/releasenotes/notes/rocky-10-4111fa0160be14ab.yaml index 2fccba796..98ef21f28 100644 --- a/releasenotes/notes/rocky-10-4111fa0160be14ab.yaml +++ b/releasenotes/notes/rocky-10-4111fa0160be14ab.yaml @@ -1,12 +1,12 @@ --- features: - | - Adds support for Rocky 10 as a base container image. This is the only major - version of Rocky supported from the 2025.2 release. + Adds support for Rocky Linux 10 as a base container image. From the 2025.2 + release onward, Rocky Linux 10 is the only supported Rocky Linux major version. upgrade: - | - Rocky 9 is no longer supported as a base container image. Rocky users - should migrate to Rocky 10. + Rocky Linux 9 is no longer supported as a base container image, so + deployments using Rocky Linux should migrate to Rocky Linux 10. - | - The following images were supported by Rocky 9 but lack suitable packages - in Rocky, and are no longer supported for Rocky: ``telegraf``. + The ``telegraf`` image relied on Rocky Linux 9-only packages and is therefore + unavailable for Rocky Linux-based builds. diff --git a/releasenotes/notes/rocky-ovn-25.09-345468aec8cc8073.yaml b/releasenotes/notes/rocky-ovn-25.09-345468aec8cc8073.yaml new file mode 100644 index 000000000..5af612530 --- /dev/null +++ b/releasenotes/notes/rocky-ovn-25.09-345468aec8cc8073.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Updates OVN to version 25.09 on Rocky Linux 10. diff --git a/releasenotes/notes/switch-proxysql3-base-to-almalinux10-d64c97ba1a894a34.yaml b/releasenotes/notes/switch-proxysql3-base-to-almalinux10-d64c97ba1a894a34.yaml new file mode 100644 index 000000000..bb2a0f526 --- /dev/null +++ b/releasenotes/notes/switch-proxysql3-base-to-almalinux10-d64c97ba1a894a34.yaml @@ -0,0 +1,5 @@ +--- +upgrade: + - | + Bumped ProxySQL 3.0.x repository to Almalinux 10 for Redhat family + distributions. diff --git a/releasenotes/notes/update-packages-071d1863639fe3e3.yaml b/releasenotes/notes/update-packages-071d1863639fe3e3.yaml index 8f30730d0..efe10a960 100644 --- a/releasenotes/notes/update-packages-071d1863639fe3e3.yaml +++ b/releasenotes/notes/update-packages-071d1863639fe3e3.yaml @@ -1,11 +1,13 @@ --- upgrade: - | - Update monitoring and key infrastructure components to their latest versions. - This upgrade includes several prometheus-related services, as well as Etcd and Lego. + Updates monitoring and key infrastructure components to their latest + supported versions. This covers several Prometheus exporters as well as + ``etcd``, ``helm``, and ``letsencrypt-lego``. - * etcd: 3.5.16 -> 3.6.4 - * letsencrypt-lego: 4.20.4 -> 4.25.2 + * etcd: 3.5.16 -> 3.6.5 + * helm: 3.16.3 -> 3.19.0 + * letsencrypt-lego: 4.20.4 -> 4.27.0 * prometheus-blackbox-exporter: 0.25.0 -> 0.27.0 * prometheus-cadvisor: 0.49.2 -> 0.53.0 * prometheus-elasticsearch-exporter: 1.8.0 -> 1.9.0 @@ -14,5 +16,5 @@ upgrade: * prometheus-node-exporter: 1.8.2 -> 1.9.1 * prometheus-server: 3.2.1 -> 3.5.0 (LTS) - Additionally, Prometheus-server has been switched to its Long-Term Support (LTS) - version to ensure greater stability and extended support. + Additionally, ``prometheus-server`` now tracks the Long-Term Support (LTS) + channel to provide longer maintenance windows. diff --git a/releasenotes/notes/update-prometheus-server-3.5.1-e23a9826b25573a8.yaml b/releasenotes/notes/update-prometheus-server-3.5.1-e23a9826b25573a8.yaml new file mode 100644 index 000000000..7404ee0b3 --- /dev/null +++ b/releasenotes/notes/update-prometheus-server-3.5.1-e23a9826b25573a8.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Updates Prometheus to version 3.5.1. diff --git a/releasenotes/notes/update-prometheus-services-98085e2ccf13d1fb.yaml b/releasenotes/notes/update-prometheus-services-98085e2ccf13d1fb.yaml new file mode 100644 index 000000000..f894ffef7 --- /dev/null +++ b/releasenotes/notes/update-prometheus-services-98085e2ccf13d1fb.yaml @@ -0,0 +1,16 @@ +--- +upgrade: + - | + Update Prometheus Alertmanager and exporters to the latest releases: + + * prometheus-alertmanager: 0.28.1 -> 0.31.1 + * prometheus-blackbox-exporter: 0.27.0 -> 0.28.0 + * prometheus-cadvisor: 0.53.0 -> 0.56.2 + * prometheus-elasticsearch-exporter: 1.9.0 -> 1.10.0 + * prometheus-libvirt-exporter: 2.2.0 -> 2.3.1 + * prometheus-memcached-exporter: 0.15.3 -> 0.15.5 + * prometheus-mysqld-exporter: 0.17.2 -> 0.18.0 + * prometheus-node-exporter: 1.9.1 -> 1.10.2 + + prometheus-mtail and prometheus-openstack-exporter were not updated as + there are no later stable releases. diff --git a/releasenotes/source/2024.1.rst b/releasenotes/source/2024.1.rst index 4977a4f1a..6896656be 100644 --- a/releasenotes/source/2024.1.rst +++ b/releasenotes/source/2024.1.rst @@ -3,4 +3,4 @@ =========================== .. release-notes:: - :branch: stable/2024.1 + :branch: unmaintained/2024.1 diff --git a/releasenotes/source/2025.2.rst b/releasenotes/source/2025.2.rst new file mode 100644 index 000000000..4dae18d86 --- /dev/null +++ b/releasenotes/source/2025.2.rst @@ -0,0 +1,6 @@ +=========================== +2025.2 Series Release Notes +=========================== + +.. release-notes:: + :branch: stable/2025.2 diff --git a/releasenotes/source/index.rst b/releasenotes/source/index.rst index 30aeae854..690c29a49 100644 --- a/releasenotes/source/index.rst +++ b/releasenotes/source/index.rst @@ -9,6 +9,7 @@ Contents :maxdepth: 2 unreleased + 2025.2 2025.1 2024.2 2024.1 @@ -6,7 +6,7 @@ description_file = author = OpenStack author_email = openstack-discuss@lists.openstack.org home_page = https://docs.openstack.org/kolla/latest/ -python_requires = >=3.8 +python_requires = >=3.10 license = Apache License, Version 2.0 classifier = Environment :: OpenStack @@ -18,11 +18,10 @@ classifier = Programming Language :: Python :: Implementation :: CPython Programming Language :: Python :: 3 :: Only Programming Language :: Python :: 3 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 + Programming Language :: Python :: 3.13 [files] packages = diff --git a/tests/playbooks/publish.yml b/tests/playbooks/publish.yml index aaa451b75..7c217fa37 100644 --- a/tests/playbooks/publish.yml +++ b/tests/playbooks/publish.yml @@ -37,7 +37,7 @@ url: "https://quay.io/api/v1/repository/{{ item.RepoTags.0 }}/changevisibility" method: POST headers: - Authorization: "Bearer {{ kolla_quay_io_api_oct_2025.token | trim }}" + Authorization: "Bearer {{ kolla_quay_io_api.token | trim }}" body: '{"visibility": "public"}' body_format: json loop: "{{ docker_host_info.images }}" diff --git a/tests/templates/template_overrides.j2 b/tests/templates/template_overrides.j2 index d9d89b3e0..481795cd6 100644 --- a/tests/templates/template_overrides.j2 +++ b/tests/templates/template_overrides.j2 @@ -34,16 +34,19 @@ RUN sed -i -e "s/^mirrorlist/#mirrorlist/g" -e "s/^#baseurl/baseurl/g" \ {% endraw %} {% if base_distro == "debian" %} -RUN sed -i -e "s|http://deb.debian.org|[trusted=yes] http://{{ nodepool_mirror_host }}|" \ - -e "s|http://security.debian.org|[trusted=yes] http://{{ nodepool_mirror_host }}|" \ - /etc/apt/sources.list +RUN cp /etc/apt/sources.list.d/debian.sources /tmp/ && \ + sed -i -e "s|^URIs: http://deb.debian.org/debian$|URIs: http://{{ nodepool_mirror_host }}/debian\nTrusted: yes|" \ + -e "s|^URIs: http://deb.debian.org/debian-security|URIs: http://{{ nodepool_mirror_host }}/debian-security\nTrusted: yes|" \ + /etc/apt/sources.list.d/debian.sources {% elif base_distro == "ubuntu" %} -RUN sed -i -e "s|mirror://mirrors.ubuntu.com/mirrors.txt|[trusted=yes] http://{{ nodepool_mirror_host }}/ubuntu/|" \ - -e "s|http://ports.ubuntu.com|[trusted=yes] http://{{ nodepool_mirror_host }}/ubuntu-ports|" \ - -e "s|http://ubuntu-cloud.archive.canonical.com/ubuntu|[trusted=yes] http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive|" \ - /etc/apt/sources.list +RUN cp /etc/apt/sources.list.d/ubuntu.sources /tmp/ && \ + sed -i -e "s|^URIs: http://archive.ubuntu.com/ubuntu/$|URIs: http://{{ nodepool_mirror_host }}/ubuntu/\nTrusted: yes|" \ + -e "s|^URIs: http://security.ubuntu.com/ubuntu/$|URIs: http://{{ nodepool_mirror_host }}/ubuntu/\nTrusted: yes|" \ + -e "s|^URIs: http://ports.ubuntu.com/ubuntu-ports/$|URIs: http://{{ nodepool_mirror_host }}/ubuntu-ports/\nTrusted: yes|" \ + -e "s|^URIs: http://ubuntu-cloud.archive.canonical.com/ubuntu$|URIs: http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive\nTrusted: yes|" \ + /etc/apt/sources.list.d/ubuntu.sources {% endif %} {% raw %} @@ -59,21 +62,19 @@ ENV PIP_TRUSTED_HOST= {% if use_infra_wheels_mirror | default(true) %} ENV PIP_EXTRA_INDEX_URL= {% endif %} - RUN if [ -f /usr/etc/npmrc ]; then \ unlink /usr/etc/npmrc; \ fi \ && rm -f /etc/npmrc {% if base_distro == "debian" %} -RUN sed -i -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}|http://deb.debian.org|" \ - -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}|http://security.debian.org|" \ - /etc/apt/sources.list +RUN if [ -f /tmp/debian.sources ]; then \ + mv -f /tmp/debian.sources /etc/apt/sources.list.d/debian.sources; \ + fi {% elif base_distro == "ubuntu" %} -RUN sed -i -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}/ubuntu/|mirror://mirrors.ubuntu.com/mirrors.txt|" \ - -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive|http://ubuntu-cloud.archive.canonical.com/ubuntu|" \ - -e "s|\[trusted=yes\] http://{{ nodepool_mirror_host }}/ubuntu-ports|http://ports.ubuntu.com|" \ - /etc/apt/sources.list +RUN if [ -f /tmp/ubuntu.sources ]; then \ + mv -f /tmp/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources; \ + fi {% endif %} {% raw %} {% endblock %} @@ -1,10 +1,8 @@ [tox] minversion = 3.18 envlist = pep8,py310-{docker,podman} -ignore_basepython_conflict = True [testenv] -basepython = python3 usedevelop = True allowlist_externals = find rm diff --git a/zuul.d/debian.yaml b/zuul.d/debian.yaml index cf6c847b8..bebea13b7 100644 --- a/zuul.d/debian.yaml +++ b/zuul.d/debian.yaml @@ -1,48 +1,52 @@ --- - job: - name: kolla-build-debian-bookworm + name: kolla-build-debian-trixie parent: kolla-base - nodeset: kolla-debian-bookworm-8GB + nodeset: kolla-debian-trixie-8GB - job: - name: kolla-build-debian-bookworm-podman + name: kolla-build-debian-trixie-podman parent: kolla-base-podman - nodeset: kolla-debian-bookworm-8GB + nodeset: kolla-debian-trixie-8GB - job: - name: kolla-build-debian-bookworm-arm64 - parent: kolla-build-debian-bookworm - nodeset: kolla-debian-bookworm-arm64-8GB + name: kolla-build-debian-trixie-arm64 + parent: kolla-build-debian-trixie + nodeset: kolla-debian-trixie-arm64-8GB voting: false - job: - name: kolla-publish-debian-bookworm-quay - parent: kolla-build-debian-bookworm + name: kolla-publish-debian-trixie-quay + parent: kolla-build-debian-trixie post-run: tests/playbooks/publish.yml vars: publisher: true kolla_registry: quay.io kolla_namespace: openstack.kolla secrets: - - kolla_quay_io_creds - - kolla_quay_io_api_oct_2025 + - name: kolla_quay_io_creds + secret: kolla_quay_io_creds_jan_2026 + - name: kolla_quay_io_api + secret: kolla_quay_io_api_jan_2026 - job: - name: kolla-publish-debian-bookworm-arm64-quay - parent: kolla-build-debian-bookworm-arm64 + name: kolla-publish-debian-trixie-arm64-quay + parent: kolla-build-debian-trixie-arm64 post-run: tests/playbooks/publish.yml vars: publisher: true kolla_registry: quay.io kolla_namespace: openstack.kolla secrets: - - kolla_quay_io_creds - - kolla_quay_io_api + - name: kolla_quay_io_creds + secret: kolla_quay_io_creds_jan_2026 + - name: kolla_quay_io_api + secret: kolla_quay_io_api_jan_2026 - job: - name: kolla-build-debian-bookworm-no-infra-wheels + name: kolla-build-debian-trixie-no-infra-wheels parent: kolla-build-no-infra-wheels-base - nodeset: kolla-debian-bookworm-8GB + nodeset: kolla-debian-trixie-8GB - project-template: name: kolla-build-debian @@ -50,19 +54,19 @@ Runs Kolla Debian build jobs. check: jobs: - - kolla-build-debian-bookworm - - kolla-build-debian-bookworm-podman + - kolla-build-debian-trixie + - kolla-build-debian-trixie-podman check-arm64: jobs: - - kolla-build-debian-bookworm-arm64 + - kolla-build-debian-trixie-arm64 gate: jobs: - - kolla-build-debian-bookworm - - kolla-build-debian-bookworm-podman + - kolla-build-debian-trixie + - kolla-build-debian-trixie-podman experimental: jobs: - - kolla-build-debian-bookworm-no-infra-wheels + - kolla-build-debian-trixie-no-infra-wheels periodic: jobs: - - kolla-publish-debian-bookworm-quay - - kolla-publish-debian-bookworm-arm64-quay + - kolla-publish-debian-trixie-quay + - kolla-publish-debian-trixie-arm64-quay diff --git a/zuul.d/nodesets.yaml b/zuul.d/nodesets.yaml index 5a069beb6..1c85b45fb 100644 --- a/zuul.d/nodesets.yaml +++ b/zuul.d/nodesets.yaml @@ -16,7 +16,6 @@ nodes: - name: primary label: debian-bookworm-8GB - - nodeset: name: kolla-debian-bookworm-arm64-8GB nodes: @@ -24,6 +23,18 @@ label: debian-bookworm-arm64-8GB - nodeset: + name: kolla-debian-trixie-8GB + nodes: + - name: primary + label: debian-trixie-8GB + +- nodeset: + name: kolla-debian-trixie-arm64-8GB + nodes: + - name: primary + label: debian-trixie-arm64-8GB + +- nodeset: name: kolla-rocky-10-8GB nodes: - name: primary diff --git a/zuul.d/periodics/copr.yaml b/zuul.d/periodics/copr.yaml index 77b99cf0f..5b0f9f644 100644 --- a/zuul.d/periodics/copr.yaml +++ b/zuul.d/periodics/copr.yaml @@ -6,7 +6,8 @@ timeout: 3600 run: tests/playbooks/copr-erlang-update.yml secrets: - - kolla_copr_webhooks + - name: kolla_copr_webhooks + secret: kolla_copr_webhooks_jan_2026 - project-template: name: kolla-periodic-copr diff --git a/zuul.d/rocky.yaml b/zuul.d/rocky.yaml index 1306998e9..52dedb8dd 100644 --- a/zuul.d/rocky.yaml +++ b/zuul.d/rocky.yaml @@ -29,8 +29,10 @@ kolla_registry: quay.io kolla_namespace: openstack.kolla secrets: - - kolla_quay_io_creds - - kolla_quay_io_api_oct_2025 + - name: kolla_quay_io_creds + secret: kolla_quay_io_creds_jan_2026 + - name: kolla_quay_io_api + secret: kolla_quay_io_api_jan_2026 - project-template: name: kolla-build-rocky diff --git a/zuul.d/scenarios/aio.yaml b/zuul.d/scenarios/aio.yaml index ee58ed05d..392ea7b22 100644 --- a/zuul.d/scenarios/aio.yaml +++ b/zuul.d/scenarios/aio.yaml @@ -5,18 +5,37 @@ Runs Kolla-Ansible AIO jobs on all Kolla changes. check: jobs: - - kolla-ansible-centos-10s - - kolla-ansible-debian-bookworm - - kolla-ansible-debian-bookworm-upgrade - - kolla-ansible-ubuntu-noble - - kolla-ansible-ubuntu-noble-upgrade + - kolla-ansible-centos-10s: + files: ^docker/ + - kolla-ansible-debian-trixie: + files: ^docker/ + - kolla-ansible-debian-bookworm-upgrade: + files: ^docker/ + - kolla-ansible-rocky-10: + files: ^docker/ + - kolla-ansible-rocky-10-upgrade: + files: ^docker/ + - kolla-ansible-ubuntu-noble: + files: ^docker/ + - kolla-ansible-ubuntu-noble-upgrade: + files: ^docker/ check-arm64: jobs: - - kolla-ansible-centos-10s-aarch64 - - kolla-ansible-debian-bookworm-aarch64 + - kolla-ansible-centos-10s-aarch64: + files: ^docker/ + - kolla-ansible-debian-bookworm-aarch64: + files: ^docker/ gate: jobs: - - kolla-ansible-debian-bookworm - - kolla-ansible-debian-bookworm-upgrade - - kolla-ansible-ubuntu-noble - - kolla-ansible-ubuntu-noble-upgrade + - kolla-ansible-debian-trixie: + files: ^docker/ + - kolla-ansible-debian-bookworm-upgrade: + files: ^docker/ + - kolla-ansible-rocky-10: + files: ^docker/ + - kolla-ansible-rocky-10-upgrade: + files: ^docker/ + - kolla-ansible-ubuntu-noble: + files: ^docker/ + - kolla-ansible-ubuntu-noble-upgrade: + files: ^docker/ diff --git a/zuul.d/scenarios/bifrost.yaml b/zuul.d/scenarios/bifrost.yaml index 4c4dd5465..e72f5b406 100644 --- a/zuul.d/scenarios/bifrost.yaml +++ b/zuul.d/scenarios/bifrost.yaml @@ -7,5 +7,7 @@ jobs: - kolla-ansible-debian-bookworm-bifrost: files: ^docker/bifrost/ + - kolla-ansible-rocky-10-bifrost: + files: ^docker/bifrost/ - kolla-ansible-ubuntu-noble-bifrost: files: ^docker/bifrost/ diff --git a/zuul.d/scenarios/cells.yaml b/zuul.d/scenarios/cells.yaml index 4105c48ed..474bd3ec6 100644 --- a/zuul.d/scenarios/cells.yaml +++ b/zuul.d/scenarios/cells.yaml @@ -7,5 +7,7 @@ jobs: - kolla-ansible-debian-bookworm-cells: files: ^docker/proxysql/ + - kolla-ansible-rocky-10-cells: + files: ^docker/proxysql/ - kolla-ansible-ubuntu-noble-cells: files: ^docker/proxysql/ diff --git a/zuul.d/scenarios/cephadm.yaml b/zuul.d/scenarios/cephadm.yaml index 93578439a..c41162ee8 100644 --- a/zuul.d/scenarios/cephadm.yaml +++ b/zuul.d/scenarios/cephadm.yaml @@ -9,6 +9,10 @@ files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* - kolla-ansible-debian-bookworm-cephadm-upgrade: files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* + - kolla-ansible-rocky-10-cephadm: + files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* + - kolla-ansible-rocky-10-cephadm-upgrade: + files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* - kolla-ansible-ubuntu-noble-cephadm: files: ^docker\/(base|cinder|glance|mariadb-server|openstack-base|rabbitmq)\/.* - kolla-ansible-ubuntu-noble-cephadm-upgrade: diff --git a/zuul.d/scenarios/ironic.yaml b/zuul.d/scenarios/ironic.yaml index 4484ccd7f..4c501ad32 100644 --- a/zuul.d/scenarios/ironic.yaml +++ b/zuul.d/scenarios/ironic.yaml @@ -7,5 +7,7 @@ jobs: - kolla-ansible-debian-bookworm-ironic: files: ^docker\/(base|dnsmasq|ironic|ironic-inspector|iscsid|openstack-base)\/.* + - kolla-ansible-rocky-10-ironic: + files: ^docker\/(base|dnsmasq|ironic|ironic-inspector|iscsid|openstack-base)\/.* - kolla-ansible-ubuntu-noble-ironic: files: ^docker\/(base|dnsmasq|ironic|ironic-inspector|iscsid|openstack-base)\/.* diff --git a/zuul.d/scenarios/mariadb.yaml b/zuul.d/scenarios/mariadb.yaml index 3627e11a4..f89e8f087 100644 --- a/zuul.d/scenarios/mariadb.yaml +++ b/zuul.d/scenarios/mariadb.yaml @@ -7,5 +7,7 @@ jobs: - kolla-ansible-debian-bookworm-mariadb: files: ^docker/(base|mariadb-server)/ + - kolla-ansible-rocky-10-mariadb: + files: ^docker/(base|mariadb-server)/ - kolla-ansible-ubuntu-noble-mariadb: files: ^docker/(base|mariadb-server)/ diff --git a/zuul.d/scenarios/masakari.yaml b/zuul.d/scenarios/masakari.yaml index 81c8e84dd..0974a2aff 100644 --- a/zuul.d/scenarios/masakari.yaml +++ b/zuul.d/scenarios/masakari.yaml @@ -7,5 +7,7 @@ jobs: - kolla-ansible-debian-bookworm-masakari: files: ^docker/(base|masakari|openstack-base)/ + - kolla-ansible-rocky-10-masakari: + files: ^docker/(base|masakari|openstack-base)/ - kolla-ansible-ubuntu-noble-masakari: files: ^docker/(base|masakari|openstack-base)/ diff --git a/zuul.d/scenarios/ovn.yaml b/zuul.d/scenarios/ovn.yaml index 1ca2a1d22..a531a02b4 100644 --- a/zuul.d/scenarios/ovn.yaml +++ b/zuul.d/scenarios/ovn.yaml @@ -7,5 +7,7 @@ jobs: - kolla-ansible-debian-bookworm-ovn: files: ^docker/(base|neutron|openstack-base|openvswitch|ovn)/ + - kolla-ansible-rocky-10-ovn: + files: ^docker/(base|neutron|openstack-base|openvswitch|ovn)/ - kolla-ansible-ubuntu-noble-ovn: files: ^docker/(base|neutron|openstack-base|openvswitch|ovn)/ diff --git a/zuul.d/secrets.yaml b/zuul.d/secrets.yaml index fd3fffc4e..973350100 100644 --- a/zuul.d/secrets.yaml +++ b/zuul.d/secrets.yaml @@ -1,66 +1,68 @@ --- - secret: - name: kolla_quay_io_creds + name: kolla_quay_io_creds_jan_2026 data: username: !encrypted/pkcs1-oaep - - VsvMvV5wOUfl5B2HJboWfN8mta/Tuk7PXcJf5RfKk4uXP6qYGM4dcMB9EdoJNhMCi7FeA - NrTZaxf/AjLAkgKlRhz7sPKhmR95+jrFRgEzedpcCamdPkCa+wNQEMNMd0rTwioYUEWm4 - Y+Oa2mIswy5LcUViz38MPQhf0725U5sYtH2qkuhMbU8u8vzYhSk749xtAN6I1T8ziTKKB - 3FBowFc2rSRJUQPsLLZjTxBHbrk+00p/DPoHLOz9/9Jf5U//jkqx4ziE2w1a4+x/kWlYT - BPXuRL9wWN9ci2uKuoDRRd6QHJzPIJerKG07YU4PAcS3M245rbjjUQC3n3SQJs3u4kKI8 - rZrxfbmtbfjkzRQXnhnhPk47PebpjnpEUNw6+scnQ+ELdQ0QYGsVRM4x4/ywe5CeFYVDR - whQQ1iG21FOs3iv592I7P7l4cEKqKFyx9qiV4t2fyLrHgtU+L/05iENH9igGJ0tDCQ5zT - 2F2laUWGtzUh76txuFDjpBxR3qS62g825dZXaTegkA+v6c1az23lrYTqbTRf63cuAQyYX - APPRC5QU0URXBoIbWb0ry3O5lr/uudI1ZCLN8SSJhpmZAIlviOfaxrKu9fg2YY9e0xpz9 - CMEWQ/n1EsUyL34Wv189Rvpq4M4GTvozEKsRsjY3u0ygwEUXcH2lEXGOrs+hms= + - ErjFWydLer2Pxmg9lZi+Ru2y26IT1BtfdKtueWwNM6UFb52vlbN0KTlDLMqBT9gb60KHw + pp+bUnlj0mG+LNVH9Sa93Ux7+g2j+2sh7JovPYLf4N67U+J6DgYeEqavU8KVYo/5eSr5x + ZP+YtfEg/pjhROJQW+I7FA+q3YkOHCcvX9GdiszjWhgQdGAXxPhzFsfrwZ2p7yXWoY6If + uro0SyPAFvfs9aq8s5rU4YFhCk2ToUwXz2UyJpOI6OmJCNYFZkRwi7Ot0uBBJXnKl2uSl + mq5PmliG5qWkjGCB5W+IJrlnHBQGJFuIL2mbWSASL8HdCg/X/sc6DcVjFYylAYm/nfHr8 + mM2wz9fs7mFGNcpdYnHmcJXkDV7iIOO1zNJASykR2TTSEljGI5ImlgSD2t/3ZfNExtw8o + bOZYcnHjfTjmwAymQ0mBerc8d5SaHgm3JOZ/YKrQJllR7SDRMIMnIwTzMNGbqoJ3Or9ir + v6J3u3h6AWSZhkdOYc5dnTic5VBiFgbhmyVv0j3W9CpORZMrnzpbFMaCVbgvyMZ3OYBGa + 112khOQOA7xazMTfoTOB+MSl5QeHvHJKbHYsphmPYPtjVCBAAs4PxaSAAFGLoGvG268rx + rXb2FFYk1Yb4PdYzxOByEL/1PwWTFPtjSHhYSlKQfGF45T8LvWJmgYlqTgK1c8= password: !encrypted/pkcs1-oaep - - dR2beX9Bn7O8iCqNHtWo1FWX71vy+CwffDk5rafUh5yew2OVNcVtVjVOPvHwb5zZv1LCd - MVcgIJe513dM5tQkn2H/HvN/seVu/CfHA6lg6Tj+ueW9VdUH6KiBPr+NCgQWX+Xt3sXbt - sPzfNGpvTw1ZCUp0nnudZEKPZ2jn83baNMumW8E8xPb4s2kePzINsb8sGvqy6BOk5rUIo - 7DaEwWrNnq9TTnMcWGIF+fLP5Pin7+fmvnLkT6qRN4v5FszpHYm8YCpv02nzqI1/F9HeM - P3GtkUdIPxa1+3VwZ/DSA9BWi4VG15jDtaxeZFVGQuMqQAiCx8Jqvd+xX2qugAq1m+U7W - JobDbaeTYrUmJ1zUaspPZ16RTSf9UGCTaejoSVKM9lJHv6ixtsX7UWkgFvceVrlkt7TtH - 2mqhBnXvwB6VD5d311WRUfNXz7gb60otisB5G2k/UnRnv1Mu33TPVT7XOFDpVnAvRS3lt - haJ34N7AWnDIsllvzcmVWTw3wf/6LLfOQrW2Z+vNambyR4Oc+LVUTbEvZVIU65LpOTIn3 - LfDhCLDD3VtnVOrj4UxZsjzmPbday1fziua/7f+CXsShC5erz0ZM65rMCwkjWeI6Kc63A - 0M27tl+OWHO3KkfFR4tWc3dws3r1kYjQeds0adBHyYD0eL8SJfwZkbtojAQ1JM= + - bDvuushT06Xz//YFxAaIM1AWRm8oPNGTm12kRhmuXnpvb7cANH7IjO/z5C2OvSpvNEOhl + 5IkBNcnWMI5hhS/uI41l4dBmue5QI9/SlLIIQ9XJrZFqGwbYmbvTioIBkBcvwCDU23dy6 + pr8n8xBoO6eNvRUDjN0wnFyiq5+vgD+fdsXtQAUHdh67q6WwYIkIbKSSVJAc8C9b1Fx52 + JhTGlhMFLP+8KwufwBUs1udHuGxIKdqQ2nj+3S+a7codZg20rtEqImmhecSHZ3XzxlNSE + hSMwfgrAULHtWX3lqn09n841wejnSx6R6gG2tJ3QrUr8NuZMMMlffwc/95imPtYliIvOC + MmYcBO5jDz5mvbZpl4DAGzs3Q8LcBVrsIhoVeMXW5Z/DH4cDldcXzagUR8TbWB16My9GR + jm54zuxDX0tIO1tHa+s3SftQf32fEbJSqjEszQYw81DQEoqpNauOugfP+j/5YfWTEv7im + Z8WKIkgxv7dnxOxpu6d5DfmarUHIIDyA7Pd3UprQWVPXnTpff9x8zcGhiRYfBWefhCFIM + D+ujFoYgbSO9PguPuGFMwHtt2GHSd/gkqoypz/9mLYeY83dcW6YsrpnEQRIJYyeGr54ko + 0obnRaoKKlJ9O6am06D01lNhiiG8NhreNONZTbY7h8nvJXyMfYTo0zqHTJhHiY= - secret: - name: kolla_quay_io_api_oct_2025 + name: kolla_quay_io_api_jan_2026 data: token: !encrypted/pkcs1-oaep - - oFB1aOCzcHVFgcSj/P6ZC3tEyz2QkzXOQ9T5mDSRligunVNccvMPp/l4jsku5tT5PMq7u - hGmT8EhLcEOTLUg/ABRHqeb3Kg+HdaJFoubqbZwde92miHuB+vs+BlXX9sTOusa8wvuzd - XeYfJh2hEMgEVC121GTa8gi0hmGJkuQCjoGFwtQeGCI4eqQNqiyfl5pL7x8woQGv4mb2s - B+IdGyEKTyD3G6yB7JOBHvawxH7SRh7pJayA5ihsazMCNHjwMKhPX2KjGB59CLW+ewrZW - L5ecnXP3WsSFqK+bMu4vRuwdcOaSyGK1gqlo3VH0hXG3cUOCo4Y8cNwOMK6i6SUsmcdga - c3sk7fKAyn9SNHMeSMZBjNU/bqNRMsppwftYW5ll0qHkPjzYo/6pQijv/OQ3Y30eDAQhb - SGJAfS/SLeVrO4HMR0OoEtpvnepOylKw6vv+d8nKSJ1NaCLY9aA+r71VADyauAiz0tmJQ - egZ5DrJKwr7ZNb1BqW3LgN3vDDRWqFg0hctN0e0+bypuhIbxQnR5whLuzVeAAdypQCwZB - 9vigCETV/l1aujlY6puQjoqAjqjUOSz25LvB6bUDbFbjWNDCMfy5+rccUK3O7s5MLaTd9 - xGjgEKxofFQXiJo+QRacOk6s+1DndR+g3N667UXj8o+e8yx33ipBmeS94L8DLc= + - I11kiXYFewlPo2Wujs/t8dcMMuqS52rb30WizTQBuJOi4sghsHASzgY3k5li/dwW/EYos + TmdyEfWyjrgv5y9Wi7TVYtXrXVpE5ya9ggdgMhOz1HXr3GybePlvzTqJo4kVcza3dMpIC + 6UchgV88d2DwTbCY+iropdEfh+DEZPA3nf8WQigoJM5ENTS2Fq017WjBQ5WEBDCUMkp2d + ZbNn4M1yJnfusxFKjY5BuZazVN2DNrnLA+JiaCu9+jitr1QumGN1N/6DPv4c3dr/JiBuT + 3Dd68CRJKlavfHllkGhOnzoSz9Kabo36QAyxuHd9MC2DBdIaXq2sopAv8adPq8J1uoGJ6 + GaTrlVUMhUMZIXtnO3PwvrFp10K0pia9IM7II6CdKFi9BHfiNI0G8DWqnG2JqvYBEiQWs + f22IDPoqAPGdx02U1j3DxjYJzjOl+7KDOFlRXoGs5b3Fhy8sRtpXI6vCs9oCMXZYPq8kg + aj9/tCe/QulQ6v5MQpsweaUkDVThE8oki3vhN1BQg6Ft74l+MuDMTJdDSSObXJThbmLEg + Pe47ijg8lK5Vo14pLBqUVr2lKlv4H4DgBtz8h76Cr5S2CJ7n0VoYLojWgB/KoI+A/w/7u + Eck+aULrPnRwIMaA7PU8y0vigUgP62tQh/osB9TmGpi5jDFB/mB00YUnHtJBp4= - secret: - name: kolla_copr_webhooks + name: kolla_copr_webhooks_jan_2026 data: - urls: !encrypted/pkcs1-oaep - - HVzZktKoHuCElzSojsc4u+Edrz8pKKngHVuiRKO0STX5pGbQ40QkfLJbOykMjfpE5d9q+ - wH57Vh/zFG6lYxRfHTdCYoPayaREyx9Y9isBNZTg5kKmUdpwavU1WmlaR7lAaGoy3VjgZ - UA5m0fp7nwuESex7Wi0oj3HPgYGfoMd9OIBgdXPKwo/StNVm903lOwieiTj+vx5rVf0It - ZYYT6q0+L7U5v7kE2TSrl71RDPyMEo7KpQdEgvR4inF7DVRVLUK7Usb7X/eKCqPnNTqfg - sSmQ4KWaqUIIpp1xo/Zbwm1nwweRGPadU+mIFgnmT9HMKfRy5GsNOXPn8KGc/NvgJhPlU - o5zNhfDlK7SHEja/XLjzAptnFmFJa8cYBXXL3wwRNOd+Pg8zi4WpB4pj3nEXJ7eAJP/AZ - 7IItGuUJUYm367Lt84txgc15lOSAHD0yp/wY1BH9ww01K8Ir7RldV2TnIoSpReLy6oZK6 - 9LlisAwgMr6V+Z3b+xJI/ekSyl9SKaomrQhcV3oJLsUbgexmuDVPpbhXLjnK950pQRbo1 - DxDg5cOn3oP3NUUyGanlWj4S/8UosILueXcqKqqVr9nv74phVYCSfvl6VS6ASBdp8I6Yi - q69eYtc68f5d4GQuz3BVaUWFni/ehlz98wuyyMoi0MiDK1DTIC4POqBUFJ05zw= - - H4gyRfIDNeZUaP9VDw9Ho0SA/nuoay5jY7lBZou+yVFD1UAPI7+rfz8WI04T+9zz2Wy2+ - 9CTSxTxdrBOI4ydaB41FMw48DnPYtbgtqnWKPB6da3+N4mWiAu6OoZHYxQTbc+T5z/wFG - 7wLr/701fYsiJwHFKGDcoDrigpayTyi/2mrgwKyKxZrmRFk9Bm/3I8yAjcT4VSIHR7AT+ - LqV6m/zP3nJCbIZcYhBf+COEXLuZUNaFXrixCUcCkKmGBK0pmdgUlfwq9wh9c18M/kOzr - HWrzAe33e0FDQM7o44uAzJOYmt+4UVMmgHxjJJMuq6MFX4jGgCWT1cBVoNCEcfETYl6LL - 05GVVkPGxpNraBXAgQxsYkQ0VwJWB51/NR0JkOA7Q15wp5yMWiqPxIYqnw8Pyc6eQlXAL - TP9oeNMZV6U7PhhT0BqBADindcESpvDLyov/3ssR5/KsjyLe0siSm6txOspkgMNdJIM5t - vOcjgITfjJwmkzhmBC+jkPBlIKK/T2RHnDoxnnE85tde/6s4s3bm+UAJadyFU0uf4vOad - MgN23hyNjtcBY0lbw4vx9VjngQxs99HBw7MleypvU6xIpzGhHi7N/wLhFVnMrzDSPH9hn - AmIY5AigVeUjCGK0SQ5zph0bWIqcek0te8vO13hG37rvAAD+s+qUMwLEOaHTCk= + urls: + - !encrypted/pkcs1-oaep | + bDxYK2BjxCkgskAeAHZyxXEJkomgp5k9rNEjmR2QA3ddSiI2j2C/o3FZii369X4pfH2Y6 + QAW5vieKURmkXjVbiHMjxUGlezXpiUYA0TVdpGOmVfmzz2vy42BdQZArO5Xt1TIg+aPao + aGGxF355LIGIAr1RMrD3f3ex3oLROxsmgivKGJPpetHZNOFxIfJT+54tCSL/DvEJJYORp + S1UeSB9R9MR7Dpp0WSy1FZLrzwPvMx9Tx3HY0QTrK2+T1ooFplMo7HJnvpL3Km5XykK77 + GaPmu3Irz5IGOyLZLdqaFepblMU0Xj/3/EvsaQsUA1VfR0mGoAIZTJmbdljtiBZ0nSLMn + /RrHoCk8JPM+qHtrCXglnQxzGbSzrMGbAxxIsy4CRpl2qjElxqh+nW0eimO3PVHsQfdc1 + OULS6F37G9WuTZ2jt5kiQp+aDcDlANSSUcLppvaKvlvXTUicFWF/rZZtK8/HaefaAfSwB + OWxEdC1zJnFMs5puzpvCUfJt4AaP17UCPyDdTcHwCSOdM2gaX18JgKrLoV7YXX6SEGNMX + 6nq8hNKvICsW3DHG6HEVhLZuCRhZNWEpRLv4ihuweuFAxXUcGyvysbT/3XFMEyYJ8Smvn + 3ZPd5Zk5hZKZD0V0pQocHs5d/uIfwKAb/QCZ8qtsVs+bERjSFhf9fJFguVJKFg= + - !encrypted/pkcs1-oaep | + FagelGYHE9xesRXrYBbLWwlBcM0I1NoQEPoLQ/DS4+c8aJoc//uJaW8/e/37djcYs5f8r + SU4KvyzZrQpKGA7aHEfvM6jwODF79nNwbFjfC1mQtiVJcCsYGG7KbQLrBZp9QtFdbpHvF + l5dBeE+mW7HeO+T8UifbGupgORcOPHNti/yhC8ApV8tqKZh89y7+ziKMbluvAVbCwraau + tE5NquigzMDqqAqJHUtNSIouBGE2kWIFV8Uo6gks/XGDxab49z6wY20o2BfGr/biYHCOF + F4nQ8r061T6I57GhInSNlYeS2kz1TEdT37k7u1w7WwJlRgQvqJVp802AARbiPeYEC64W+ + bK/rNOqBd+iVjEK8xKn4VsDGsU/QYMBSK6euo0Ki0G4L5ZUw8CmFiz902nS+WW1UsR9Re + 6v1T+Ir1UMiI1KQ5lJg52uzCKZpJ92UshMBxmRoRVXPrudYR+p1Fq3z22pw8vMkmWmLuk + lw2vQsUg39UwROimyApTHsXRS/pbyEvZNcuBgD3L95YofiONHYWraYJPfcuBbOrqESCjd + sHzJOC+DBHjgMUnEQs40KxaIVvSA9lIyRYTSKReUHzsJz8t6m9CARVTNrzt2OJjHignpI + lX7v5sXi1ZgUTeWaWYyzdTU71YYL5SBcCma2TJDrWo2B1JKvDRzBrIzaVewpVM= diff --git a/zuul.d/ubuntu.yaml b/zuul.d/ubuntu.yaml index 28a6ac3bb..824789287 100644 --- a/zuul.d/ubuntu.yaml +++ b/zuul.d/ubuntu.yaml @@ -24,8 +24,24 @@ kolla_registry: quay.io kolla_namespace: openstack.kolla secrets: - - kolla_quay_io_creds - - kolla_quay_io_api_oct_2025 + - name: kolla_quay_io_creds + secret: kolla_quay_io_creds_jan_2026 + - name: kolla_quay_io_api + secret: kolla_quay_io_api_jan_2026 + +- job: + name: kolla-publish-ubuntu-noble-arm64-quay + parent: kolla-build-ubuntu-noble-arm64 + post-run: tests/playbooks/publish.yml + vars: + publisher: true + kolla_registry: quay.io + kolla_namespace: openstack.kolla + secrets: + - name: kolla_quay_io_creds + secret: kolla_quay_io_creds_jan_2026 + - name: kolla_quay_io_api + secret: kolla_quay_io_api_jan_2026 - job: name: kolla-build-ubuntu-noble-no-infra-wheels @@ -53,3 +69,4 @@ periodic: jobs: - kolla-publish-ubuntu-noble-quay + - kolla-publish-ubuntu-noble-arm64-quay |
