Skip to content

Commit 4177fe1

Browse files
committed
feat: removed dependencies on ansible_facts.packages
1 parent 85de6d2 commit 4177fe1

28 files changed

+300
-122
lines changed

roles/sap_general_preconfigure/tasks/RedHat/assert-configuration.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# SPDX-License-Identifier: Apache-2.0
22
---
33

4+
- name: Gather package facts again after the installation phase
5+
ansible.builtin.package_facts:
6+
tags:
7+
- always
8+
49
- name: Assert - List required SAP Notes
510
ansible.builtin.debug:
611
var: __sap_general_preconfigure_sapnotes_versions | difference([''])

roles/sap_general_preconfigure/tasks/RedHat/assert-installation.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# SPDX-License-Identifier: Apache-2.0
22
---
33

4+
- name: Gather package facts
5+
ansible.builtin.package_facts:
6+
tags:
7+
- sap_general_preconfigure_installation
8+
49
- name: Check enabled repos
510
when: sap_general_preconfigure_enable_repos
611
block:

roles/sap_general_preconfigure/tasks/RedHat/configuration.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# SPDX-License-Identifier: Apache-2.0
22
---
33

4+
- name: Gather package facts again after the installation phase
5+
ansible.builtin.package_facts:
6+
tags:
7+
- always
8+
49
- name: Configure - List required SAP Notes
510
ansible.builtin.debug:
611
var: __sap_general_preconfigure_sapnotes_versions | difference([''])

roles/sap_general_preconfigure/tasks/RedHat/installation.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# SPDX-License-Identifier: Apache-2.0
22
---
33

4+
- name: Gather package facts
5+
ansible.builtin.package_facts:
6+
tags:
7+
- sap_general_preconfigure_installation
8+
49
- name: Perform steps for enabling required repos
510
when: sap_general_preconfigure_enable_repos
611
block:

roles/sap_general_preconfigure/tasks/SLES/assert-installation.yml

Lines changed: 76 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,86 @@
11
# SPDX-License-Identifier: Apache-2.0
22
---
33

4-
- name: Get list of what provides packages # noqa command-instead-of-module
5-
ansible.builtin.command:
6-
cmd: "rpm -q --whatprovides {{ item }}"
7-
register: __sap_general_preconfigure_register_whatprovides
4+
# Both sap_general_preconfigure_packages and __sap_general_preconfigure_min_pkgs are checked at same time.
5+
# Check rpm --whatprovides only if package cannot be found directly.
6+
- name: Query RPM packages
7+
ansible.builtin.shell:
8+
cmd: |
9+
if rpm -q {{ item }} &> /dev/null;
10+
then rpm -q {{ item }}
11+
else rpm -q --whatprovides {{ item }};
12+
fi
13+
register: __sap_general_preconfigure_register_packages
814
changed_when: false
915
ignore_errors: true
10-
loop: "{{ sap_general_preconfigure_packages }}"
16+
loop: "{{ sap_general_preconfigure_packages if not sap_general_preconfigure_min_package_check | bool
17+
else ((sap_general_preconfigure_packages | d([])) + (__sap_general_preconfigure_min_pkgs | d([])) | map(attribute='0') | unique) }}"
1118

1219

13-
# Both sap_general_preconfigure_packages and __sap_general_preconfigure_min_pkgs are checked at same time.
1420
- name: Assert that all required packages are installed
1521
ansible.builtin.assert:
16-
that: item in ansible_facts.packages
17-
or __sap_general_preconfigure_register_whatprovides.results | selectattr('item', 'equalto', item) | map(attribute='rc') | first == 0
22+
that: __sap_general_preconfigure_register_packages.results | selectattr('item', 'equalto', item) | map(attribute='rc') | first == 0
1823
fail_msg: "FAIL: Package '{{ item }}' is not installed!"
1924
success_msg: "PASS: Package '{{ item }}' is installed."
2025
loop: "{{ sap_general_preconfigure_packages if not sap_general_preconfigure_min_package_check | bool
2126
else ((sap_general_preconfigure_packages | d([])) + (__sap_general_preconfigure_min_pkgs | d([])) | map(attribute='0') | unique) }}"
2227
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
2328

2429

25-
# Availability of minimum packages is checked above.
26-
- name: Assert that all minimum required packages are installed with minimum version
27-
ansible.builtin.assert:
28-
that:
29-
- __version is version(item[1], '>=')
30-
fail_msg: "FAIL: Minimum package version '{{ item[0] }}-{{ item[1] }}' is not installed! Current version: '{{ __version }}'"
31-
success_msg: "PASS: Minimum package version '{{ item[0] }}-{{ item[1] }}' is installed."
32-
vars:
33-
__version: "{{ ansible_facts.packages[item[0]][0]['version'] ~ '-' ~ ansible_facts.packages[item[0]][0]['release']
34-
~ '.' ~ ansible_facts.packages[item[0]][0]['arch']}}"
35-
loop: "{{ __sap_general_preconfigure_min_pkgs }}"
30+
- name: Block for minimum required packages assert
3631
when:
3732
- sap_general_preconfigure_min_package_check | bool
3833
- __sap_general_preconfigure_min_pkgs | d([])
39-
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
34+
block:
35+
- name: Query RPM packages for minimum required packages
36+
ansible.builtin.shell:
37+
cmd: |
38+
if rpm -q {{ item[0] }} &> /dev/null;
39+
then rpm -q --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}\n' {{ item[0] }}
40+
else rpm -q --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}\n' --whatprovides {{ item[0] }};
41+
fi
42+
register: __sap_general_preconfigure_register_packages_minimum
43+
changed_when: false
44+
ignore_errors: true
45+
loop: "{{ __sap_general_preconfigure_min_pkgs }}"
4046

4147

48+
- name: Assert that all minimum required packages are installed with minimum version
49+
ansible.builtin.assert:
50+
that:
51+
- __version[0] is version(item[1], '>=')
52+
fail_msg: "FAIL: Minimum package version '{{ item[0] }}-{{ item[1] }}' is not installed! Current version: '{{ __version[0] }}'"
53+
success_msg: "PASS: Minimum package version '{{ item[0] }}-{{ item[1] }}' is installed."
54+
vars:
55+
__version:
56+
"{{ __sap_general_preconfigure_register_packages_minimum.results | selectattr('item', 'equalto', item) | map(attribute='stdout') }}"
57+
loop: "{{ __sap_general_preconfigure_min_pkgs }}"
58+
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
59+
when: __sap_general_preconfigure_register_packages.results | selectattr('item', 'equalto', item[0]) | map(attribute='rc') | first == 0
60+
61+
62+
- name: Gather service facts
63+
ansible.builtin.service_facts:
64+
65+
# Service packagekit is part of PackageKit-backend-zypp (SLE-Module-Desktop-Applications)
66+
# This service creates zypper locks and causes package install failures.
67+
- name: Wait for stop of packagekit.service
68+
ansible.builtin.shell: |
69+
set -o pipefail && bash -c '
70+
while (ps aux | grep "[z]ypper" | grep -v grep) || (ps aux | grep "/usr/lib/packagekitd" | grep -v grep) ||
71+
([ -f /var/run/zypp.pid ] && [ -s /var/run/zypp.pid ]); do
72+
sleep 10;
73+
done'
74+
register: __packagekit_service_check
75+
changed_when: false
76+
until: __packagekit_service_check.rc == 0
77+
retries: 60
78+
when: "'packagekit.service' in ansible_facts.services"
79+
4280
- name: Get info about possible package updates # noqa command-instead-of-module
4381
ansible.builtin.command:
4482
cmd: zypper -q patch-check
45-
timeout: 120
46-
retries: 5
83+
timeout: 60
4784
register: __sap_general_preconfigure_register_zypper_check_update_assert
4885
changed_when: false
4986
ignore_errors: true # true, because unpatched system is always error.
@@ -81,13 +118,24 @@
81118
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
82119

83120

84-
- name: Assert saptune is at requested version
85-
ansible.builtin.assert:
86-
that: ansible_facts.packages['saptune'][0]['version'] == sap_general_preconfigure_saptune_version
87-
fail_msg: "FAIL: saptune version installed is {{ ansible_facts.packages['saptune'][0]['version']
88-
}} but the version {{ sap_general_preconfigure_saptune_version }} was expected"
89-
success_msg: "PASS: the installed version of saptune meets the expected version: {{ sap_general_preconfigure_saptune_version }}"
121+
- name: Block to assert that correct saptune version is installed
90122
when:
91123
- __sap_general_preconfigure_use_saptune
92124
- sap_general_preconfigure_saptune_version is defined
93125
- sap_general_preconfigure_saptune_version | length > 0
126+
block:
127+
# We are checking for %{VERSION} (e.g. 3.1.4), not full %{VERSION}-%{RELEASE}.%{ARCH}
128+
- name: Check saptune version # noqa: command-instead-of-module
129+
ansible.builtin.command:
130+
cmd: rpm -q --queryformat '%{VERSION}\n' saptune
131+
register: __sap_general_preconfigure_register_saptune_version
132+
changed_when: false
133+
ignore_errors: true
134+
135+
- name: Assert saptune is at requested version
136+
ansible.builtin.assert:
137+
that: __sap_general_preconfigure_register_saptune_version.stdout == sap_general_preconfigure_saptune_version
138+
fail_msg: "FAIL: saptune version installed is {{ __sap_general_preconfigure_register_saptune_version.stdout
139+
}} but the version {{ sap_general_preconfigure_saptune_version }} was expected"
140+
success_msg: "PASS: the installed version of saptune meets the expected version: {{ sap_general_preconfigure_saptune_version }}"
141+
when: __sap_general_preconfigure_register_saptune_version.rc == 0

roles/sap_general_preconfigure/tasks/SLES/generic/saptune_takeover.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,19 @@
1515
- __sap_general_preconfigure_use_saptune
1616
- __sap_general_preconfigure_register_saptune_check_before.rc != 0
1717
block:
18+
- name: Check saptune version # noqa: command-instead-of-module
19+
ansible.builtin.command:
20+
cmd: rpm -q sapconf
21+
register: __sap_general_preconfigure_register_sapconf
22+
changed_when: false
23+
ignore_errors: true
24+
1825
- name: Ensure sapconf is stopped and disabled
1926
ansible.builtin.systemd:
2027
name: sapconf
2128
state: stopped
2229
enabled: false
23-
when: "'sapconf' in ansible_facts.packages"
30+
when: __sap_general_preconfigure_register_sapconf
2431

2532
- name: Make sure that sapconf and tuned are stopped and disabled
2633
ansible.builtin.command:

roles/sap_general_preconfigure/tasks/SLES/installation.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
# SPDX-License-Identifier: Apache-2.0
22
---
33

4+
# Requirement for package_facts Ansible Module
5+
- name: Ensure OS Package for Python Lib of rpm bindings is enabled for System Python
6+
ansible.builtin.package:
7+
name: python3-rpm
8+
state: present
9+
10+
- name: Gather package facts
11+
ansible.builtin.package_facts:
12+
tags:
13+
- sap_general_preconfigure_installation
14+
415
- name: Gather service facts
516
ansible.builtin.service_facts:
617

roles/sap_general_preconfigure/tasks/main.yml

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,6 @@
106106
tags:
107107
- always
108108

109-
# Requirement for package_facts Ansible Module
110-
- name: For SLES ensure OS Package for Python Lib of rpm bindings is enabled for System Python
111-
ansible.builtin.package:
112-
name: python3-rpm
113-
state: present
114-
when: ansible_os_family == "Suse"
115-
116-
# required for installation and configuration tasks:
117-
- name: Gather package facts
118-
ansible.builtin.package_facts:
119-
tags:
120-
- sap_general_preconfigure_installation
121-
122109
- name: Include tasks from 'installation.yml'
123110
ansible.builtin.include_tasks:
124111
file: '{{ item }}/{{ __sap_general_preconfigure_fact_assert_filename_prefix }}installation.yml'
@@ -132,11 +119,6 @@
132119
tags:
133120
- sap_general_preconfigure_installation
134121

135-
- name: Gather package facts again after the installation phase
136-
ansible.builtin.package_facts:
137-
tags:
138-
- always
139-
140122
- name: Include tasks from 'configuration.yml'
141123
ansible.builtin.include_tasks:
142124
file: '{{ item }}/{{ __sap_general_preconfigure_fact_assert_filename_prefix }}configuration.yml'

roles/sap_general_preconfigure/tasks/sapnote/2578899/assert-configuration.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,14 @@
5757
block:
5858

5959
- name: Gather kernel parameters
60-
ansible.builtin.setup:
61-
filter: ansible_kernel
60+
ansible.builtin.command: sysctl kernel.pid_max
61+
register: __sap_general_preconfigure_register_pid_max
62+
changed_when: false
6263

6364
- name: Assert that kernel parameter pid_max is set to 4194304
6465
ansible.builtin.assert:
6566
that:
66-
- "ansible_kernel.sysctl['kernel.pid_max'] == '4194304'"
67+
- "__sap_general_preconfigure_register_pid_max.stdout.split('=')[1] | trim == '4194304'"
6768
fail_msg: "FAIL: Kernel parameter kernel.pid_max is not set to 4194304!"
6869
success_msg: "PASS: Kernel parameter kernel.pid_max is set to 4194304."
6970
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"

roles/sap_general_preconfigure/tasks/sapnote/2578899/assert-installation.yml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
# SPDX-License-Identifier: Apache-2.0
22
---
33

4-
- name: Get list of what provides packages # noqa command-instead-of-module
5-
ansible.builtin.command:
6-
cmd: "rpm -q --whatprovides {{ item }}"
7-
register: __sap_general_preconfigure_register_whatprovides
4+
# Check rpm --whatprovides only if package cannot be found directly.
5+
- name: Query RPM packages
6+
ansible.builtin.shell:
7+
cmd: |
8+
if rpm -q {{ item }} &> /dev/null;
9+
then rpm -q {{ item }}
10+
else rpm -q --whatprovides {{ item }};
11+
fi
12+
register: __sap_general_preconfigure_register_packages
813
changed_when: false
14+
ignore_errors: true
915
loop: "{{ __sap_general_preconfigure_packages_2578899 }}"
1016

1117
- name: Assert that all required packages are installed
1218
ansible.builtin.assert:
13-
that: item in ansible_facts.packages
14-
or __sap_general_preconfigure_register_whatprovides.results | selectattr('item', 'equalto', item) | map(attribute='rc') | first == 0
19+
that: __sap_general_preconfigure_register_packages.results | selectattr('item', 'equalto', item) | map(attribute='rc') | first == 0
1520
fail_msg: "FAIL: Package '{{ item }}' is not installed!"
1621
success_msg: "PASS: Package '{{ item }}' is installed."
1722
loop: "{{ __sap_general_preconfigure_packages_2578899 }}"

0 commit comments

Comments
 (0)