CentOS 8 support

This adds support for testing CentOS 8.

- Update documentation
  - Add references to CentOS 8
  - Update genealogy to include latest releases
  - Update minimum Chef requirement
  - Add Bare Metal to list of cookbooks when creating a stable branch
- Include memcached in identity role
- Update InSpec tests for CentOS 8
- Ensure we install the yum package on rpm distros (required by Chef to
  run properly and is missing on the default image)
- Remove yum-epel attributes in integration since it breaks on EL8

Change-Id: Ie648432021325150fdd2fd7ab7f1af10bc69b655
Signed-off-by: Lance Albertson <lance@osuosl.org>
This commit is contained in:
Lance Albertson 2021-10-15 15:06:08 -07:00
parent 442dcab018
commit 7d2ecf253c
15 changed files with 159 additions and 66 deletions

View File

@ -33,16 +33,10 @@
voting: false # TODO(ramereth): Remove after this gets merged voting: false # TODO(ramereth): Remove after this gets merged
- job: - job:
name: openstack-chef16-minimal-integration-ubuntu name: openstack-chef-integration-centos-8
parent: openstack-chef-minimal-integration-ubuntu
vars:
openstack_chef_client_version: 16
- job:
name: openstack-chef-integration-centos
parent: base parent: base
nodeset: centos-7 nodeset: centos-8
description: Run integration tests with openstack-chef on CentOS 7 description: Run integration tests with openstack-chef on CentOS
required-projects: openstack/openstack-chef required-projects: openstack/openstack-chef
pre-run: playbooks/pre-integration.yaml pre-run: playbooks/pre-integration.yaml
run: playbooks/integration.yaml run: playbooks/integration.yaml
@ -51,10 +45,10 @@
voting: false # TODO(ramereth): Remove after this gets merged voting: false # TODO(ramereth): Remove after this gets merged
- job: - job:
name: openstack-chef-minimal-integration-centos name: openstack-chef-minimal-integration-centos-8
parent: base parent: base
nodeset: centos-7 nodeset: centos-8
description: Run minimal integration tests with openstack-chef on CentOS 7 description: Run minimal integration tests with openstack-chef on CentOS
required-projects: openstack/openstack-chef required-projects: openstack/openstack-chef
pre-run: playbooks/pre-integration.yaml pre-run: playbooks/pre-integration.yaml
run: playbooks/minimal.yaml run: playbooks/minimal.yaml
@ -63,8 +57,30 @@
voting: false # TODO(ramereth): Remove after this gets merged voting: false # TODO(ramereth): Remove after this gets merged
- job: - job:
name: openstack-chef16-minimal-integration-centos name: openstack-chef16-minimal-integration-ubuntu
parent: openstack-chef-minimal-integration-centos parent: openstack-chef-minimal-integration-ubuntu
vars:
openstack_chef_client_version: 16
- job:
name: openstack-chef-integration-centos-7
parent: openstack-chef-integration-centos-8
nodeset: centos-7
- job:
name: openstack-chef-minimal-integration-centos-7
parent: openstack-chef-minimal-integration-centos-8
nodeset: centos-7
- job:
name: openstack-chef16-minimal-integration-centos-7
parent: openstack-chef-minimal-integration-centos-7
vars:
openstack_chef_client_version: 16
- job:
name: openstack-chef16-minimal-integration-centos-8
parent: openstack-chef-minimal-integration-centos-8
vars: vars:
openstack_chef_client_version: 16 openstack_chef_client_version: 16
@ -82,15 +98,28 @@
openstack_chef_client_type: cinc openstack_chef_client_type: cinc
- job: - job:
name: openstack-cinc16-integration-centos name: openstack-cinc16-integration-centos-7
parent: openstack-chef-integration-centos parent: openstack-chef-integration-centos-7
vars: vars:
openstack_chef_client_type: cinc openstack_chef_client_type: cinc
openstack_chef_client_version: 16 openstack_chef_client_version: 16
- job: - job:
name: openstack-cinc-integration-centos name: openstack-cinc16-integration-centos-8
parent: openstack-chef-integration-centos parent: openstack-chef-integration-centos-8
vars:
openstack_chef_client_type: cinc
openstack_chef_client_version: 16
- job:
name: openstack-cinc-integration-centos-7
parent: openstack-chef-integration-centos-7
vars:
openstack_chef_client_type: cinc
- job:
name: openstack-cinc-integration-centos-8
parent: openstack-chef-integration-centos-8
vars: vars:
openstack_chef_client_type: cinc openstack_chef_client_type: cinc
@ -99,21 +128,27 @@
check: check:
jobs: jobs:
- openstack-chef-delivery - openstack-chef-delivery
- openstack-chef-integration-centos - openstack-chef-integration-centos-7
- openstack-chef-integration-centos-8
- openstack-chef-integration-ubuntu - openstack-chef-integration-ubuntu
- openstack-cinc16-integration-centos - openstack-cinc16-integration-centos-7
- openstack-cinc16-integration-centos-8
- openstack-cinc16-integration-ubuntu - openstack-cinc16-integration-ubuntu
- openstack-cinc-integration-centos - openstack-cinc-integration-centos-8
- openstack-cinc-integration-centos-7
- openstack-cinc-integration-ubuntu - openstack-cinc-integration-ubuntu
gate: gate:
queue: openstack-chef queue: openstack-chef
jobs: jobs:
- openstack-chef-delivery - openstack-chef-delivery
- openstack-chef-integration-centos - openstack-chef-integration-centos-7
- openstack-chef-integration-centos-8
- openstack-chef-integration-ubuntu - openstack-chef-integration-ubuntu
- openstack-cinc16-integration-centos - openstack-cinc16-integration-centos-7
- openstack-cinc16-integration-centos-8
- openstack-cinc16-integration-ubuntu - openstack-cinc16-integration-ubuntu
- openstack-cinc-integration-centos - openstack-cinc-integration-centos-7
- openstack-cinc-integration-centos-8
- openstack-cinc-integration-ubuntu - openstack-cinc-integration-ubuntu
- project-template: - project-template:
@ -121,29 +156,39 @@
check: check:
jobs: jobs:
- openstack-chef-delivery - openstack-chef-delivery
- openstack-chef-integration-centos - openstack-chef-integration-centos-7
- openstack-chef-integration-centos-8
- openstack-chef-integration-ubuntu - openstack-chef-integration-ubuntu
- openstack-chef-minimal-integration-centos - openstack-chef-minimal-integration-centos-7
- openstack-chef-minimal-integration-centos-8
- openstack-chef-minimal-integration-ubuntu - openstack-chef-minimal-integration-ubuntu
- openstack-chef16-minimal-integration-centos - openstack-chef16-minimal-integration-centos-7
- openstack-chef16-minimal-integration-centos-8
- openstack-chef16-minimal-integration-ubuntu - openstack-chef16-minimal-integration-ubuntu
- openstack-cinc16-integration-centos - openstack-cinc16-integration-centos-7
- openstack-cinc16-integration-centos-8
- openstack-cinc16-integration-ubuntu - openstack-cinc16-integration-ubuntu
- openstack-cinc-integration-centos - openstack-cinc-integration-centos-7
- openstack-cinc-integration-centos-8
- openstack-cinc-integration-ubuntu - openstack-cinc-integration-ubuntu
gate: gate:
queue: openstack-chef queue: openstack-chef
jobs: jobs:
- openstack-chef-delivery - openstack-chef-delivery
- openstack-chef-integration-centos - openstack-chef-integration-centos-7
- openstack-chef-integration-centos-8
- openstack-chef-integration-ubuntu - openstack-chef-integration-ubuntu
- openstack-chef-minimal-integration-centos - openstack-chef-minimal-integration-centos-7
- openstack-chef-minimal-integration-centos-8
- openstack-chef-minimal-integration-ubuntu - openstack-chef-minimal-integration-ubuntu
- openstack-chef16-minimal-integration-centos - openstack-chef16-minimal-integration-centos-7
- openstack-chef16-minimal-integration-centos-8
- openstack-chef16-minimal-integration-ubuntu - openstack-chef16-minimal-integration-ubuntu
- openstack-cinc16-integration-centos - openstack-cinc16-integration-centos-7
- openstack-cinc16-integration-centos-8
- openstack-cinc16-integration-ubuntu - openstack-cinc16-integration-ubuntu
- openstack-cinc-integration-centos - openstack-cinc-integration-centos-7
- openstack-cinc-integration-centos-8
- openstack-cinc-integration-ubuntu - openstack-cinc-integration-ubuntu
- project: - project:

View File

@ -18,7 +18,7 @@ Chef.
With the ``master`` branch of the cookbooks, which is currently tied to With the ``master`` branch of the cookbooks, which is currently tied to
the base OpenStack Train release, this supports deploying to Ubuntu the base OpenStack Train release, this supports deploying to Ubuntu
18.04 and CentOS 7 in monolithic, or allinone, and non-HA multinode 18.04 and CentOS 7 or 8 in monolithic, or allinone, and non-HA multinode
configurations with Neutron. The cookbooks support a fully HA configurations with Neutron. The cookbooks support a fully HA
configuration, but we do not test for that as there are far numerous configuration, but we do not test for that as there are far numerous
paths to HA. paths to HA.

View File

@ -80,6 +80,8 @@ if File.exist?('/usr/bin/apt-get')
@platform = 'ubuntu18' @platform = 'ubuntu18'
elsif File.exist?('/usr/bin/yum') elsif File.exist?('/usr/bin/yum')
@platform = 'centos7' @platform = 'centos7'
elsif File.exist?('/usr/bin/dnf')
@platform = 'centos8'
end end
# Helper for looking at the starting environment # Helper for looking at the starting environment
@ -107,7 +109,7 @@ def _run_env_queries
}, },
false false
) )
when 'centos7' when 'centos7', 'centos8'
_run_commands( _run_commands(
'basic rhel env queries', { 'basic rhel env queries', {
'/sbin/getenforce' => [''], '/sbin/getenforce' => [''],
@ -126,7 +128,7 @@ def _save_logs(prefix, log_dir)
case @platform case @platform
when 'ubuntu18' when 'ubuntu18'
sh %(sudo /bin/ss -tunlp > #{log_dir}/#{prefix}/netstat.log) sh %(sudo /bin/ss -tunlp > #{log_dir}/#{prefix}/netstat.log)
when 'centos7' when 'centos7', 'centos8'
sh %(sudo /sbin/ss -tunlp > #{log_dir}/#{prefix}/netstat.log) sh %(sudo /sbin/ss -tunlp > #{log_dir}/#{prefix}/netstat.log)
end end
%w( %w(

View File

@ -4,3 +4,4 @@ xz-devel [platform:rpm]
zlib1g-dev [platform:dpkg] zlib1g-dev [platform:dpkg]
zlib-devel [platform:rpm] zlib-devel [platform:rpm]
libselinux-utils [platform:rpm] libselinux-utils [platform:rpm]
yum [platform:rpm]

View File

@ -9,7 +9,7 @@ Tempest.
* Software requirements: * Software requirements:
* Ubuntu 18.04 LTS or CentOS 7 fresh install * Ubuntu 18.04 LTS or CentOS 7 or 8 fresh install
* `git` installed * `git` installed
* `chef-client` installed: https://docs.chef.io/#setup * `chef-client` installed: https://docs.chef.io/#setup

View File

@ -44,6 +44,12 @@ Releases Summary
+----------------------------+------------------------------+------------------------+ +----------------------------+------------------------------+------------------------+
| 22.y.z | Victoria | Future | | 22.y.z | Victoria | Future |
+----------------------------+------------------------------+------------------------+ +----------------------------+------------------------------+------------------------+
| 23.y.z | Wallaby | Future |
+----------------------------+------------------------------+------------------------+
| 24.y.z | Xena | Future |
+----------------------------+------------------------------+------------------------+
| 25.y.z | Yoga | Future |
+----------------------------+------------------------------+------------------------+
Supermarket releases Supermarket releases
==================== ====================

View File

@ -4,12 +4,12 @@ Supported Platforms
The following operating systems and versions are supported by the OpenStack cookbooks: The following operating systems and versions are supported by the OpenStack cookbooks:
* Ubuntu 18.04 LTS (Bionic Beaver) * Ubuntu 18.04 LTS (Bionic Beaver)
* CentOS 7 * CentOS 7 or 8
The cookbooks are tested and verified to work on the Chef stable track using The cookbooks are tested and verified to work on the Chef stable track using
the `Chef Workstation <https://www.chef.sh/docs/chef-workstation/getting-started/>`_. the `Chef Workstation <https://www.chef.sh/docs/chef-workstation/getting-started/>`_.
Your success rate may vary with the bleeding edge. Chef 14 and older is NOT Your success rate may vary with the bleeding edge. Chef 15 and older is NOT
supported. supported.
Have a look at Have a look at

View File

@ -136,6 +136,7 @@ their ``metadata.rb`` dependencies. See below on specifics:
#. Network (depends on Identity) #. Network (depends on Identity)
#. Compute (depends on Image and Network) #. Compute (depends on Image and Network)
#. Dns (depends on Network) #. Dns (depends on Network)
#. Bare Metal (depends on Image and Network)
#. Orchestration (depends on Identity) #. Orchestration (depends on Identity)
#. Telemetry (depends on Identity) #. Telemetry (depends on Identity)
#. Dashboard (depends on Identity) #. Dashboard (depends on Identity)

View File

@ -15,13 +15,6 @@
} }
} }
} }
},
"yum": {
"epel": {
"baseurl": "http://epel.osuosl.org/7/$basearch",
"mirrorlist": null,
"gpgkey": "http://epel.osuosl.org/RPM-GPG-KEY-EPEL-7"
}
} }
}, },
"override_attributes": { "override_attributes": {

View File

@ -47,6 +47,9 @@ platforms:
- name: centos-7 - name: centos-7
driver: driver:
box: bento/centos-7 box: bento/centos-7
- name: centos-8
driver:
box: bento/centos-8
suites: suites:
- name: default - name: default

View File

@ -5,6 +5,7 @@
"role[common]", "role[common]",
"role[ops_database]", "role[ops_database]",
"role[ops_messaging]", "role[ops_messaging]",
"recipe[memcached]",
"recipe[openstack-identity::server-apache]", "recipe[openstack-identity::server-apache]",
"recipe[openstack-identity::registration]", "recipe[openstack-identity::registration]",
"recipe[openstack-identity::openrc]" "recipe[openstack-identity::openrc]"

View File

@ -7,11 +7,12 @@ describe kernel_parameter 'net.ipv4.conf.default.rp_filter' do
end end
os_family = os.family os_family = os.family
os_release = os.release.to_i
describe command 'openstack --version' do describe command 'openstack --version' do
its('exit_status') { should eq 0 } its('exit_status') { should eq 0 }
# RHEL sends output to stderr while Ubuntu sends it to stdout # RHEL sends output to stderr while Ubuntu sends it to stdout
if os_family == 'redhat' if os_family == 'redhat' && os_release == 7
its('stderr') { should match /^openstack 4.0.[0-9]+$/ } its('stderr') { should match /^openstack 4.0.[0-9]+$/ }
else else
its('stdout') { should match /^openstack 4.0.[0-9]+$/ } its('stdout') { should match /^openstack 4.0.[0-9]+$/ }
@ -19,18 +20,33 @@ describe command 'openstack --version' do
end end
if os.family == 'redhat' if os.family == 'redhat'
%w( if os_release >= 8
centos-release-qemu-ev %w(
python python3-pip
python2-openstackclient python3-setuptools
python2-pip python3-virtualenv
python2-setuptools python3-wheel
python2-wheel python36
python-devel python36-devel
python-virtualenv ).each do |pkg|
).each do |pkg| describe package pkg do
describe package pkg do it { should be_installed }
it { should be_installed } end
end
else
%w(
centos-release-qemu-ev
python
python2-openstackclient
python2-pip
python2-setuptools
python2-wheel
python-devel
python-virtualenv
).each do |pkg|
describe package pkg do
it { should be_installed }
end
end end
end end

View File

@ -1,5 +1,6 @@
openrc = 'bash -c "source /root/openrc && ' openrc = 'bash -c "source /root/openrc && '
platform = os.family platform = os.family
os_release = os.release.to_i
describe command "#{openrc} openstack network show local_net -f shell -c admin_state_up -c status\"" do describe command "#{openrc} openstack network show local_net -f shell -c admin_state_up -c status\"" do
its('exit_status') { should eq 0 } its('exit_status') { should eq 0 }
@ -15,8 +16,14 @@ describe command "#{openrc} openstack subnet show local_subnet -f shell -c enabl
should include 'allocation_pools="[{\'start\': \'192.168.180.2\', \'end\': \'192.168.180.254\'}]"' should include 'allocation_pools="[{\'start\': \'192.168.180.2\', \'end\': \'192.168.180.254\'}]"'
end end
when 'redhat' when 'redhat'
its('stdout') do if os_release >= 8
should include 'allocation_pools="[{u\'start\': u\'192.168.180.2\', u\'end\': u\'192.168.180.254\'}]' its('stdout') do
should include 'allocation_pools="[{\'start\': \'192.168.180.2\', \'end\': \'192.168.180.254\'}]"'
end
else
its('stdout') do
should include 'allocation_pools="[{u\'start\': u\'192.168.180.2\', u\'end\': u\'192.168.180.254\'}]'
end
end end
end end
its('stdout') { should include 'cidr="192.168.180.0/24"' } its('stdout') { should include 'cidr="192.168.180.0/24"' }
@ -87,7 +94,11 @@ describe command '/opt/tempest-venv/bin/tempest --version' do
its('exit_status') { should eq 0 } its('exit_status') { should eq 0 }
case os_family case os_family
when 'redhat' when 'redhat'
its('stderr') { should match /^tempest 22.1.0$/ } if os_release >= 8
its('stdout') { should match /^tempest 22.1.0$/ }
else
its('stderr') { should match /^tempest 22.1.0$/ }
end
when 'debian' when 'debian'
its('stdout') { should match /^tempest 22.1.0$/ } its('stdout') { should match /^tempest 22.1.0$/ }
end end

View File

@ -1,5 +1,6 @@
openrc = 'bash -c "source /root/openrc && ' openrc = 'bash -c "source /root/openrc && '
platform = os.family platform = os.family
os_release = os.release.to_i
%w( %w(
9696 9696
@ -38,8 +39,14 @@ describe command "#{openrc} openstack subnet show local_subnet -f shell -c enabl
should include 'allocation_pools="[{\'start\': \'192.168.180.2\', \'end\': \'192.168.180.254\'}]"' should include 'allocation_pools="[{\'start\': \'192.168.180.2\', \'end\': \'192.168.180.254\'}]"'
end end
when 'redhat' when 'redhat'
its('stdout') do if os_release >= 8
should include 'allocation_pools="[{u\'start\': u\'192.168.180.2\', u\'end\': u\'192.168.180.254\'}]' its('stdout') do
should include 'allocation_pools="[{\'start\': \'192.168.180.2\', \'end\': \'192.168.180.254\'}]"'
end
else
its('stdout') do
should include 'allocation_pools="[{u\'start\': u\'192.168.180.2\', u\'end\': u\'192.168.180.254\'}]'
end
end end
end end
its('stdout') { should include 'cidr="192.168.180.0/24"' } its('stdout') { should include 'cidr="192.168.180.0/24"' }

View File

@ -13,7 +13,14 @@ describe command 'rabbitmqctl list_users' do
its('stdout') { should match /admin\t\[administrator\]\n/ } its('stdout') { should match /admin\t\[administrator\]\n/ }
end end
os_release = os.release.to_i
os_family = os.family
describe command 'rabbitmqctl list_vhosts' do describe command 'rabbitmqctl list_vhosts' do
its('exit_status') { should eq 0 } its('exit_status') { should eq 0 }
its('stdout') { should match %r{^Listing vhosts\n/\n$} } if os_release >= 8 && os_family == 'redhat'
its('stdout') { should match %r{^Listing vhosts ...\nname\n/\n$} }
else
its('stdout') { should match %r{^Listing vhosts\n/\n$} }
end
end end