From 956eda4a5590cdca82a21a46d9be0c5899581627 Mon Sep 17 00:00:00 2001 From: yatinkarel Date: Tue, 10 Dec 2019 09:10:40 +0530 Subject: [PATCH] Add jobs for CentOS 8 As part of adoption of CentOS 8 in RDO, this patch is adding support to test with it: - Adapt run_tests.sh for CentOS8. - Add the option to have different versions of puppet modules (needed for puppet-mysql until we can update mariadb in CentOS7. - Add centos8 playbooks and jobs definition. Change-Id: Ie53a8cb5517651487436e24bf60f51bc531f16d6 (cherry picked from commit 9ddd5469d64a0459b98927efcf370547c69a5c0a) --- .zuul.yaml | 64 ++++++++++ Puppetfile => Puppetfile-centos7 | 0 Puppetfile-centos8 | 170 +++++++++++++++++++++++++++ playbooks/packstack-centos8-pre.yaml | 28 +++++ playbooks/packstack-multinode.yaml | 26 +++- run_tests.sh | 12 +- 6 files changed, 292 insertions(+), 8 deletions(-) rename Puppetfile => Puppetfile-centos7 (100%) create mode 100755 Puppetfile-centos8 create mode 100644 playbooks/packstack-centos8-pre.yaml diff --git a/.zuul.yaml b/.zuul.yaml index 2d6bff490..dafab5a26 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -43,6 +43,20 @@ label: centos-7 run: playbooks/packstack-integration-tempest.yaml +- job: + name: packstack-centos8 + parent: packstack-base + vars: + selinux_enforcing: "false" + delorean: "https://trunk.rdoproject.org/centos8-train/consistent/delorean.repo" + delorean_deps: "https://trunk.rdoproject.org/centos8-train/delorean-deps.repo" + pre-run: playbooks/packstack-centos8-pre.yaml + nodeset: + nodes: + - name: centos8 + label: centos-8 + run: playbooks/packstack-integration-tempest.yaml + - job: name: packstack-multinode parent: packstack-base @@ -55,6 +69,22 @@ label: centos-7 run: playbooks/packstack-multinode.yaml +- job: + name: packstack-multinode-centos8 + parent: packstack-base + vars: + selinux_enforcing: "false" + delorean: "https://trunk.rdoproject.org/centos8-train/consistent/delorean.repo" + delorean_deps: "https://trunk.rdoproject.org/centos8-train/delorean-deps.repo" + pre-run: playbooks/packstack-centos8-pre.yaml + nodeset: + nodes: + - name: controller + label: centos-8 + - name: compute + label: centos-8 + run: playbooks/packstack-multinode.yaml + - job: name: packstack-integration-scenario001-tempest parent: packstack-allinone @@ -73,6 +103,24 @@ vars: scenario: scenario003 +- job: + name: packstack-centos8-integration-scenario001 + parent: packstack-centos8 + vars: + scenario: scenario001 + +- job: + name: packstack-centos8-integration-scenario002 + parent: packstack-centos8 + vars: + scenario: scenario002 + +- job: + name: packstack-centos8-integration-scenario003 + parent: packstack-centos8 + vars: + scenario: scenario003 + # We should have nested post-run jobs, according to # https://docs.openstack.org/infra/zuul/user/config.html#job - job: @@ -82,6 +130,13 @@ vars: scenario: scenario002 +- job: + name: packstack-centos8-multinode-scenario002-tempest + parent: packstack-multinode-centos8 + post-run: playbooks/packstack-post-compute.yaml + vars: + scenario: scenario002 + - secret: name: packstack_git_mirror_credentials data: @@ -169,6 +224,15 @@ - packstack-integration-scenario002-tempest - packstack-integration-scenario003-tempest - packstack-multinode-scenario002-tempest + # We can't make centos8 jobs voting until we have promotion pipeline + - packstack-centos8-integration-scenario001: + voting: false + - packstack-centos8-integration-scenario002: + voting: false + - packstack-centos8-integration-scenario003: + voting: false + - packstack-centos8-multinode-scenario002-tempest: + voting: false - openstack-tox-py36: voting: false gate: diff --git a/Puppetfile b/Puppetfile-centos7 similarity index 100% rename from Puppetfile rename to Puppetfile-centos7 diff --git a/Puppetfile-centos8 b/Puppetfile-centos8 new file mode 100755 index 000000000..6761f59dc --- /dev/null +++ b/Puppetfile-centos8 @@ -0,0 +1,170 @@ +moduledir '/usr/share/openstack-puppet/modules' + +## OpenStack modules + +mod 'aodh', + :git => 'https://github.com/openstack/puppet-aodh', + :ref => 'stable/train' + +mod 'ceilometer', + :git => 'https://github.com/openstack/puppet-ceilometer', + :ref => 'stable/train' + +mod 'cinder', + :git => 'https://github.com/openstack/puppet-cinder', + :ref => 'stable/train' + +mod 'glance', + :git => 'https://github.com/openstack/puppet-glance', + :ref => 'stable/train' + +mod 'gnocchi', + :git => 'https://github.com/openstack/puppet-gnocchi', + :ref => 'stable/train' + +mod 'heat', + :git => 'https://github.com/openstack/puppet-heat', + :ref => 'stable/train' + +mod 'magnum', + :git => 'https://github.com/openstack/puppet-magnum', + :ref => 'stable/train' + +mod 'horizon', + :git => 'https://github.com/openstack/puppet-horizon', + :ref => 'stable/train' + +mod 'ironic', + :git => 'https://github.com/openstack/puppet-ironic', + :ref => 'stable/train' + +mod 'keystone', + :git => 'https://github.com/openstack/puppet-keystone', + :ref => 'stable/train' + +mod 'manila', + :git => 'https://github.com/openstack/puppet-manila', + :ref => 'stable/train' + +mod 'neutron', + :git => 'https://github.com/openstack/puppet-neutron', + :ref => 'stable/train' + +mod 'nova', + :git => 'https://github.com/openstack/puppet-nova', + :ref => 'stable/train' + +mod 'openstack_extras', + :git => 'https://github.com/openstack/puppet-openstack_extras', + :ref => 'stable/train' + +mod 'openstacklib', + :git => 'https://github.com/openstack/puppet-openstacklib', + :ref => 'stable/train' + +mod 'oslo', + :git => 'https://github.com/openstack/puppet-oslo', + :ref => 'stable/train' + +mod 'ovn', + :git => 'https://github.com/openstack/puppet-ovn', + :ref => 'stable/train' + +mod 'panko', + :git => 'https://github.com/openstack/puppet-panko', + :ref => 'stable/train' + +mod 'placement', + :git => 'https://github.com/openstack/puppet-placement', + :ref => 'stable/train' + +mod 'sahara', + :git => 'https://github.com/openstack/puppet-sahara', + :ref => 'stable/train' + +mod 'swift', + :git => 'https://github.com/openstack/puppet-swift', + :ref => 'stable/train' + +mod 'tempest', + :git => 'https://github.com/openstack/puppet-tempest', + :ref => 'stable/train' + +mod 'trove', + :git => 'https://github.com/openstack/puppet-trove', + :ref => 'stable/train' + +mod 'vswitch', + :git => 'https://github.com/openstack/puppet-vswitch', + :ref => 'stable/train' + +## Non-OpenStack modules + +mod 'apache', + :git => 'https://github.com/puppetlabs/puppetlabs-apache', + :ref => '1fa9b1cdece0044186465883ecc940dd3b69827c' + +mod 'certmonger', + :git => 'https://github.com/rcritten/puppet-certmonger', + :ref => 'master' + +mod 'concat', + :git => 'https://github.com/puppetlabs/puppetlabs-concat', + :ref => '9baa8fcbd1ab68cd32916bd5d90255f816bb9519' + +mod 'firewall', + :git => 'https://github.com/puppetlabs/puppetlabs-firewall', + :ref => '4f4437ad800d5697bafc8346c1627e1c4b5b607f' + +mod 'inifile', + :git => 'https://github.com/puppetlabs/puppetlabs-inifile', + :ref => '91efced79bb9011e162eea35e4a0d9ad12e267a1' + +mod 'memcached', + :git => 'https://github.com/saz/puppet-memcached', + :ref => '66d3a667d4e7e0253949f9d83c230b5f8ccca596' + +mod 'mysql', + :git => 'https://github.com/puppetlabs/puppetlabs-mysql', + :ref => 'v10.3.0' + +mod 'nssdb', + :git => 'https://github.com/rcritten/puppet-nssdb', + :ref => 'master' + +mod 'rabbitmq', + :git => 'https://github.com/voxpupuli/puppet-rabbitmq', + :ref => '75574b8f4a921cacda86ff30d378308084afa0d4' + +mod 'redis', + :git => 'https://github.com/arioch/puppet-redis', + :ref => 'be8d097f849afaca6c381d105a4bf80bbd691a40' + +mod 'remote', + :git => 'https://github.com/paramite/puppet-remote', + :ref => '7420908328b832f4b20e1eba44bcccd926da8faa' + +mod 'rsync', + :git => 'https://github.com/puppetlabs/puppetlabs-rsync', + :ref => 'a7d4f8487cf9492106690637d3e7d484876943e6' + +mod 'ssh', + :git => 'https://github.com/saz/puppet-ssh', + :ref => '65570a311e1303d8084d12ee82868e6d0f411e8a' + +mod 'stdlib', + :git => 'https://github.com/puppetlabs/puppetlabs-stdlib', + :ref => '5aa891c2ef8efce6eb6d1ff12e976b4753b3c4d9' + +mod 'sysctl', + :git => 'https://github.com/duritong/puppet-sysctl', + :ref => 'a3d160d7c79cc905fc1d10a4fd8b4c1488e017b4' + +mod 'vcsrepo', + :git => 'https://github.com/puppetlabs/puppetlabs-vcsrepo', + :ref => 'b06d5d378e80d03c5dea40a89e83449191064ddc' + +mod 'xinetd', + :git => 'https://github.com/puppetlabs/puppetlabs-xinetd', + :ref => 'd768da2f645001395ef1c796bb03d0b9bcc733f5' + diff --git a/playbooks/packstack-centos8-pre.yaml b/playbooks/packstack-centos8-pre.yaml new file mode 100644 index 000000000..fa717c2a4 --- /dev/null +++ b/playbooks/packstack-centos8-pre.yaml @@ -0,0 +1,28 @@ +- hosts: all + name: packstack-centos8-pre + tasks: + - name: Ensure legacy workspace directory + file: + path: '{{ ansible_user_dir }}/workspace' + state: directory + + - shell: + cmd: | + cp -pr /home/zuul/src/opendev.org/x/packstack {{ ansible_user_dir }}/workspace + + - shell: + cmd: | + set -e + set -x + rm -rf /etc/yum.repos.d/delorean* + # Remove epel repos + rm -rf /etc/yum.repos.d/epel* + dnf clean all + sudo sed -i '/^exclude.*/d' /etc/dnf/dnf.conf + dnf -y install libxml2-devel libxslt-devel ruby-devel zlib-devel + dnf -y install gcc gettext diffstat doxygen patch patchutils subversion systemtap git python3-setuptools wget redhat-lsb-core python3-libselinux virt-what yum + pip uninstall requests -y || true + executable: /bin/bash + chdir: '{{ ansible_user_dir }}/workspace' + become: true + environment: '{{ zuul }}' diff --git a/playbooks/packstack-multinode.yaml b/playbooks/packstack-multinode.yaml index ec8b70875..a9cf4cdb8 100644 --- a/playbooks/packstack-multinode.yaml +++ b/playbooks/packstack-multinode.yaml @@ -1,22 +1,37 @@ - hosts: compute name: setup RDO Trunk repositories vars: - delorean: "https://trunk.rdoproject.org/centos7-train/current-tripleo/delorean.repo" - delorean_deps: "https://trunk.rdoproject.org/centos7-train/delorean-deps.repo" + delorean_default: "https://trunk.rdoproject.org/centos7-train/current-tripleo/delorean.repo" + delorean_deps_default: "https://trunk.rdoproject.org/centos7-train/delorean-deps.repo" tasks: - name: Fetch DLRN repo get_url: - url: "{{ delorean }}" + url: "{{ delorean | default(delorean_default) }}" dest: /etc/yum.repos.d/delorean.repo mode: 0640 become: true + - name: Fetch DLRN dependency repo get_url: - url: "{{ delorean_deps }}" + url: "{{ delorean_deps | default(delorean_deps_default) }}" dest: /etc/yum.repos.d/delorean-deps.repo mode: 0640 become: true + - name: Update installed packages from RDO repos + package: + name: '*' + state: latest + become: true + + - name: Disable selinux in Compute node + shell: + cmd: | + setenforce 0 + become: true + when: not selinux_enforcing|default("true")|bool + + - hosts: controller name: packstack-multinode tasks: @@ -52,8 +67,11 @@ set -e set -x export SCENARIO='{{ scenario }}' + export DELOREAN='{{ delorean | default('') }}' + export DELOREAN_DEPS='{{ delorean_deps | default('') }}' export CONTROLLER_NODE="{{ hostvars['controller'].nodepool.public_ipv4 }}" export COMPUTE_NODE="{{ hostvars['compute'].nodepool.public_ipv4 }}" + export SELINUX_ENFORCING='{{ selinux_enforcing | default('true') }}' ./run_tests.sh executable: /bin/bash chdir: '{{ ansible_user_dir }}/workspace/packstack' diff --git a/run_tests.sh b/run_tests.sh index 0bd6444ed..9f5991a60 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -19,11 +19,15 @@ SCENARIO=${SCENARIO:-scenario001} BRANCH=stable/train +# Find OS version and release +source /etc/os-release +OS_NAME_VERS=${REDHAT_SUPPORT_PRODUCT}${REDHAT_SUPPORT_PRODUCT_VERSION} + # We could want to override the default repositories or install behavior INSTALL_FROM_SOURCE=${INSTALL_FROM_SOURCE:-true} MANAGE_REPOS=${MANAGE_REPOS:-true} -DELOREAN=${DELOREAN:-https://trunk.rdoproject.org/centos7-train/current-tripleo/delorean.repo} -DELOREAN_DEPS=${DELOREAN_DEPS:-https://trunk.rdoproject.org/centos7-train/delorean-deps.repo} +DELOREAN=${DELOREAN:-https://trunk.rdoproject.org/${OS_NAME_VERS}-train/current-passed-ci/delorean.repo} +DELOREAN_DEPS=${DELOREAN_DEPS:-https://trunk.rdoproject.org/${OS_NAME_VERS}-train/delorean-deps.repo} GIT_BASE_URL=${GIT_BASE_URL:-https://git.openstack.org} ADDITIONAL_ARGS=${ADDITIONAL_ARGS:-} SELINUX_ENFORCING=${SELINUX_ENFORCING:-true} @@ -79,7 +83,7 @@ EOF # # - ``GEM_BIN_DIR`` must be set to Gem bin directory install_all() { - $SUDO ${GEM_BIN_DIR}r10k puppetfile install -v --puppetfile Puppetfile + $SUDO ${GEM_BIN_DIR}r10k puppetfile install -v --puppetfile Puppetfile-${OS_NAME_VERS} } # Install Puppet OpenStack modules and dependencies by using @@ -92,7 +96,7 @@ install_all() { install_modules() { # If zuul-cloner is there, have it install modules using zuul refs if [ -e /usr/zuul-env/bin/zuul-cloner ] ; then - csplit Puppetfile /'Non-OpenStack modules'/ \ + csplit Puppetfile-%{OS_NAME_VERS} /'Non-OpenStack modules'/ \ --prefix Puppetfile \ --suffix '%d' install_external