Cannot perform yum update on my RHV manager (ansible conflict)

Solution Verified - Updated

Environment

  • Red Hat Virtualization (RHV) 4.3
  • Red Hat Virtualization (RHV) 4.4
  • ovirt-engine-4.3.11.4-0.1.el7.noarch
  • ovirt-hosted-engine-setup-2.3.13-2.el7ev.noarch
  • Red Hat Enterprise Linux (acting as a RHV host)

Issue

  • After running engine-setup and upgrading RHV from 4.3.9 to 4.3.11, I cannot do a complete yum update because the ansible requirement is locked to 2.9.13 while the one in the required repository is 2.9.14:
# yum update 
Loaded plugins: enabled_repos_upload, package_upload, product-id, search-disabled-repos, subscription-manager,
              : tracer_upload, versionlock
rhel-7-server-ansible-2.9-rpms                                                                 | 2.3 kB  00:00:00     
rhel-7-server-rh-common-rpms                                                                   | 2.1 kB  00:00:00     
rhel-7-server-rhv-4-manager-tools-rpms                                                         | 2.3 kB  00:00:00     
rhel-7-server-rhv-4.3-manager-rpms                                                             | 2.4 kB  00:00:00     
rhel-7-server-rpms                                                                             | 2.0 kB  00:00:00     
rhel-7-server-supplementary-rpms                                                               | 2.0 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package ansible.noarch 0:2.9.13-1.el7ae will be updated
--> Processing Dependency: ansible = 2.9.13 for package: ovirt-engine-4.3.11.4-0.1.el7.noarch
---> Package ansible.noarch 0:2.9.14-1.el7ae will be an update
--> Finished Dependency Resolution
Error: Package: ovirt-engine-4.3.11.4-0.1.el7.noarch (@rhel-7-server-rhv-4.3-manager-rpms)
           Requires: ansible = 2.9.13
           Removing: ansible-2.9.13-1.el7ae.noarch (@rhel-7-server-ansible-2-rpms)
               ansible = 2.9.13-1.el7ae
           Updated By: ansible-2.9.14-1.el7ae.noarch (rhel-7-server-ansible-2.9-rpms)
               ansible = 2.9.14-1.el7ae
  • When trying to update my RHEL based hypervisor, I get a similar ansible dependency issue (with ovirt-hosted-engine-setup

Resolution

RHEL8 (RHV 4.4)
Starting RHV 4.4.5, Ansible is shipped via RHV channels (This content is not included.BZ#1917409) and ansible-2.9-for-rhel-8-x86_64-rpms channel should be removed for RHV components.

The workaround before RHV 4.4.5 was to add the following to /etc/yum.conf:

best=False

This will allow the system to be updated even if some packages cannot be updated to the best candidate (latest available version).

RHEL7 (RHV 4.3)

  • Update your manager (or RHEL host hypervisor) so that ansible is at version 2.9.13. You can do this by disabling the package that is too new. Add to /etc/yum.conf:
exclude=ansible-2.9.1[4-9] ansible-2.9.[2-9][0-9]*

If the newer version of ansible is already installed, you can downgrade it like so:

yum downgrade ansible-2.9.13-1.el7ae.noarch

Once the system is updated and ansible is at the correct version (ansible-2.9.13), we can use version lock to prevent it trying to update:

yum versionlock ansible

Alternatively, we can disable the ansible repository completely:

subscription-manager repos --disable=rhel-7-server-ansible-2*rpms

For both cases, the exclude line can now be removed from /etc/yum.conf.

Root Cause

The newest version of ansible is not tested with the current ovirt-engine release. Future versions of RHV will implement this setting by default ('best=False' in /etc/yum.conf), however this feature is only available on RHEL8.

Diagnostic Steps

#  rpm -q ovirt-engine
ovirt-engine-4.3.11.4-0.1.el7.noarch
# rpm -qR ovirt-engine |grep ansible
ansible = 2.9.13                                                                <= ansible version required
ovirt-ansible-roles >= 1.1.6
#  yum list --showduplicates ansible
Loaded plugins: product-id, search-disabled-repos, subscription-manager, versionlock
Installed Packages
ansible.noarch                    2.9.13-1.el7ae                    @rhel-7-server-ansible-2.9-rpms
Available Packages
ansible.noarch                    2.9.0-2.el7                       rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.1-1.el7                       rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.2-1.el7ae                     rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.4-1.el7ae                     rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.5-1.el7ae                     rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.6-1.el7ae                     rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.7-1.el7ae                     rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.9-1.el7ae                     rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.10-1.el7ae                    rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.11-1.el7ae                   rhel-7-server-ansible-2.9-rpms 
ansible.noarch                    2.9.13-1.el7ae                    rhel-7-server-ansible-2.9-rpms  <= required version
ansible.noarch                    2.9.14-1.el7ae                    rhel-7-server-ansible-2.9-rpms  <= later available versions
ansible.noarch                    2.9.15-1.el7ae                    rhel-7-server-ansible-2.9-rpms  <=
ansible.noarch                    2.9.16-1.el7ae                    rhel-7-server-ansible-2.9-rpms  <=
ansible.noarch                    2.9.17-1.el7ae                    rhel-7-server-ansible-2.9-rpms  <=

Category
Tags

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.