Add RockyLinux 9 support

Depends-On: https://review.opendev.org/c/openstack/kolla-ansible/+/859570

Change-Id: I7af51d07b8a939c908aa072294061def57dd67de
This commit is contained in:
Michal Nasiadka 2022-09-27 10:18:01 +00:00
parent 2370139604
commit 0883532434
11 changed files with 162 additions and 41 deletions

View File

@ -60,6 +60,12 @@
- name: primary
label: centos-9-stream
- nodeset:
name: kolla-rockylinux-9
nodes:
- name: primary
label: rockylinux-9
- nodeset:
name: kolla-ubuntu-jammy
nodes:
@ -84,6 +90,12 @@
- name: primary
label: debian-bullseye-arm64
- nodeset:
name: kolla-rockylinux-9-aarch64
nodes:
- name: primary
label: rockylinux-9-arm64
- nodeset:
name: kolla-ubuntu-jammy-aarch64
nodes:

66
.zuul.d/rocky.yaml Normal file
View File

@ -0,0 +1,66 @@
---
- project:
check:
jobs:
- kolla-build-rocky9
- kolla-ansible-rocky9-source:
vars:
base_distro: "rocky"
kolla_python_version: "3.9"
check-arm64:
jobs:
- kolla-build-rocky9-aarch64
gate:
jobs:
- kolla-build-rocky9
- kolla-ansible-rocky9-source:
vars:
base_distro: "rocky"
kolla_python_version: "3.9"
experimental:
jobs:
- kolla-build-no-infra-wheels-rocky9
- job:
name: kolla-build-rocky9
parent: kolla-base
nodeset: kolla-rockylinux-9
vars:
base_distro: rocky
base_distro_version: 9
- job:
name: kolla-build-rocky9-aarch64
parent: kolla-build-rocky9
nodeset: kolla-rockylinux-9-aarch64
voting: false
- job:
name: kolla-build-no-infra-wheels-rocky9
parent: kolla-build-no-infra-wheels-base
nodeset: kolla-rockylinux-9
vars:
base_distro: rocky
base_distro_version: 9
- job:
name: kolla-publish-rocky9-dockerhub
parent: kolla-build-rocky9
post-run: tests/playbooks/publish.yml
vars:
publisher: true
kolla_registry: dockerhub
kolla_namespace: kolla
secrets:
- kolla_dockerhub_creds
- job:
name: kolla-publish-rocky9-quay
parent: kolla-build-rocky9
post-run: tests/playbooks/publish.yml
vars:
publisher: true
kolla_registry: quay.io
kolla_namespace: openstack.kolla
secrets:
- kolla_quay_io_creds

View File

@ -69,6 +69,7 @@ Repo files not available for CentOS Stream 9:
#}
{% set base_yum_repo_files = [
'grafana.repo',
'influxdb.repo',
'mariadb.repo',
'rabbitmq_rabbitmq-server.repo',
'td.repo',
@ -86,19 +87,16 @@ SHA1 keys are not supported in RHEL9: https://github.com/rpm-software-management
'https://downloads.mariadb.com/MariaDB/RPM-GPG-KEY-MariaDB',
'https://packages.treasuredata.com/GPG-KEY-td-agent',
'https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc',
'https://repos.influxdata.com/influxdb.key',
] %}
{% if base_arch == 'x86_64' %}
{% set base_yum_repo_files = base_yum_repo_files + [
'influxdb.repo',
'rabbitmq_rabbitmq-erlang.repo',
] %}
# FIXME(mgoddard): Not available for CentOS 8 yet.
# 'crmsh.repo',
{% set base_yum_repo_keys = base_yum_repo_keys + [
'https://repos.influxdata.com/influxdb.key',
] %}
{% elif base_arch == 'aarch64' %}
{#
Repo files not available for CentOS Stream 9:
@ -151,8 +149,6 @@ RUN rm -f /etc/rpm/macros.image-language-conf \
{% block base_centos_repo_overrides_post_rpm %}{% endblock %}
{% if base_distro == 'centos' %}
{% block base_centos_gpg_key_import %}
{% endblock %}
@ -187,13 +183,10 @@ RUN rm -f /etc/rpm/macros.image-language-conf \
'centos9-rabbitmq',
'centos9-storage',
'epel',
'influxdb',
] %}
{% if base_arch == 'x86_64' %}
{% set base_centos_yum_repos_to_disable = base_centos_yum_repos_to_disable + [
'influxdb',
] %}
{% elif base_arch == 'aarch64' %}
{% if base_arch == 'aarch64' %}
{# NOTE(hrw): delorean-deps.repo may force x86-64 repos #}
@ -211,9 +204,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) }}
{%- endif %}
{# Endif for base_distro centos #}
#### END REPO ENABLEMENT
{# We are back to the basic if conditional here which is:
@ -224,6 +214,7 @@ RUN {{ macros.install_packages(base_centos_yum_repo_packages | customizable("cen
{# NOTE(hrw): CentOS Stream 9 has curl-minimal, Rocky Linux 9 has curl so we do not install any #}
{% set base_centos_packages = [
'ca-certificates',
'crypto-policies-scripts',
'dumb-init',
'findutils',
'hostname',

View File

@ -19,12 +19,12 @@ if [[ "$(whoami)" == 'root' ]]; then
rm -rf /var/run/httpd/* /run/httpd/* /tmp/httpd*
fi
# CentOS 8 has an issue with mod_ssl which produces an invalid Apache
# CentOS/Rocky have an issue with mod_ssl which produces an invalid Apache
# configuration in /etc/httpd/conf.d/ssl.conf. This causes the following error
# on startup:
# SSLCertificateFile: file '/etc/pki/tls/certs/localhost.crt' does not exist or is empty
# Work around this by generating certificates manually.
if [[ ${KOLLA_BASE_DISTRO} = centos ]] && [[ ! -e /etc/pki/tls/certs/localhost.crt ]]; then
if [[ "${KOLLA_BASE_DISTRO}" =~ centos|rocky ]] && [[ ! -e /etc/pki/tls/certs/localhost.crt ]]; then
/usr/libexec/httpd-ssl-gencerts
fi
fi

View File

@ -7,7 +7,7 @@ function prepare_pxe_pxelinux {
cp /usr/lib/PXELINUX/pxelinux.0 \
/usr/lib/syslinux/modules/bios/{chain.c32,ldlinux.c32} \
${TFTPBOOT_PATH}/
elif [[ "${KOLLA_BASE_DISTRO}" =~ centos ]]; then
elif [[ "${KOLLA_BASE_DISTRO}" =~ centos|rocky ]]; then
if [[ "${TFTPBOOT_PATH}" != /tftpboot ]]; then
cp /tftpboot/{pxelinux.0,chain.c32,ldlinux.c32} \
${TFTPBOOT_PATH}/
@ -20,7 +20,7 @@ function prepare_pxe_grub {
if [[ "${KOLLA_BASE_DISTRO}" =~ debian|ubuntu ]]; then
shim_src_file="/usr/lib/shim/shim*64.efi.signed"
grub_src_file="/usr/lib/grub/*-efi-signed/grubnet*64.efi.signed"
elif [[ "${KOLLA_BASE_DISTRO}" =~ centos ]]; then
elif [[ "${KOLLA_BASE_DISTRO}" =~ centos|rocky ]]; then
shim_src_file="/boot/efi/EFI/centos/shim*64.efi"
grub_src_file="/boot/efi/EFI/centos/grub*64.efi"
fi
@ -51,7 +51,7 @@ function prepare_ipxe {
elif [[ ! -e ${TFTPBOOT_PATH}/snponly.efi ]]; then
ln -s ${TFTPBOOT_PATH}/ipxe.efi ${TFTPBOOT_PATH}/snponly.efi
fi
elif [[ "${KOLLA_BASE_DISTRO}" =~ centos ]]; then
elif [[ "${KOLLA_BASE_DISTRO}" =~ centos|rocky ]]; then
cp /usr/share/ipxe/{undionly.kpxe,ipxe*.efi} ${TFTPBOOT_PATH}/
if [[ ! -e ${TFTPBOOT_PATH}/ipxe.efi ]]; then
ln -s ${TFTPBOOT_PATH}/ipxe-${KOLLA_BASE_ARCH}.efi ${TFTPBOOT_PATH}/ipxe.efi

View File

@ -14,7 +14,7 @@ fi
# so no need to even use u-a on RHEL 9 family as there is one provider
# (and there is no u-a for ip6tables so script fails)
if [[ ${KOLLA_BASE_DISTRO} != "centos" ]]; then
if [[ ! ${KOLLA_BASE_DISTRO} =~ centos|rocky ]]; then
if /usr/bin/update-alternatives --display iptables; then
# NOTE(yoctozepto): Kolla-Ansible does not always set KOLLA_LEGACY_IPTABLES;
# the workaround below ensures it gets set to `false` in such cases to fix

View File

@ -21,17 +21,19 @@ from kolla.common.users import USERS
from kolla.version import version_info as version
BASE_OS_DISTRO = ['centos', 'debian', 'ubuntu']
BASE_OS_DISTRO = ['centos', 'debian', 'rocky', 'ubuntu']
BASE_ARCH = ['x86_64', 'aarch64']
DEFAULT_BASE_TAGS = {
'centos': {'name': 'quay.io/centos/centos', 'tag': 'stream9'},
'debian': {'name': 'debian', 'tag': 'bullseye'},
'rocky': {'name': 'quay.io/rockylinux/rockylinux', 'tag': '9'},
'ubuntu': {'name': 'ubuntu', 'tag': '22.04'},
}
# NOTE(hrw): has to match PRETTY_NAME in /etc/os-release
DISTRO_PRETTY_NAME = {
'centos': 'CentOS Stream 9',
'debian': 'Debian GNU/Linux 11 (bullseye)',
'rocky': 'Rocky Linux 9.0 (Blue Onyx)',
'ubuntu': 'Ubuntu 22.04',
}
OPENSTACK_RELEASE = 'master'

View File

@ -104,6 +104,17 @@ UNBUILDABLE_IMAGES = {
'debian': {
},
'rocky': {
"elasticsearch", # SHA1 gpg key
"hacluster-pcs", # Missing crmsh package
"kibana", # SHA1 gpg key
"logstash", # SHA1 gpg key
"nova-spicehtml5proxy", # Missing spicehtml5 package
"ovsdpdk", # Not supported on CentOS
"proxysql", # no binary package
"tgtd", # Not supported on CentOS
},
'ubuntu': {
"collectd", # Missing collectd-core package
"telegraf", # Missing collectd-core package
@ -629,7 +640,7 @@ class KollaWorker(object):
conf.rpm_setup_config if repo_file is not None])
self.rpm_setup = self.build_rpm_setup(rpm_setup_config)
if self.base in ['centos']:
if self.base in ['centos', 'rocky']:
self.conf.distro_python_version = "3.9"
self.distro_package_manager = 'dnf'
self.base_package_type = 'rpm'

View File

@ -135,6 +135,44 @@ debian-aarch64:
component: ""
gpg_key: "proxysql.asc"
rocky:
ceph: "centos-ceph-quincy"
crb: "crb"
elasticsearch: "elasticsearch-kibana-logstash-7.x"
epel: "epel"
erlang: "rabbitmq_rabbitmq-erlang"
extras: "extras"
grafana: "grafana"
hacluster: "highavailability"
influxdb: "influxdb"
kibana: "elasticsearch-kibana-logstash-7.x"
logstash: "elasticsearch-kibana-logstash-7.x"
mariadb: "mariadb"
openvswitch: "centos-nfv-openvswitch"
opstools: "centos-opstools"
proxysql: "proxysql"
rabbitmq: "rabbitmq_rabbitmq-server"
td-agent: "treasuredata"
rocky-aarch64:
ceph: "centos-ceph-quincy"
crb: "crb"
elasticsearch: "elasticsearch-kibana-logstash-7.x"
epel: "epel"
erlang: "centos-rabbitmq-38"
extras: "extras"
grafana: "grafana"
influxdb: "influxdb"
hacluster: "highavailability"
kibana: "elasticsearch-kibana-logstash-7.x"
logstash: "elasticsearch-kibana-logstash-7.x"
mariadb: "mariadb"
openvswitch: "centos-nfv-openvswitch"
opstools: "centos-opstools"
proxysql: "proxysql"
rabbitmq: "rabbitmq_rabbitmq-server"
td-agent: "treasuredata"
ubuntu:
elasticsearch:
url: "https://artifacts.elastic.co/packages/oss-7.x/apt"

View File

@ -0,0 +1,4 @@
---
features:
- |
Adds Rocky Linux 9 support.

View File

@ -16,7 +16,11 @@ RUN echo registry={{ nodepool_npmjs_proxy }} > /etc/npmrc \
{% raw %}
{% endblock %}
{% endraw %}
{% if base_distro == 'centos' %}
{% raw %}
{% block base_centos_repo_overrides_post_copy %}
{% endraw %}
@ -51,29 +55,30 @@ RUN sed -i \
-e "s|^\(metalink.*\)|#\1|" \
-e "s|^#baseurl=http://download.example/pub|baseurl=http://{{ nodepool_mirror_host }}|" \
-e "s|^#baseurl=https://download.example/pub|baseurl=http://{{ nodepool_mirror_host }}|" \
/etc/yum.repos.d/epel*.repo
/etc/yum.repos.d/epel*.repo \
{%- raw -%}
{% endblock %}
{% block base_debian_after_sources_list %}
{% if base_distro == "debian" %}
{% endraw %}
{% endif %}
{% raw %}
{% block base_debian_after_sources_list %}
{% 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
{% raw %}
{% elif base_distro == "ubuntu" %}
{% endraw %}
RUN sed -i -e "s|mirror://mirrors.ubuntu.com/mirrors.txt|[trusted=yes] http://{{ nodepool_mirror_host }}/ubuntu/|" \
-e "s|http://ubuntu-cloud.archive.canonical.com/ubuntu|[trusted=yes] http://{{ nodepool_mirror_host }}/ubuntu-cloud-archive|" \
-e "s|http://ports.ubuntu.com|[trusted=yes] http://{{ nodepool_mirror_host }}/ubuntu-ports|" \
/etc/apt/sources.list
{% raw %}
{% endif %}
{% raw %}
{% endblock %}
{# Revert to upstream mirrors after build is complete #}
@ -92,13 +97,11 @@ RUN if [ -f /usr/etc/npmrc ]; then \
fi \
&& rm -f /etc/npmrc
{% raw %}
{% if base_package_type == 'rpm' %}
{% endraw %}
{% if base_distro == 'centos' %}
RUN sed -i \
-e "s|^#\(mirrorlist.*\)|\1|" \
-e "s|^baseurl=http://{{ nodepool_mirror_host }}|#baseurl=http://mirror.centos.org|" \
/etc/yum.repos.d/CentOS-*.repo \
/etc/yum.repos.d/centos*.repo \
&& sed -i \
-e "s|{{ nodepool_rdo_proxy }}|https://trunk.rdoproject.org|g" \
/etc/yum.repos.d/delorean*.repo \
@ -106,22 +109,16 @@ RUN sed -i \
-e "s|^#\(metalink.*\)|\1|" \
-e "s|^baseurl=http://{{ nodepool_mirror_host }}|#baseurl=http://download.example/pub|" \
/etc/yum.repos.d/epel*.repo
{% raw %}
{% elif base_package_type == 'deb' %}
{% if base_distro == "debian" %}
{% endraw %}
{% elif 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
{% raw %}
{% elif base_distro == "ubuntu" %}
{% endraw %}
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
{% endif %}
{% raw %}
{% endif %}
{% endif %}
{% endblock %}
{% endraw %}