tripleo-bootstrap - check packeges fact befor install

When repository files are present, but the ctlplane is not on a
routed network. (I.e the node cannot connect to repositories.)
The ansible built in `package` will fail despite the fact that
the packages is already installed.

This change adds a task to check that the packages required are
isntalled using `rpm --query --whatprovides <PGK_LIST>`.
`--whatprovides` is used to find out if a wrapper rpm for OVS with
custom versioning scheme is installed. If a wrapper is installed
'openvswitch' is appended to the list of installed packages.

Related: RHBZ#2048134
Closes-Bug: #1959731
Change-Id: Ie448e8f795325cc3ae357fae32f3a47406101f25
(cherry picked from commit 37fac64938)
This commit is contained in:
Harald Jensås 2022-02-02 02:07:07 +01:00
parent fddf6fe3b3
commit 7b002dec7d
2 changed files with 46 additions and 5 deletions

View File

@ -0,0 +1,13 @@
---
fixes:
- |
Deployment failure was observed when repository files are present, but the
ctlplane is a non routed network. The node cannot connect to repositories
before the network is configured in this case. The tripleo-bootstrap role
uses the ansible built-in ``package`` which fail despite the fact that the
packages are already installed in case it cannot connect to repositories.
The tripleo-bootstrap role will now inspect the installed packages to
check wheater or not packages are already installed. When packages are
installed, the ``package`` tasks are skipped. See bug:
`1959731 <https://bugs.launchpad.net/tripleo/+bug/1959731>`_.

View File

@ -33,14 +33,31 @@
- always
# Currently only supported on RHEL as tripleo does not have a version package
- name: Deploy release version package
become: true
package:
name: "{{ tripleo_bootstrap_release_version_package }}"
state: present
- name: Release version package
when:
- (ansible_facts['distribution'] | lower) == 'redhat'
- (tripleo_bootstrap_release_version_package |list | length) > 0
block:
- name: Check release version package is installed
command: "rpm -q --whatprovides {{ tripleo_bootstrap_release_version_package | join(' ') }}"
args:
warn: false
register: rpm_query_result
failed_when: false
- name: Deploy release version package
become: true
package:
name: "{{ tripleo_bootstrap_release_version_package }}"
state: present
when:
- rpm_query_result.rc > 0
- name: Check required packages to bootstrap TripleO is installed
command: "rpm -q --whatprovides {{ tripleo_bootstrap_packages_bootstrap | join(' ') }}"
args:
warn: false
register: rpm_query_result
failed_when: false
- name: Deploy required packages to bootstrap TripleO
become: true
@ -56,6 +73,8 @@
- (tripleo_bootstrap_packages_bootstrap_result.rc | int) == 1
- not ('No package openvswitch available.' in tripleo_bootstrap_packages_bootstrap_result.failures | default([]))
register: tripleo_bootstrap_packages_bootstrap_result
when:
- rpm_query_result.rc > 0
- name: Create /var/lib/heat-config/tripleo-config-download directory for deployment data
become: true
@ -68,10 +87,19 @@
when:
- (tripleo_bootstrap_legacy_network_packages | length) > 0
block:
- name: Check required legacy network packages for bootstrap TripleO is installed
command: "rpm -q --whatprovides {{ tripleo_bootstrap_legacy_network_packages | join(' ') }}"
args:
warn: false
register: rpm_query_result
failed_when: false
- name: Deploy network-scripts required for deprecated network service
package:
name: "{{ tripleo_bootstrap_legacy_network_packages }}"
state: present
when:
- rpm_query_result.rc > 0
- name: Ensure network service is enabled
systemd: