Skip to content

Commit

Permalink
Fixes for CentOS 8.3
Browse files Browse the repository at this point in the history
* Bump stackhpc.libvirt-host to v1.7.1. On seed-hypervisors installed
  using CentOS 8.2 or earlier, interaction with libvirt may fail due to
  libgcrypt being incompatible. See
  stackhpc/ansible-role-libvirt-host#42

* Bump MichaelRigart.interfaces to v1.9.2. The CentOS 8.3 cloud image
  includes an ifcfg-ens3-1 file. See
  michaelrigart/ansible-role-interfaces#93

* Previously a second libvirt daemon was installed by Tenks on the host,
  however changes in libvirt 6.0.0 to separate libvirtd into multiple
  daemons do not allow for customisation of the PID files used by the
  new daemons. This leads to a conflict between the container and host
  daemons. Update the Tenks config to use the containerised Nova libvirt
  daemon. This depends on a change to the stackhpc.libvirt-host role:
  stackhpc/ansible-role-libvirt-host#44

* Not CentOS 8.3 related, but tox jobs are now failing on python
  dependencies. Remove upper limits from docker and paramiko. Update
  hacking which is requiring an old version of ansible-lint through the
  new pip dependency resolver (cherry picked from commit
  7b60585).

This also includes a backport of the following change:

CI: add dummy1 port for seed upgrade and VM jobs

For some reason this configuration was omitted or incomplete in these
jobs. Without this configuration, Kayobe development configuration adds
eth1 to the breth1 bridge if it exists, or leaves the bridge without a
port otherwise. This can lead to network connectivity issues, if the IP
address of eth1 becomes inaccessible when it is added to breth1.

This change fixes the issue by ensuring that the dummy1 interface
exists, and configuring the aio network to add it to breth1 as a port,
instead of eth1.

Backported Change-Id: I47115e5d8d1fb448cb9e46dc43b56c64987e428b
(cherry picked from commit 0766df1)

Depends-On: https://review.opendev.org/c/openstack/kayobe/+/767600

Story: 2008429
Task: 41378

Change-Id: Ie8fd965165e8d347d27528a2c16d0647e412ccdc
(cherry picked from commit 4398856)
  • Loading branch information
priteau authored and markgoddard committed Dec 22, 2020
1 parent a8d5cc0 commit 5cfd2ba
Show file tree
Hide file tree
Showing 9 changed files with 51 additions and 12 deletions.
2 changes: 2 additions & 0 deletions bindep.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
libpcre3-dev [platform:dpkg test]
pcre-devel [platform:rpm test]
20 changes: 14 additions & 6 deletions dev/tenks-deploy-config-compute.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,18 @@ physnet_mappings:
deploy_kernel: ipa.kernel
deploy_ramdisk: ipa.initramfs

# Use a custom socket path to avoid a conflict with the nova_libvirt kolla
# container which bind mounts /var/run/libvirt.
libvirt_custom_socket_path: /var/run/libvirt-tenks
# Use the libvirt daemon deployed by Kolla Ansible in the nova_libvirt
# container. Tenks will install libvirt client packages.
libvirt_host_install_daemon: false

# Nested virtualisation is not working well in CI currently. Force the use of
# QEMU.
libvirt_vm_engine: "qemu"
# QEMU may not be installed on the host, so set the path and avoid
# autodetection.
libvirt_vm_emulator: "/usr/libexec/qemu-kvm"

# Specify a log path in the kolla_logs Docker volume. It is accessible on the
# host at the same path.
libvirt_vm_default_console_log_dir: "/var/log/kolla/tenks"

# Console logs are owned by the ID of the Nova user in the nova_libvirt
# container.
libvirt_vm_log_owner: 42436
8 changes: 8 additions & 0 deletions playbooks/kayobe-seed-upgrade-base/overrides.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ kolla_ansible_source_url: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org
kolla_ansible_source_version: "{{ zuul.projects['opendev.org/openstack/kolla-ansible'].checkout }}"
pip_upper_constraints_file: "/tmp/upper-constraints.txt"
{% endif %}
kolla_openstack_logging_debug: True

# NOTE(mgoddard): We're using a cirros image, which doesn't require the
# resolv.conf work around used for CentOS.
Expand All @@ -22,3 +23,10 @@ overcloud_host_image_workaround_resolv_enabled: false
# Use the CI infra's PyPI mirror.
pip_local_mirror: true
pip_index_url: "http://{{ zuul_site_mirror_fqdn }}/pypi/simple"

# NOTE(mgoddard): CentOS 8 removes interfaces from their bridge during ifdown,
# and removes the bridge if there are no interfaces left. When Kayobe bounces
# veth links plugged into the bridge, it causes the bridge which has the IP we
# are using for SSH to be removed. Use a dummy interface.
aio_bridge_ports:
- dummy1
8 changes: 8 additions & 0 deletions playbooks/kayobe-seed-upgrade-base/pre.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,11 @@
- "ip l add breth1 type bridge"
- "ip l set breth1 up"
- "ip a add 192.168.33.5/24 dev breth1"
# NOTE(mgoddard): CentOS 8 removes interfaces from their bridge during
# ifdown, and removes the bridge if there are no interfaces left. When
# Kayobe bounces veth links plugged into the bridge, it causes the
# bridge which has the IP we are using for SSH to be removed. Use a
# dummy interface.
- "ip l add dummy1 type dummy"
- "ip l set dummy1 up"
- "ip l set dummy1 master breth1"
7 changes: 7 additions & 0 deletions playbooks/kayobe-seed-vm-base/overrides.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,10 @@ seed_vm_configdrive_device: disk
# /etc/network/interfaces.
configdrive_os_family: Debian
configdrive_debian_network_interfaces_supports_glob: false

# NOTE(mgoddard): CentOS 8 removes interfaces from their bridge during ifdown,
# and removes the bridge if there are no interfaces left. When Kayobe bounces
# veth links plugged into the bridge, it causes the bridge which has the IP we
# are using for SSH to be removed. Use a dummy interface.
aio_bridge_ports:
- dummy1
4 changes: 4 additions & 0 deletions releasenotes/notes/centos-8.3-89d07c8f8db5b17b.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
fixes:
- |
Fixes a number of issues with using Kayobe on CentOS 8.3.
4 changes: 2 additions & 2 deletions requirements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# There are no versioned releases of this role.
version: 8438592c84585c86e62ae07e526d3da53629b377
- src: MichaelRigart.interfaces
version: v1.6.0
version: v1.9.2
- src: mrlesmithjr.manage-lvm
version: v0.1.4
- src: mrlesmithjr.mdadm
Expand All @@ -22,7 +22,7 @@
- src: stackhpc.grafana-conf
version: 1.1.0
- src: stackhpc.libvirt-host
version: v1.7.0
version: v1.7.1
- src: stackhpc.libvirt-vm
version: v1.13.0
- src: stackhpc.luks
Expand Down
6 changes: 3 additions & 3 deletions test-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ ansible-lint==4.2.0 # MIT
bashate>=0.2 # Apache-2.0
coverage>=4.0 # Apache-2.0
doc8 # Apache-2.0
docker<3 # Apache-2.0
hacking>=0.12.0,<0.13 # Apache-2.0
docker # Apache-2.0
hacking>=3.0,<3.1.0 # Apache-2.0
molecule<3 # MIT
oslotest>=1.10.0 # Apache-2.0
# paramiko 2.5.0 makes the kayobe-tox-molecule job fail.
paramiko<2.5.0
paramiko
stestr # Apache-2.0
yamllint # GPLv3
4 changes: 3 additions & 1 deletion tools/run-bashate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
# Ignore E006 -- line length greater than 80 char

ROOT=$(readlink -fn $(dirname $0)/.. )
# NOTE(priteau): ignore E010 because it fails on one-liner bash loops:
# https://bugs.launchpad.net/bash8/+bug/1895102
find $ROOT -not -wholename \*.tox/\* -and -not -wholename \*.test/\* \
-and -name \*.sh -print0 | xargs -0 bashate -v --ignore E006
-and -name \*.sh -print0 | xargs -0 bashate -v --ignore E006 --ignore E010

0 comments on commit 5cfd2ba

Please sign in to comment.