From f384effdb42e0cbe19e137f0411b09ac8fef5b48 Mon Sep 17 00:00:00 2001 From: Alfredo Moralejo Date: Thu, 27 May 2021 17:34:06 +0200 Subject: [PATCH] Add support for for CentOS Stream 9 CentOS has published the official mirror for CentOS Stream 9 [1]. In RDO, we are working to get ready for it ASAP and we have the required repos to run p-o-i on CS9 [2]. This patch is adding support to CS9 in p-o-i repo with the required fixes. Also is adding integrations jobs for scenarios 0-4 and adding them as non-voting. Note that we don't have promotion pipeline working so i think it's better to not make it voting yet. [1] http://mirror.stream.centos.org/9-stream/ [2] https://trunk.rdoproject.org/centos9-master/report.html Change-Id: I9da46a6aaef3559b24d5a47fb0bde9ae1d09abdb --- configure_facts.sh | 17 ++++++++---- functions | 22 +++++++++++---- manifests/repos.pp | 13 +++++++-- playbooks/prepare-node-common.yaml | 13 +++++++++ run_tests.sh | 12 ++++++-- zuul.d/integration.yaml | 44 ++++++++++++++++++++++++++++++ zuul.d/layout.yaml | 9 ++++++ 7 files changed, 113 insertions(+), 17 deletions(-) diff --git a/configure_facts.sh b/configure_facts.sh index 77f2ad3c9..85e3d7f69 100644 --- a/configure_facts.sh +++ b/configure_facts.sh @@ -14,7 +14,7 @@ # under the License. source /etc/os-release -OS_NAME_VERS=${ID}${VERSION_ID} +export OS_NAME_VERS=${ID}${VERSION_ID} # Write out facts to the facter folder when we generate them. export WRITE_FACTS=${WRITE_FACTS:-true} @@ -40,8 +40,13 @@ if [ -f /etc/ci/mirror_info.sh ]; then CEPH_MIRROR_HOST="http://download.ceph.com/debian-${CEPH_VERSION}" NODEPOOL_PUPPETLABS_MIRROR="http://${NODEPOOL_MIRROR_HOST}/apt-puppetlabs" else - CEPH_MIRROR_HOST="${CENTOS_MIRROR_HOST}/centos/${VERSION_ID}/storage/x86_64/ceph-${CEPH_VERSION}/" - NODEPOOL_PUPPETLABS_MIRROR="http://${NODEPOOL_MIRROR_HOST}/yum-puppetlabs" + # TODO centos9 content is still not mirrored + if [ "${OS_NAME_VERS}" == "centos9" ]; then + CEPH_MIRROR_HOST="https://buildlogs.centos.org/centos/9-stream/storage/x86_64/ceph-${CEPH_VERSION}/" + else + CEPH_MIRROR_HOST="${CENTOS_MIRROR_HOST}/centos/${VERSION_ID}/storage/x86_64/ceph-${CEPH_VERSION}/" + NODEPOOL_PUPPETLABS_MIRROR="http://${NODEPOOL_MIRROR_HOST}/yum-puppetlabs" + fi fi else CENTOS_MIRROR_HOST='http://mirror.centos.org' @@ -52,14 +57,14 @@ else CEPH_MIRROR_HOST="https://download.ceph.com/debian-${CEPH_VERSION}" NODEPOOL_PUPPETLABS_MIRROR='https://apt.puppetlabs.com' else - CEPH_MIRROR_HOST="${CENTOS_MIRROR_HOST}/centos/${VERSION_ID}/storage/x86_64/ceph-${CEPH_VERSION}/" + CEPH_MIRROR_HOST="${CENTOS_MIRROR_HOST}/centos/${VERSION_ID}-stream/storage/x86_64/ceph-${CEPH_VERSION}/" NODEPOOL_PUPPETLABS_MIRROR="https://yum.puppetlabs.com" fi fi -curl -o /tmp/delorean.repo "${NODEPOOL_RDO_PROXY}/centos8-master/puppet-passed-ci/delorean.repo" +curl -o /tmp/delorean.repo "${NODEPOOL_RDO_PROXY}/${OS_NAME_VERS}-master/puppet-passed-ci/delorean.repo" sed -i -e "s|https://trunk.rdoproject.org|${NODEPOOL_RDO_PROXY}|g" /tmp/delorean.repo -curl -o /tmp/delorean-deps.repo "${NODEPOOL_RDO_PROXY}/centos8-master/delorean-deps.repo" +curl -o /tmp/delorean-deps.repo "${NODEPOOL_RDO_PROXY}/${OS_NAME_VERS}-master/delorean-deps.repo" sed -i -e "s|https://trunk.rdoproject.org|${NODEPOOL_RDO_PROXY}|g" /tmp/delorean-deps.repo sed -i -e "s|http://mirror.centos.org|${CENTOS_MIRROR_HOST}|g" /tmp/delorean-deps.repo diff --git a/functions b/functions index bf3eb924a..09bd92767 100644 --- a/functions +++ b/functions @@ -217,13 +217,13 @@ install_puppet() { if rpm --quiet -q epel-release; then $SUDO $YUM remove -y epel-release fi - + source /etc/os-release if [ "${MANAGE_REPOS}" == "true" ] ; then - source /etc/os-release - $SUDO rpm --import ${NODEPOOL_PUPPETLABS_MIRROR}/RPM-GPG-KEY-puppetlabs - $SUDO rpm --import ${NODEPOOL_PUPPETLABS_MIRROR}/RPM-GPG-KEY-puppet - $SUDO rpm --import ${NODEPOOL_PUPPETLABS_MIRROR}/RPM-GPG-KEY-puppet-20250406 - $SUDO bash -c "cat << EOF > /etc/yum.repos.d/puppetlabs.repo + if [ ${VERSION_ID} -ne 9 ] ; then + $SUDO rpm --import ${NODEPOOL_PUPPETLABS_MIRROR}/RPM-GPG-KEY-puppetlabs + $SUDO rpm --import ${NODEPOOL_PUPPETLABS_MIRROR}/RPM-GPG-KEY-puppet + $SUDO rpm --import ${NODEPOOL_PUPPETLABS_MIRROR}/RPM-GPG-KEY-puppet-20250406 + $SUDO bash -c "cat << EOF > /etc/yum.repos.d/puppetlabs.repo [puppetlabs-products] name=Puppet Labs Products El ${VERSION_ID} - x86_64 baseurl=${NODEPOOL_PUPPETLABS_MIRROR}/puppet${PUPPET_MAJ_VERSION}/el/${VERSION_ID}/x86_64/ @@ -233,6 +233,16 @@ gpgkey=${NODEPOOL_PUPPETLABS_MIRROR}/RPM-GPG-KEY-puppetlabs enabled=1 gpgcheck=1 EOF" + else + # TODO we are using puppet from RDO in CS9 until there el9 in puppetlabs repo + $SUDO bash -c "cat << EOF > /etc/yum.repos.d/puppet-rdo.repo +[puppet-rdo] +name=Puppet from RDO repo for CentOS ${VERSION_ID} - x86_64 +baseurl=https://trunk.rdoproject.org/centos9-master/deps/latest/ +enabled=1 +gpgcheck=0 +EOF" + fi fi $SUDO $YUM install -y ${PUPPET_PKG} fi diff --git a/manifests/repos.pp b/manifests/repos.pp index 7173bd0ca..d6beedd41 100644 --- a/manifests/repos.pp +++ b/manifests/repos.pp @@ -47,6 +47,14 @@ class openstack_integration::repos { $ceph_mirror = pick($::ceph_mirror_host, "http://download.ceph.com/debian-${ceph_version_real}/") } 'RedHat': { + # Set specific variables for CentOS Stream 9 + if $::os['release']['major'] >= '9' { + $powertools_repo = 'crb' + $manage_virt = false + } else { + $powertools_repo = 'powertools' + $manage_virt = true + } if defined('$::centos_mirror_host') and $::centos_mirror_host != '' { $centos_mirror = $::centos_mirror_host } else { @@ -68,6 +76,7 @@ class openstack_integration::repos { class { 'openstack_extras::repo::redhat::redhat': manage_rdo => false, manage_epel => false, + manage_virt => $manage_virt, centos_mirror_url => $centos_mirror, repo_source_hash => { 'delorean.repo' => $delorean_repo, @@ -95,9 +104,9 @@ class openstack_integration::repos { # PowerTools is required on CentOS8 since Ussuri. if $::operatingsystem == 'CentOS' { exec { 'enable-powertools': - command => 'dnf config-manager --enable powertools', + command => "dnf config-manager --enable ${powertools_repo}", path => '/usr/bin/', - unless => 'test 0 -ne $(dnf repolist --enabled powertools | wc -l)' + unless => "test 0 -ne $(dnf repolist --enabled ${powertools_repo} | wc -l)" } } diff --git a/playbooks/prepare-node-common.yaml b/playbooks/prepare-node-common.yaml index ff11060e7..25bfb22be 100644 --- a/playbooks/prepare-node-common.yaml +++ b/playbooks/prepare-node-common.yaml @@ -84,6 +84,19 @@ - ansible_os_family == 'RedHat' - ansible_distribution == "Fedora" or ansible_distribution_major_version >= "8" + - block: + - name: install required packages for CentOS 9 + dnf: + name: "{{ item }}" + state: present + become: true + ignore_errors: true + with_items: + - rubygem-rexml + when: + - ansible_os_family == 'RedHat' + - ansible_distribution == "Fedora" or ansible_distribution_major_version >= "9" + - name: Install Ruby dependencies (Ubuntu) apt: name: "{{ item }}" diff --git a/run_tests.sh b/run_tests.sh index b717bd9fa..f3aa90ee0 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -48,8 +48,14 @@ export WRITE_FACTS=false source ${SCRIPT_DIR}/configure_facts.sh export PATH=${PATH}:/opt/puppetlabs/bin:/opt/puppetlabs/puppet/bin -export PUPPET_BASE_PATH=/etc/puppetlabs/code -export PUPPET_PKG=${PUPPET_PKG:-puppet-agent} +# TODO In CentOS9 there is no puppetlabs package yet, so we use RDO one. +if [ "${OS_NAME_VERS}" == "centos9" ]; then + export PUPPET_BASE_PATH=/etc/puppet + export PUPPET_PKG="puppet" +else + export PUPPET_BASE_PATH=/etc/puppetlabs/code + export PUPPET_PKG=${PUPPET_PKG:-puppet-agent} +fi print_header 'Start (run_tests.sh)' @@ -144,7 +150,7 @@ if uses_debs; then $SUDO apt-get install -y dstat ebtables iotop sysstat elif is_fedora; then $SUDO $YUM install -y dstat setools setroubleshoot audit iotop sysstat - $SUDO service auditd start + $SUDO systemctl start auditd # SElinux in permissive mode so later we can catch alerts $SUDO selinuxenabled && $SUDO setenforce 0 fi diff --git a/zuul.d/integration.yaml b/zuul.d/integration.yaml index 79c437d29..9de7edbaf 100644 --- a/zuul.d/integration.yaml +++ b/zuul.d/integration.yaml @@ -33,6 +33,14 @@ voting: false nodeset: centos-8-stream +- job: + name: puppet-openstack-integration-7-scenario000-tempest-centos-9-stream + parent: puppet-openstack-integration-7-scenario000 + voting: false + nodeset: + nodes: + - name: centos-9-stream + label: centos-9-stream - job: name: puppet-openstack-integration-6-scenario001 parent: puppet-openstack-integration-6 @@ -60,6 +68,15 @@ parent: puppet-openstack-integration-7-scenario001 nodeset: centos-8-stream +- job: + name: puppet-openstack-integration-7-scenario001-tempest-centos-9-stream + parent: puppet-openstack-integration-7-scenario001 + voting: false + nodeset: + nodes: + - name: centos-9-stream + label: centos-9-stream + - job: name: puppet-openstack-integration-6-scenario002 parent: puppet-openstack-integration-6 @@ -85,6 +102,15 @@ parent: puppet-openstack-integration-7-scenario002 nodeset: centos-8-stream +- job: + name: puppet-openstack-integration-7-scenario002-tempest-centos-9-stream + parent: puppet-openstack-integration-7-scenario002 + voting: false + nodeset: + nodes: + - name: centos-9-stream + label: centos-9-stream + - job: name: puppet-openstack-integration-6-scenario003 parent: puppet-openstack-integration-6 @@ -110,6 +136,15 @@ parent: puppet-openstack-integration-7-scenario003 nodeset: centos-8-stream +- job: + name: puppet-openstack-integration-7-scenario003-tempest-centos-9-stream + parent: puppet-openstack-integration-7-scenario003 + voting: false + nodeset: + nodes: + - name: centos-9-stream + label: centos-9-stream + - job: name: puppet-openstack-integration-6-scenario004 parent: puppet-openstack-integration-6 @@ -136,3 +171,12 @@ name: puppet-openstack-integration-7-scenario004-tempest-centos-8-stream parent: puppet-openstack-integration-7-scenario004 nodeset: centos-8-stream + +- job: + name: puppet-openstack-integration-7-scenario004-tempest-centos-9-stream + parent: puppet-openstack-integration-7-scenario004 + voting: false + nodeset: + nodes: + - name: centos-9-stream + label: centos-9-stream diff --git a/zuul.d/layout.yaml b/zuul.d/layout.yaml index 508a7d4cc..b938ec096 100644 --- a/zuul.d/layout.yaml +++ b/zuul.d/layout.yaml @@ -59,6 +59,11 @@ - puppet-openstack-integration-7-scenario002-tempest-centos-8-stream - puppet-openstack-integration-7-scenario003-tempest-centos-8-stream - puppet-openstack-integration-7-scenario004-tempest-centos-8-stream + - puppet-openstack-integration-7-scenario000-tempest-centos-9-stream + - puppet-openstack-integration-7-scenario001-tempest-centos-9-stream + - puppet-openstack-integration-7-scenario002-tempest-centos-9-stream + - puppet-openstack-integration-7-scenario003-tempest-centos-9-stream + - puppet-openstack-integration-7-scenario004-tempest-centos-9-stream gate: jobs: - puppet-openstack-integration-7-scenario001-tempest-centos-8-stream @@ -72,6 +77,7 @@ jobs: - puppet-openstack-integration-6-scenario001-tempest-ubuntu-focal - puppet-openstack-integration-7-scenario001-tempest-centos-8-stream + - puppet-openstack-integration-7-scenario001-tempest-centos-9-stream gate: jobs: - puppet-openstack-integration-7-scenario001-tempest-centos-8-stream @@ -82,6 +88,7 @@ jobs: - puppet-openstack-integration-6-scenario002-tempest-ubuntu-focal - puppet-openstack-integration-7-scenario002-tempest-centos-8-stream + - puppet-openstack-integration-7-scenario002-tempest-centos-9-stream gate: jobs: - puppet-openstack-integration-7-scenario002-tempest-centos-8-stream @@ -92,6 +99,7 @@ jobs: - puppet-openstack-integration-6-scenario003-tempest-ubuntu-focal - puppet-openstack-integration-7-scenario003-tempest-centos-8-stream + - puppet-openstack-integration-7-scenario003-tempest-centos-9-stream gate: jobs: - puppet-openstack-integration-7-scenario003-tempest-centos-8-stream @@ -102,6 +110,7 @@ jobs: - puppet-openstack-integration-6-scenario004-tempest-ubuntu-focal - puppet-openstack-integration-7-scenario004-tempest-centos-8-stream + - puppet-openstack-integration-7-scenario004-tempest-centos-9-stream gate: jobs: - puppet-openstack-integration-7-scenario004-tempest-centos-8-stream