diff --git a/.ansible-lint b/.ansible-lint
index 38637804..ee164092 100644
--- a/.ansible-lint
+++ b/.ansible-lint
@@ -2,6 +2,7 @@
# Collection wide lint-file
# DO NOT CHANGE
exclude_paths:
+ - .ansible/
- .cache/
- .github/
#- docs/
@@ -9,11 +10,12 @@ exclude_paths:
- playbooks/
- roles/sap_anydb_install_oracle
#- roles/sap_general_preconfigure
+ #- roles/sap_ha_install_anydb_ibmdb2
#- roles/sap_ha_install_hana_hsr
#- roles/sap_ha_pacemaker_cluster
#- roles/sap_hana_install
#- roles/sap_hana_preconfigure
- - roles/sap_hostagent
+ #- roles/sap_hostagent
#- roles/sap_install_media_detect
#- roles/sap_netweaver_preconfigure
#- roles/sap_storage_setup
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 5191af6d..87c0ef79 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -5,6 +5,49 @@ community.sap_install Release Notes
.. contents:: Topics
+1.5.2
+Release Summary
+---------------
+- Release Date: 2025-01-24
+
+This is a bugfix release of the `community.sap_install` collection.
+
+Changes
+-------------
+- sap_*_preconfigure: Add code for RHEL 10 support (https://github.com/sap-linuxlab/community.sap_install/pull/938)
+- sap_*_preconfigure/Suse: Rework of preconfigure roles for Suse, add missing notes. (https://github.com/sap-linuxlab/community.sap_install/pull/930)
+
+Bugfixes
+--------
+- sap_netweaver_preconfigure: fix argument_specs validation error (https://github.com/sap-linuxlab/community.sap_install/pull/940)
+- sap_general_preconfigure: No longer install locale packages in RHEL 7 (https://github.com/sap-linuxlab/community.sap_install/pull/937)
+- sap_general_preconfigure: Fix check mode (https://github.com/sap-linuxlab/community.sap_install/pull/935)
+
+
+1.5.1
+Release Summary
+---------------
+- Release Date: 2025-01-15
+
+This is a bugfix release of the `community.sap_install` collection.
+
+Minor Changes
+-------------
+- sap_ha_pacemaker_cluster: enable Simple Mount on RHEL (https://github.com/sap-linuxlab/community.sap_install/pull/931)
+- sap_ha_pacemaker_cluster/SUSE: Rework SAPHanaSR-angi pre-steps and add SLES 16 vars (https://github.com/sap-linuxlab/community.sap_install/pull/928)
+- sap_swpm, sap_general_preconfigure: Add variables for sap_install FQCN collection name for calling roles (https://github.com/sap-linuxlab/community.sap_install/pull/925)
+- sap_general_preconfigure: Implement SAP note 2369910 (https://github.com/sap-linuxlab/community.sap_install/pull/914)
+- sap_ha_pacemaker_cluster: ANGI on RHEL and small improvements (https://github.com/sap-linuxlab/community.sap_install/pull/911)
+- sap_*_preconfigure, sap_ha_pacemaker_cluster: Reworked loading vars (https://github.com/sap-linuxlab/community.sap_install/pull/910)
+
+Bugfixes
+--------
+- sap_swpm: Use master password only when necessary (https://github.com/sap-linuxlab/community.sap_install/pull/920)
+- sap_swpm: Fix error when using tag sap_swpm_generate_inifile (https://github.com/sap-linuxlab/community.sap_install/pull/918)
+- sap_swpm: Fix error when installing SAP NW750 JAVA or SOLMAN72SR2 JAVA instances (https://github.com/sap-linuxlab/community.sap_install/pull/916)
+- sap_install_media_detect: Fix wrong sap_export_solman_java detection (https://github.com/sap-linuxlab/community.sap_install/pull/913)
+
+
v1.5.0
======
diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml
index b81cefc3..4671a302 100644
--- a/changelogs/changelog.yaml
+++ b/changelogs/changelog.yaml
@@ -273,3 +273,32 @@ releases:
- sap_ha_install_anydb_ibmdb2: Linting and sles bug fixes (https://github.com/sap-linuxlab/community.sap_install/pull/803)
'
release_date: '2024-11-29'
+ 1.5.1:
+ changes:
+ release_summary: '| Release Date: 2025-01-15
+ minor_changes:
+ - sap_ha_pacemaker_cluster: enable Simple Mount on RHEL (https://github.com/sap-linuxlab/community.sap_install/pull/931)
+ - sap_ha_pacemaker_cluster/SUSE: Rework SAPHanaSR-angi pre-steps and add SLES 16 vars (https://github.com/sap-linuxlab/community.sap_install/pull/928)
+ - sap_swpm, sap_general_preconfigure: Add variables for sap_install FQCN collection name for calling roles (https://github.com/sap-linuxlab/community.sap_install/pull/925)
+ - sap_general_preconfigure: Implement SAP note 2369910 (https://github.com/sap-linuxlab/community.sap_install/pull/914)
+ - sap_ha_pacemaker_cluster: ANGI on RHEL and small improvements (https://github.com/sap-linuxlab/community.sap_install/pull/911)
+ - sap_*_preconfigure, sap_ha_pacemaker_cluster: Reworked loading vars (https://github.com/sap-linuxlab/community.sap_install/pull/910)
+ bugfixes:
+ - sap_swpm: Use master password only when necessary (https://github.com/sap-linuxlab/community.sap_install/pull/920)
+ - sap_swpm: Fix error when using tag sap_swpm_generate_inifile (https://github.com/sap-linuxlab/community.sap_install/pull/918)
+ - sap_swpm: Fix error when installing SAP NW750 JAVA or SOLMAN72SR2 JAVA instances (https://github.com/sap-linuxlab/community.sap_install/pull/916)
+ - sap_install_media_detect: Fix wrong sap_export_solman_java detection (https://github.com/sap-linuxlab/community.sap_install/pull/913)
+ '
+ release_date: '2025-01-15'
+ 1.5.2:
+ changes:
+ release_summary: '| Release Date: 2025-01-24
+ changes:
+ - sap_*_preconfigure: Add code for RHEL 10 support (https://github.com/sap-linuxlab/community.sap_install/pull/938)
+ - sap_*_preconfigure/Suse: Rework of preconfigure roles for Suse, add missing notes. (https://github.com/sap-linuxlab/community.sap_install/pull/930)
+ bugfixes:
+ - sap_netweaver_preconfigure: fix argument_specs validation error (https://github.com/sap-linuxlab/community.sap_install/pull/940)
+ - sap_general_preconfigure: No longer install locale packages in RHEL 7 (https://github.com/sap-linuxlab/community.sap_install/pull/937)
+ - sap_general_preconfigure: Fix check mode (https://github.com/sap-linuxlab/community.sap_install/pull/935)
+ '
+ release_date: '2025-01-24'
diff --git a/galaxy.yml b/galaxy.yml
index bb5e3566..1162dd11 100644
--- a/galaxy.yml
+++ b/galaxy.yml
@@ -11,7 +11,7 @@ namespace: community
name: sap_install
# The version of the collection. Must be compatible with semantic versioning
-version: 1.5.0
+version: 1.5.2
# The path to the Markdown (.md) readme file. This path is relative to the root of the collection
readme: README.md
diff --git a/requirements-workflow.txt b/requirements-workflow.txt
index 559499b7..c4faa85e 100644
--- a/requirements-workflow.txt
+++ b/requirements-workflow.txt
@@ -1,4 +1,4 @@
-ansible==9.5.1
-ansible-compat==24.7.0
-ansible-core==2.16.9
-ansible-lint==24.7.0
+ansible==11.0.0
+ansible-compat==24.10.0
+ansible-core==2.18.0
+ansible-lint==24.10.0
diff --git a/roles/sap_general_preconfigure/README.md b/roles/sap_general_preconfigure/README.md
index 3511e61e..46622beb 100644
--- a/roles/sap_general_preconfigure/README.md
+++ b/roles/sap_general_preconfigure/README.md
@@ -432,7 +432,7 @@ The IPV4 address to be used for updating or checking `/etc/hosts` entries.
### sap_general_preconfigure_db_group_name
- _Type:_ `str`
-Use this variable to specify the name of the RHEL group which is used for the database processes.
+(RedHat specific) Use this variable to specify the name of the RHEL group which is used for the database processes.
If defined, it will be used to configure process limits as per step
Configuring Process Resource Limits
diff --git a/roles/sap_general_preconfigure/defaults/main.yml b/roles/sap_general_preconfigure/defaults/main.yml
index 5cef8b73..e8db802c 100644
--- a/roles/sap_general_preconfigure/defaults/main.yml
+++ b/roles/sap_general_preconfigure/defaults/main.yml
@@ -31,6 +31,9 @@ sap_general_preconfigure_system_roles_collection: 'fedora.linux_system_roles'
# - fedora.linux_system_roles
# - redhat.rhel_system_roles
+sap_general_preconfigure_sap_install_collection: 'community.sap_install'
+# Set which Ansible Collection to use when calling sap_install roles.
+
sap_general_preconfigure_enable_repos: false
# Set to `true` if you want the role to enable the repos as configured by the following repo related parameters.
# The default is `false`, meaning that the role will not enable repos.
@@ -76,7 +79,7 @@ sap_general_preconfigure_envgroups: "{{ __sap_general_preconfigure_envgroups }}"
# Example: See README.md
sap_general_preconfigure_packages: "{{ __sap_general_preconfigure_packages }}"
-# The list of packages to install.
+# The list of packages to be installed.
# The default for this variable is set in the vars file which corresponds to the detected OS version.
sap_general_preconfigure_min_package_check: true
@@ -161,9 +164,21 @@ sap_general_preconfigure_domain: "{{ sap_domain | d(ansible_domain) }}"
# The DNS domain name to be used for updating or checking `/etc/hosts` entries.
# sap_general_preconfigure_db_group_name: (not defined by default)
-# Use this variable to specify the name of the RHEL group which is used for the database processes.
+# (RedHat specific) Use this variable to specify the name of the RHEL group which is used for the database processes.
# If defined, it will be used to configure process limits as per step
# Configuring Process Resource Limits
# Example: See README.md
+sap_general_preconfigure_run_grub2_mkconfig: true
+# By default, the role will run `grub2-mkconfig` to update the Grub configuration if necessary.
+# Set this parameter to `false` if this is not desired.
+
+# (SUSE specific) Version of saptune to install.
+# It is recommended to install latest version by keeping this variable empty.
+# This will replace the current installed version if present, even downgrade if necessary.
+sap_general_preconfigure_saptune_version: ''
+
+# in SAP Note 2369910 SAP requires English locale
+# If you want to define the locale set this to e.g. en_US.UTF-8
+sap_general_preconfigure_default_locale: ""
# END: Default Variables for sap_general_preconfigure
diff --git a/roles/sap_general_preconfigure/handlers/main.yml b/roles/sap_general_preconfigure/handlers/main.yml
index e54f6dd5..e9972197 100644
--- a/roles/sap_general_preconfigure/handlers/main.yml
+++ b/roles/sap_general_preconfigure/handlers/main.yml
@@ -1,52 +1,136 @@
# SPDX-License-Identifier: Apache-2.0
---
-# handlers file for sap_general_preconfigure
+
+# BEGIN - GRUB section
+- name: "Check if server is booted in BIOS or UEFI mode"
+ ansible.builtin.stat:
+ path: /sys/firmware/efi
+ get_checksum: false
+ register: __sap_general_preconfigure_register_stat_sys_firmware_efi
+ listen: __sap_general_preconfigure_regenerate_grub2_conf_handler
+ when:
+ - sap_general_preconfigure_run_grub2_mkconfig | d(true)
+
+- name: Debug BIOS or UEFI
+ ansible.builtin.debug:
+ var: __sap_general_preconfigure_register_stat_sys_firmware_efi.stat.exists
+ listen: __sap_general_preconfigure_regenerate_grub2_conf_handler
+ when:
+ - sap_general_preconfigure_run_grub2_mkconfig | d(true)
+
+- name: "Run grub-mkconfig (BIOS mode)"
+ ansible.builtin.command:
+ cmd: grub2-mkconfig -o /boot/grub2/grub.cfg
+ register: __sap_general_preconfigure_register_grub2_mkconfig_bios_mode
+ changed_when: true
+ listen: __sap_general_preconfigure_regenerate_grub2_conf_handler
+ notify: __sap_general_preconfigure_reboot_handler
+ when:
+ - not __sap_general_preconfigure_register_stat_sys_firmware_efi.stat.exists
+ - sap_general_preconfigure_run_grub2_mkconfig | d(true)
+
+- name: "Debug grub-mkconfig BIOS mode"
+ ansible.builtin.debug:
+ var: __sap_general_preconfigure_register_grub2_mkconfig_bios_mode.stdout_lines,
+ __sap_general_preconfigure_register_grub2_mkconfig_bios_mode.stderr_lines
+ listen: __sap_general_preconfigure_regenerate_grub2_conf_handler
+ when:
+ - not __sap_general_preconfigure_register_stat_sys_firmware_efi.stat.exists
+ - sap_general_preconfigure_run_grub2_mkconfig | d(true)
+
+- name: "Set the grub.cfg location RHEL"
+ ansible.builtin.set_fact:
+ __sap_general_preconfigure_uefi_boot_dir: /boot/efi/EFI/redhat/grub.cfg
+ listen: __sap_general_preconfigure_regenerate_grub2_conf_handler
+ when:
+ - ansible_distribution == 'RedHat'
+
+- name: "Set the grub.cfg location SLES"
+ ansible.builtin.set_fact:
+ __sap_general_preconfigure_uefi_boot_dir: /boot/efi/EFI/BOOT/grub.cfg
+ listen: __sap_general_preconfigure_regenerate_grub2_conf_handler
+ when:
+ - ansible_distribution == 'SLES' or ansible_distribution == 'SLES_SAP'
+
+- name: "Run grub-mkconfig (UEFI mode)"
+ ansible.builtin.command:
+ cmd: "grub2-mkconfig -o {{ __sap_general_preconfigure_uefi_boot_dir }}"
+ register: __sap_general_preconfigure_register_grub2_mkconfig_uefi_mode
+ changed_when: true
+ listen: __sap_general_preconfigure_regenerate_grub2_conf_handler
+ notify: __sap_general_preconfigure_reboot_handler
+ when:
+ - __sap_general_preconfigure_register_stat_sys_firmware_efi.stat.exists
+ - sap_general_preconfigure_run_grub2_mkconfig | d(true)
+
+- name: "Debug grub-mkconfig UEFI"
+ ansible.builtin.debug:
+ var: __sap_general_preconfigure_register_grub2_mkconfig_uefi_mode.stdout_lines,
+ __sap_general_preconfigure_register_grub2_mkconfig_uefi_mode.stderr_lines
+ listen: __sap_general_preconfigure_regenerate_grub2_conf_handler
+ when:
+ - __sap_general_preconfigure_register_stat_sys_firmware_efi.stat.exists
+ - sap_general_preconfigure_run_grub2_mkconfig | d(true)
+
+# END - GRUB section
+
- name: Reboot the managed node
ansible.builtin.reboot:
test_command: /bin/true
listen: __sap_general_preconfigure_reboot_handler
when:
- - sap_general_preconfigure_reboot_ok|d(false)
+ - sap_general_preconfigure_reboot_ok | d(false)
+
# Kernel update triggers zypper purge-kernels and lock after reboot.
- name: Wait for Zypper lock to be released
ansible.builtin.command:
cmd: zypper info zypper
- retries: 60
- timeout: 5
+ retries: 20
+ timeout: 30
listen: __sap_general_preconfigure_reboot_handler
when:
- ansible_os_family == 'Suse'
- sap_general_preconfigure_reboot_ok | d(false)
changed_when: false
+
- name: Let the role fail if a reboot is required
ansible.builtin.fail:
msg: Reboot is required!
listen: __sap_general_preconfigure_reboot_handler
when:
- - sap_general_preconfigure_fail_if_reboot_required|d(true)
- - not sap_general_preconfigure_reboot_ok|d(false)
+ - sap_general_preconfigure_fail_if_reboot_required | d(true)
+ - not sap_general_preconfigure_reboot_ok | d(false)
- name: Show a warning message if a reboot is required
ansible.builtin.debug:
msg: "WARN: Reboot is required!"
listen: __sap_general_preconfigure_reboot_handler
when:
- - not sap_general_preconfigure_fail_if_reboot_required|d(true)
- - not sap_general_preconfigure_reboot_ok|d(false)
+ - not sap_general_preconfigure_fail_if_reboot_required | d(true)
+ - not sap_general_preconfigure_reboot_ok | d(false)
+
+- name: Unmask packagekit.service
+ ansible.builtin.systemd_service:
+ name: packagekit.service
+ masked: false
+ listen: __sap_general_preconfigure_packagekit_handler
+
# Reasons for noqa:
# - command-instead-of-module: We want to avoid non-ansible.builtin modules where possible
# - no-changed-when: Remounting does not do any harm and does not affect idempotency.
- name: Remount /dev/shm # noqa command-instead-of-module no-changed-when
- ansible.builtin.command: mount -o remount /dev/shm
+ ansible.builtin.command:
+ cmd: mount -o remount /dev/shm
listen: __sap_general_preconfigure_mount_tmpfs_handler
tags: molecule-idempotence-notest
- name: Check if /dev/shm is available
- ansible.builtin.command: df -h /dev/shm
+ ansible.builtin.command:
+ cmd: df -h /dev/shm
register: __sap_general_preconfigure_command_df_shm_result
changed_when: false
listen: __sap_general_preconfigure_mount_tmpfs_handler
diff --git a/roles/sap_general_preconfigure/meta/argument_specs.yml b/roles/sap_general_preconfigure/meta/argument_specs.yml
index aaf3cf4a..11e2bc0b 100644
--- a/roles/sap_general_preconfigure/meta/argument_specs.yml
+++ b/roles/sap_general_preconfigure/meta/argument_specs.yml
@@ -75,6 +75,12 @@ argument_specs:
required: false
type: str
+ sap_general_preconfigure_sap_install_collection:
+ default: 'community.sap_install'
+ description: Set which Ansible Collection to use when calling sap_install roles.
+ required: false
+ type: str
+
sap_general_preconfigure_enable_repos:
default: false
description:
@@ -166,7 +172,7 @@ argument_specs:
sap_general_preconfigure_packages:
default: "{{ __sap_general_preconfigure_packages }}"
description:
- - The list of packages to install.
+ - The list of packages to be installed.
- The default for this variable is set in the vars file which corresponds to the detected OS version.
required: false
type: list
@@ -341,3 +347,11 @@ argument_specs:
sap_general_preconfigure_db_group_name: 'dba'
required: false
type: str
+
+ sap_general_preconfigure_default_locale:
+ description:
+ - Use this variable to specify the default system locale.
+ example:
+ sap_general_preconfigure_default_locale: 'en_US.UTF-8'
+ required: false
+ type: str
diff --git a/roles/sap_general_preconfigure/tasks/RedHat/assert-configuration.yml b/roles/sap_general_preconfigure/tasks/RedHat/assert-configuration.yml
index ff021f3a..af1587a5 100644
--- a/roles/sap_general_preconfigure/tasks/RedHat/assert-configuration.yml
+++ b/roles/sap_general_preconfigure/tasks/RedHat/assert-configuration.yml
@@ -1,6 +1,11 @@
# SPDX-License-Identifier: Apache-2.0
---
+- name: Gather package facts again after the installation phase
+ ansible.builtin.package_facts:
+ tags:
+ - always
+
- name: Assert - List required SAP Notes
ansible.builtin.debug:
var: __sap_general_preconfigure_sapnotes_versions | difference([''])
diff --git a/roles/sap_general_preconfigure/tasks/RedHat/assert-installation.yml b/roles/sap_general_preconfigure/tasks/RedHat/assert-installation.yml
index bba57f19..026e9b14 100644
--- a/roles/sap_general_preconfigure/tasks/RedHat/assert-installation.yml
+++ b/roles/sap_general_preconfigure/tasks/RedHat/assert-installation.yml
@@ -1,6 +1,11 @@
# SPDX-License-Identifier: Apache-2.0
---
+- name: Gather package facts
+ ansible.builtin.package_facts:
+ tags:
+ - sap_general_preconfigure_installation
+
- name: Check enabled repos
when: sap_general_preconfigure_enable_repos
block:
diff --git a/roles/sap_general_preconfigure/tasks/RedHat/configuration.yml b/roles/sap_general_preconfigure/tasks/RedHat/configuration.yml
index 3d5f8044..42f8dcb8 100644
--- a/roles/sap_general_preconfigure/tasks/RedHat/configuration.yml
+++ b/roles/sap_general_preconfigure/tasks/RedHat/configuration.yml
@@ -1,6 +1,11 @@
# SPDX-License-Identifier: Apache-2.0
---
+- name: Gather package facts again after the installation phase
+ ansible.builtin.package_facts:
+ tags:
+ - always
+
- name: Configure - List required SAP Notes
ansible.builtin.debug:
var: __sap_general_preconfigure_sapnotes_versions | difference([''])
diff --git a/roles/sap_general_preconfigure/tasks/RedHat/generic/configure-kernel-parameters.yml b/roles/sap_general_preconfigure/tasks/RedHat/generic/configure-kernel-parameters.yml
index 44989960..f0c9f704 100644
--- a/roles/sap_general_preconfigure/tasks/RedHat/generic/configure-kernel-parameters.yml
+++ b/roles/sap_general_preconfigure/tasks/RedHat/generic/configure-kernel-parameters.yml
@@ -19,6 +19,7 @@
- name: Construct the command for getting all current parameters of file '{{ sap_general_preconfigure_etc_sysctl_sap_conf }}'
ansible.builtin.command: awk 'BEGIN{FS="="; printf ("sysctl ")}{printf ("%s ", $1)}' "{{ sap_general_preconfigure_etc_sysctl_sap_conf }}"
register: __sap_general_preconfigure_register_sap_conf_sysctl_command
+ check_mode: false
changed_when: false
# Reason for noqa: The command module tries to run the complete string as a single command
diff --git a/roles/sap_general_preconfigure/tasks/RedHat/installation.yml b/roles/sap_general_preconfigure/tasks/RedHat/installation.yml
index 2e39f2fe..c79e58d2 100644
--- a/roles/sap_general_preconfigure/tasks/RedHat/installation.yml
+++ b/roles/sap_general_preconfigure/tasks/RedHat/installation.yml
@@ -1,6 +1,11 @@
# SPDX-License-Identifier: Apache-2.0
---
+- name: Gather package facts
+ ansible.builtin.package_facts:
+ tags:
+ - sap_general_preconfigure_installation
+
- name: Perform steps for enabling required repos
when: sap_general_preconfigure_enable_repos
block:
diff --git a/roles/sap_general_preconfigure/tasks/SLES/assert-configuration.yml b/roles/sap_general_preconfigure/tasks/SLES/assert-configuration.yml
index d4e8b934..eb316d43 100644
--- a/roles/sap_general_preconfigure/tasks/SLES/assert-configuration.yml
+++ b/roles/sap_general_preconfigure/tasks/SLES/assert-configuration.yml
@@ -10,6 +10,6 @@
- name: Assert - Include configuration actions for required sapnotes
ansible.builtin.include_tasks: "sapnote/assert-{{ sap_note_line_item.number }}.yml"
- with_items: "{{ __sap_general_preconfigure_sapnotes_versions | difference(['']) }}"
+ loop: "{{ __sap_general_preconfigure_sapnotes_versions | difference(['']) }}"
loop_control:
loop_var: sap_note_line_item
diff --git a/roles/sap_general_preconfigure/tasks/SLES/assert-installation.yml b/roles/sap_general_preconfigure/tasks/SLES/assert-installation.yml
index 6aa78761..bfa79057 100644
--- a/roles/sap_general_preconfigure/tasks/SLES/assert-installation.yml
+++ b/roles/sap_general_preconfigure/tasks/SLES/assert-installation.yml
@@ -1,96 +1,94 @@
# SPDX-License-Identifier: Apache-2.0
---
+# Both sap_general_preconfigure_packages and __sap_general_preconfigure_min_pkgs are checked at same time.
+# Check rpm --whatprovides only if package cannot be found directly.
+- name: Query RPM packages
+ ansible.builtin.shell:
+ cmd: |
+ if rpm -q {{ item }} &> /dev/null;
+ then rpm -q {{ item }}
+ else rpm -q --whatprovides {{ item }};
+ fi
+ register: __sap_general_preconfigure_register_packages
+ changed_when: false
+ ignore_errors: true
+ loop: "{{ sap_general_preconfigure_packages if not sap_general_preconfigure_min_package_check | bool
+ else ((sap_general_preconfigure_packages | d([])) + (__sap_general_preconfigure_min_pkgs | d([])) | map(attribute='0') | unique) }}"
+
+
- name: Assert that all required packages are installed
ansible.builtin.assert:
- that: line_item in ansible_facts.packages
- fail_msg: "FAIL: Package '{{ line_item }}' is not installed!"
- success_msg: "PASS: Package '{{ line_item }}' is installed."
- with_items:
- - "{{ sap_general_preconfigure_packages }}"
- loop_control:
- loop_var: line_item
+ that: __sap_general_preconfigure_register_packages.results | selectattr('item', 'equalto', item) | map(attribute='rc') | first == 0
+ fail_msg: "FAIL: Package '{{ item }}' is not installed!"
+ success_msg: "PASS: Package '{{ item }}' is installed."
+ loop: "{{ sap_general_preconfigure_packages if not sap_general_preconfigure_min_package_check | bool
+ else ((sap_general_preconfigure_packages | d([])) + (__sap_general_preconfigure_min_pkgs | d([])) | map(attribute='0') | unique) }}"
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
-- name: Minimum required package version check
+
+- name: Block for minimum required packages assert
when:
- sap_general_preconfigure_min_package_check | bool
- __sap_general_preconfigure_min_pkgs | d([])
block:
-
-# Reason for noqa: We can safely fail at the last command in the pipeline.
- - name: Assert - Create a list of minimum required package versions to be installed # noqa risky-shell-pipe
-# How does it work?
-# 1 - Print the required package name and version with a prefix "1" followed by a space.
-# 2 - In the same output sequence, list all installed versions of this package with a prefix "2" followed by a space.
-# 3 - Replace all occurrences of ".el" by ".0.0" so that the sort -V correctly sorts packages with ".el" in its name
-# 4 - Sort the list by the name and version.
-# 5 - Replace ".0.0" by ".el" again to get back the original names.
-# 6 - Store the last installed version of the package in variable latestpkg.
-# 7 - Store the last content of column 1 in variable col1, the last content of column 2 in variable col2,
-# and the last number of fields in variable _nf.
-# 8 - case 1: If the last number of output fields is greater than 2, it indicates that the package is not installed
-# because the output of "rpm -q" will be similar to "package XXX is not installed".
-# 8 - case 2a: If the first column of the last line of the output is "1", it means that the required package is
-# the latest of all required and installed versions of the package, so it means that the package needs
-# to be updated.
-# 8 - case 2b: If the first column of the last line of the output is "2", it means that at least of the installed
-# versions the package is equal to or greater than the required package version.
- ansible.builtin.shell: |
- (echo "1 {{ pkg[0] }}-{{ pkg[1] }}";rpm -q --qf "%{NAME}-%{VERSION}-%{RELEASE}\n" {{ pkg[0] }} |
- awk '{printf ("2 %s\n", $0)}') |
- awk '{gsub ("\\.el", ".0.0"); print}' |
- sort -k 2 -k 1 -V |
- awk '{gsub ("\\.0\\.0", ".el"); col1=$1; col2=$2; _nf=NF}
- $1==2{latestpkg=$2}
- END {
- if (_nf>2) {
- printf ("Package '\''{{ pkg[0] }}'\'' needs to be installed as {{ pkg[0] }}-{{ pkg[1] }}!\n")
- } else {
- if (col1==1) {
- printf ("Package '\''{{ pkg[0] }}'\'' needs to be updated to %s! Currently installed latest version: %s.\n", $2, latestpkg)
- }
- if (col1==2) {
- printf ("Package '\''{{ pkg[0] }}'\'' is already installed as {{ pkg[0] }}-{{ pkg[1] }} or later. Currently installed latest version: %s.\n", latestpkg)
- }
- }
- }'
- with_list: "{{ __sap_general_preconfigure_min_pkgs }}"
- loop_control:
- loop_var: pkg
- check_mode: false
- register: __sap_general_preconfigure_register_minpkglist_assert
+ - name: Query RPM packages for minimum required packages
+ ansible.builtin.shell:
+ cmd: |
+ if rpm -q {{ item[0] }} &> /dev/null;
+ then rpm -q --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}\n' {{ item[0] }}
+ else rpm -q --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}\n' --whatprovides {{ item[0] }};
+ fi
+ register: __sap_general_preconfigure_register_packages_minimum
changed_when: false
+ ignore_errors: true
+ loop: "{{ __sap_general_preconfigure_min_pkgs }}"
+
- - name: Assert that minimum required package versions are installed
-# If the output includes the string "is already installed" (case 2b), we have a PASS. Otherwise, it's a FAIL.
+ - name: Assert that all minimum required packages are installed with minimum version
ansible.builtin.assert:
- that: "'is already installed' in line_item.stdout"
- fail_msg: "FAIL: {{ line_item.stdout }}"
- success_msg: "PASS: {{ line_item.stdout }}"
- with_items: "{{ __sap_general_preconfigure_register_minpkglist_assert.results }}"
- loop_control:
- loop_var: line_item
- label: ""
- ignore_errors: true
+ that:
+ - __version[0] is version(item[1], '>=')
+ fail_msg: "FAIL: Minimum package version '{{ item[0] }}-{{ item[1] }}' is not installed! Current version: '{{ __version[0] }}'"
+ success_msg: "PASS: Minimum package version '{{ item[0] }}-{{ item[1] }}' is installed."
+ vars:
+ __version:
+ "{{ __sap_general_preconfigure_register_packages_minimum.results | selectattr('item', 'equalto', item) | map(attribute='stdout') }}"
+ loop: "{{ __sap_general_preconfigure_min_pkgs }}"
+ ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
+ when: __sap_general_preconfigure_register_packages.results | selectattr('item', 'equalto', item[0]) | map(attribute='rc') | first == 0
-- name: Report if no minimum required package version is defined for this RHEL release
- ansible.builtin.debug:
- msg: "INFO: No minimum required package version defined (variable __sap_general_preconfigure_min_pkgs)."
- ignore_errors: true
- when: not __sap_general_preconfigure_min_pkgs | d([])
-# Reason for noqa: The yum module appears to not support the check-update option
+- name: Gather service facts
+ ansible.builtin.service_facts:
+
+# Service packagekit is part of PackageKit-backend-zypp (SLE-Module-Desktop-Applications)
+# This service creates zypper locks and causes package install failures.
+- name: Wait for stop of packagekit.service
+ ansible.builtin.shell: |
+ set -o pipefail && bash -c '
+ while (ps aux | grep "[z]ypper" | grep -v grep) || (ps aux | grep "/usr/lib/packagekitd" | grep -v grep) ||
+ ([ -f /var/run/zypp.pid ] && [ -s /var/run/zypp.pid ]); do
+ sleep 10;
+ done'
+ register: __packagekit_service_check
+ changed_when: false
+ until: __packagekit_service_check.rc == 0
+ retries: 60
+ when: "'packagekit.service' in ansible_facts.services"
+
- name: Get info about possible package updates # noqa command-instead-of-module
- ansible.builtin.command: yum check-update
- register: __sap_general_preconfigure_register_yum_check_update_assert
+ ansible.builtin.command:
+ cmd: zypper -q patch-check
+ timeout: 60
+ register: __sap_general_preconfigure_register_zypper_check_update_assert
changed_when: false
- ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
+ ignore_errors: true # true, because unpatched system is always error.
when: sap_general_preconfigure_update
- name: Assert that there are no more possible package updates
ansible.builtin.assert:
- that: __sap_general_preconfigure_register_yum_check_update_assert is success
+ that: __sap_general_preconfigure_register_zypper_check_update_assert.rc == 0
fail_msg: "FAIL: System needs to be updated!"
success_msg: "PASS: There are no more outstanding package updates."
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
@@ -99,45 +97,18 @@
- name: Report if checking for possible package updates is not requested
ansible.builtin.debug:
msg: "INFO: Not checking for possible package updates (variable sap_general_preconfigure_update)."
- ignore_errors: true
+ ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
when: not sap_general_preconfigure_update
-- name: "Assert - Set needs-restarting command in case of RHEL 7"
- ansible.builtin.set_fact:
- __sap_general_preconfigure_fact_needs_restarting_command_assert: "needs-restarting -r"
- when:
- - ansible_os_family == 'RedHat'
- - ansible_distribution_major_version == '7'
-
-- name: "Assert - Set needs-restarting command in case of RHEL 8 or RHEL 9, except RHEL 8.0"
- ansible.builtin.set_fact:
- __sap_general_preconfigure_fact_needs_restarting_command_assert: "yum needs-restarting -r"
- when:
- - ansible_os_family == 'RedHat'
- - (ansible_distribution_major_version == '8' or
- ansible_distribution_major_version == '9'
- )
- - ansible_distribution_version != '8.0'
-
-- name: "Assert - Set customized needs-restarting command in case of RHEL 8.0"
- ansible.builtin.set_fact:
- __sap_general_preconfigure_fact_needs_restarting_command_assert: "_IKRNL=$(rpm -q --last kernel | awk 'NR==1{sub(/kernel-/,\"\"); print $1}');
- _CKRNL=$(uname -r); if [ ${_IKRNL} != ${_CKRNL} ]; then exit 1; else exit 0; fi"
- when:
- - ansible_os_family == 'RedHat'
- - ansible_distribution_version == '8.0'
-
-- name: Assert - Display the command for checking a reboot requirement
- ansible.builtin.debug:
- var: __sap_general_preconfigure_fact_needs_restarting_command_assert
# Reason for noqa: The command to be executed might contain pipes
-- name: Assert - Determine if the system needs to be restarted # noqa command-instead-of-shell
- ansible.builtin.shell: "{{ __sap_general_preconfigure_fact_needs_restarting_command_assert }}"
+- name: Determine if the system needs to be restarted # noqa command-instead-of-shell
+ ansible.builtin.shell:
+ cmd: "zypper ps"
register: __sap_general_preconfigure_register_needs_restarting_assert
changed_when: false
check_mode: false
- ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
+ ignore_errors: true # true, because output is too large.
- name: Assert that system needs no restart
ansible.builtin.assert:
@@ -145,3 +116,26 @@
fail_msg: "FAIL: System needs to be restarted!"
success_msg: "PASS: System needs no restart."
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
+
+
+- name: Block to assert that correct saptune version is installed
+ when:
+ - __sap_general_preconfigure_use_saptune
+ - sap_general_preconfigure_saptune_version is defined
+ - sap_general_preconfigure_saptune_version | length > 0
+ block:
+ # We are checking for %{VERSION} (e.g. 3.1.4), not full %{VERSION}-%{RELEASE}.%{ARCH}
+ - name: Check saptune version # noqa: command-instead-of-module
+ ansible.builtin.command:
+ cmd: rpm -q --queryformat '%{VERSION}\n' saptune
+ register: __sap_general_preconfigure_register_saptune_version
+ changed_when: false
+ ignore_errors: true
+
+ - name: Assert saptune is at requested version
+ ansible.builtin.assert:
+ that: __sap_general_preconfigure_register_saptune_version.stdout == sap_general_preconfigure_saptune_version
+ fail_msg: "FAIL: saptune version installed is {{ __sap_general_preconfigure_register_saptune_version.stdout
+ }} but the version {{ sap_general_preconfigure_saptune_version }} was expected"
+ success_msg: "PASS: the installed version of saptune meets the expected version: {{ sap_general_preconfigure_saptune_version }}"
+ when: __sap_general_preconfigure_register_saptune_version.rc == 0
diff --git a/roles/sap_general_preconfigure/tasks/SLES/configuration.yml b/roles/sap_general_preconfigure/tasks/SLES/configuration.yml
index cde628b4..dfcf3ef4 100644
--- a/roles/sap_general_preconfigure/tasks/SLES/configuration.yml
+++ b/roles/sap_general_preconfigure/tasks/SLES/configuration.yml
@@ -7,6 +7,6 @@
- name: Configure - Include configuration actions for required sapnotes
ansible.builtin.include_tasks: "sapnote/{{ sap_note_line_item.number }}.yml"
- with_items: "{{ __sap_general_preconfigure_sapnotes_versions | difference(['']) }}"
+ loop: "{{ __sap_general_preconfigure_sapnotes_versions | difference(['']) }}"
loop_control:
loop_var: sap_note_line_item
diff --git a/roles/sap_general_preconfigure/tasks/SLES/generic/grub_update.yml b/roles/sap_general_preconfigure/tasks/SLES/generic/grub_update.yml
new file mode 100644
index 00000000..81469d3a
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/SLES/generic/grub_update.yml
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+# Generic task for updating GRUB configuration using provided list
+
+- name: Update existing GRUB entries
+ ansible.builtin.lineinfile:
+ path: /etc/default/grub
+ regexp: '^(GRUB_CMDLINE_LINUX_DEFAULT=".*?)(\b{{ item.split("=")[0] }}=[^ ]*\b)(.*")'
+ line: '\1{{ item }}\3'
+ backrefs: true
+ register: __sap_general_preconfigure_grub_update
+ loop: "{{ __sap_general_preconfigure_grub_cmdline }}"
+
+
+- name: Get current contents of GRUB
+ ansible.builtin.slurp:
+ path: /etc/default/grub
+ register: __sap_general_preconfigure_grub_contents
+
+
+- name: Add new GRUB entries
+ ansible.builtin.lineinfile:
+ path: /etc/default/grub
+ regexp: '^GRUB_CMDLINE_LINUX_DEFAULT="(.*?)"'
+ line: 'GRUB_CMDLINE_LINUX_DEFAULT="\1 {{ item }}"'
+ backrefs: true
+ register: __sap_general_preconfigure_grub_add
+ loop: "{{ __sap_general_preconfigure_grub_cmdline }}"
+ when: item not in (__sap_general_preconfigure_grub_contents.content | b64decode)
+
+
+- name: Trigger grub update if necessary # noqa no-changed-when
+ ansible.builtin.command:
+ cmd: /bin/true
+ notify: __sap_general_preconfigure_regenerate_grub2_conf_handler
+ when:
+ - (__sap_general_preconfigure_grub_update.results | selectattr('changed', 'equalto', true) | list | length > 0)
+ or (__sap_general_preconfigure_grub_add.results | selectattr('changed', 'equalto', true) | list | length > 0)
diff --git a/roles/sap_general_preconfigure/tasks/SLES/generic/saptune_install.yml b/roles/sap_general_preconfigure/tasks/SLES/generic/saptune_install.yml
new file mode 100644
index 00000000..d7e88ae3
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/SLES/generic/saptune_install.yml
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+# 1275776 - Linux: Preparing SLES for SAP environments
+
+- name: Get contents of /etc/products.d/baseproduct
+ ansible.builtin.stat:
+ path: /etc/products.d/baseproduct
+ register: __sap_general_preconfigure_register_baseproduct
+
+
+- name: Set fact if baseproduct contains SLES without SLES_SAP
+ ansible.builtin.set_fact:
+ __sap_general_preconfigure_use_saptune: false
+ when:
+ - '"SLES_SAP" not in __sap_general_preconfigure_register_baseproduct.stat.lnk_target'
+ - '"SLES" in __sap_general_preconfigure_register_baseproduct.stat.lnk_target
+ and ansible_distribution_major_version | int < 16'
+
+
+- name: Block to ensure saptune is installed
+ when: __sap_general_preconfigure_use_saptune | d(true)
+ block:
+ # Reason for noqa: Zypper supports "state: latest"
+ - name: Ensure latest saptune is installed # noqa package-latest
+ ansible.builtin.package:
+ name: saptune
+ state: latest
+ when:
+ - sap_general_preconfigure_saptune_version is undefined
+ or sap_general_preconfigure_saptune_version | length == 0
+
+ - name: Ensure specific saptune version is installed
+ ansible.builtin.package:
+ name: "saptune={{ sap_general_preconfigure_saptune_version }}"
+ state: present
+ when:
+ - sap_general_preconfigure_saptune_version is defined
+ - sap_general_preconfigure_saptune_version | length > 0
+
+
+- name: Block to ensure sapconf is installed
+ when: not __sap_general_preconfigure_use_saptune | d(true)
+ block:
+ - name: Ensure sapconf is installed
+ ansible.builtin.package:
+ name: "sapconf"
+ state: present
diff --git a/roles/sap_general_preconfigure/tasks/SLES/generic/saptune_takeover.yml b/roles/sap_general_preconfigure/tasks/SLES/generic/saptune_takeover.yml
new file mode 100644
index 00000000..56089c7e
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/SLES/generic/saptune_takeover.yml
@@ -0,0 +1,100 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+# 1275776 - Linux: Preparing SLES for SAP environments
+
+- name: Execute saptune_check - before takeover
+ ansible.builtin.command:
+ cmd: saptune_check
+ register: __sap_general_preconfigure_register_saptune_check_before
+ when: __sap_general_preconfigure_use_saptune
+ changed_when: false
+ failed_when: false
+
+- name: Takeover and enable saptune
+ when:
+ - __sap_general_preconfigure_use_saptune
+ - __sap_general_preconfigure_register_saptune_check_before.rc != 0
+ block:
+ - name: Check saptune version # noqa: command-instead-of-module
+ ansible.builtin.command:
+ cmd: rpm -q sapconf
+ register: __sap_general_preconfigure_register_sapconf
+ changed_when: false
+ ignore_errors: true
+
+ - name: Ensure sapconf is stopped and disabled
+ ansible.builtin.systemd:
+ name: sapconf
+ state: stopped
+ enabled: false
+ when: __sap_general_preconfigure_register_sapconf
+
+ - name: Make sure that sapconf and tuned are stopped and disabled
+ ansible.builtin.command:
+ cmd: "saptune service takeover"
+ register: __sap_general_preconfigure_register_saptune_takeover
+ changed_when: __sap_general_preconfigure_register_saptune_takeover.rc == 0
+
+ # saptune_check can fail if sapconf is in failed state
+ - name: Check if sapconf.service is failed # noqa command-instead-of-module
+ ansible.builtin.command:
+ cmd: systemctl is-failed sapconf.service
+ register: __sap_general_preconfigure_register_sapconf_failed
+ changed_when: false
+ ignore_errors: true
+
+ - name: Execute systemctl reset-failed sapconf.service # noqa command-instead-of-module
+ ansible.builtin.command:
+ cmd: systemctl reset-failed sapconf.service
+ when: __sap_general_preconfigure_register_sapconf_failed.rc == 0
+ changed_when: true
+
+ - name: Ensure saptune is running and enabled
+ ansible.builtin.systemd:
+ name: saptune
+ state: started
+ enabled: true
+
+ - name: Ensure saptune_check executes correctly
+ ansible.builtin.command:
+ cmd: saptune_check
+ register: __sap_general_preconfigure_register_saptune_check_after
+ changed_when: false
+
+
+- name: Check active saptune solution
+ when:
+ - __sap_general_preconfigure_use_saptune
+ - __sap_general_preconfigure_register_saptune_check_before.rc == 0
+ or (__sap_general_preconfigure_register_saptune_check_after.rc == 0)
+ block:
+ - name: Discover active solution
+ ansible.builtin.command:
+ cmd: saptune solution enabled
+ register: __sap_general_preconfigure_register_saptune_status
+ changed_when: false
+
+ - name: Set fact for active solution
+ ansible.builtin.set_fact:
+ # Capture the first block on none whitespace
+ __sap_general_preconfigure_register_solution_configured:
+ "{{ (__sap_general_preconfigure_register_saptune_status.stdout | regex_search('(\\S+)', '\\1'))[0] | default('NONE') }}"
+
+ - name: Show configured solution
+ ansible.builtin.debug:
+ var: __sap_general_preconfigure_register_solution_configured
+
+
+- name: Enable sapconf
+ when: not __sap_general_preconfigure_use_saptune
+ block:
+ - name: Enable sapconf service
+ ansible.builtin.systemd:
+ name: sapconf
+ state: started
+ enabled: true
+
+ - name: Restart sapconf service
+ ansible.builtin.systemd:
+ name: sapconf
+ state: restarted
diff --git a/roles/sap_general_preconfigure/tasks/SLES/installation.yml b/roles/sap_general_preconfigure/tasks/SLES/installation.yml
index 4f9daed9..a6d99249 100644
--- a/roles/sap_general_preconfigure/tasks/SLES/installation.yml
+++ b/roles/sap_general_preconfigure/tasks/SLES/installation.yml
@@ -1,80 +1,76 @@
# SPDX-License-Identifier: Apache-2.0
---
+- name: Gather service facts
+ ansible.builtin.service_facts:
+
+# Service packagekit is part of PackageKit-backend-zypp (SLE-Module-Desktop-Applications)
+# This service creates zypper locks and causes package install failures.
+# Service cannot be disabled and we have to mask its execution.
+- name: Mask packagekit.service when present
+ ansible.builtin.systemd_service:
+ name: packagekit.service
+ masked: true
+ when: "'packagekit.service' in ansible_facts.services"
+ notify: __sap_general_preconfigure_packagekit_handler
+
+
+- name: Wait for stop of packagekit.service
+ ansible.builtin.shell: |
+ set -o pipefail && bash -c '
+ while (ps aux | grep "[z]ypper" | grep -v grep) || (ps aux | grep "/usr/lib/packagekitd" | grep -v grep) ||
+ ([ -f /var/run/zypp.pid ] && [ -s /var/run/zypp.pid ]); do
+ sleep 10;
+ done'
+ register: __packagekit_service_check
+ changed_when: false
+ until: __packagekit_service_check.rc == 0
+ retries: 60
+ when: "'packagekit.service' in ansible_facts.services"
+
+
- name: Ensure that the required packages are installed
ansible.builtin.package:
state: present
- name: "{{ sap_general_preconfigure_packages }}"
+ name: "{{ sap_general_preconfigure_packages if not sap_general_preconfigure_min_package_check | bool
+ else ((sap_general_preconfigure_packages | d([])) + (__sap_general_preconfigure_min_pkgs | d([])) | map(attribute='0') | unique) }}"
+
-- name: Ensure that the minimum required package versions are installed
+- name: Install minimum packages if required
+ ansible.builtin.package:
+ name: '{{ line_item[0] }}>={{ line_item[1] }}'
+ state: present
+ loop: "{{ __sap_general_preconfigure_min_pkgs }}"
+ loop_control:
+ loop_var: line_item
when:
- sap_general_preconfigure_min_package_check|bool
- - __sap_general_preconfigure_min_pkgs|d([])
- block:
-
-# Reason for noqa: We can safely fail at the last command in the pipeline.
- - name: Create a list of minimum required package versions to be installed # noqa risky-shell-pipe
-# How does it work?
-# 1 - Print the required package name and version with a prefix "1" followed by a space.
-# 2 - In the same output sequence, list all installed versions of this package with a prefix "2" followed by a space.
-# 3 - Replace all occurrences of ".el" by ".0.0" so that the sort -V correctly sorts packages with ".el" in its name
-# 4 - Sort the list by the name and version.
-# 5 - Replace ".0.0" by ".el" again to get back the original names.
-# 6 - Store the last installed version of the package in variable latestpkg.
-# 7 - Store the last content of column 1 in variable col1, the last content of column 2 in variable col2,
-# and the last number of fields in variable _nf.
-# 8 - case 1: If the last number of output fields is greater than 2, it indicates that the package is not installed
-# because the output of "rpm -q" will be similar to "package XXX is not installed".
-# 8 - case 2a: If the first column of the last line of the output is "1", it means that the required package is
-# the latest of all required and installed versions of the package, so it means that the package needs
-# to be updated.
-# 8 - case 2b: If the first column of the last line of the output is "2", it means that at least of the installed
-# versions the package is equal to or greater than the required package version.
- ansible.builtin.shell: |
- (echo "1 {{ pkg[0] }}-{{ pkg[1] }}";rpm -q --qf "%{NAME}-%{VERSION}-%{RELEASE}\n" {{ pkg[0] }} |
- awk '{printf ("2 %s\n", $0)}') |
- awk '{gsub ("\\.el", ".0.0"); print}' |
- sort -k 2 -k 1 -V |
- awk '{gsub ("\\.0\\.0", ".el"); col1=$1; col2=$2; _nf=NF}
- $1==2{latestpkg=$2}
- END {
- if (_nf>2) {
- printf ("{{ pkg[0] }}-{{ pkg[1] }}\n")
- } else {
- if (col1==1) {
- printf ("{{ pkg[0] }}-{{ pkg[1] }}\n")
- }
- }
- }'
- with_list: "{{ __sap_general_preconfigure_min_pkgs }}"
- loop_control:
- loop_var: pkg
- check_mode: false
- register: __sap_general_preconfigure_register_minpkglist
- changed_when: false
-
- - name: Display the content of the minimum package list variable
- ansible.builtin.debug:
- var: __sap_general_preconfigure_register_minpkglist
-
- - name: Install minimum packages if required
- ansible.builtin.package:
- name: "{{ line_item.stdout }}"
- state: present
- with_items: "{{ __sap_general_preconfigure_register_minpkglist.results }}"
- loop_control:
- loop_var: line_item
-
-# Reason for noqa: Both yum and dnf support "state: latest"
+ - __sap_general_preconfigure_min_pkgs | d([])
+
+
+# Reason for noqa: Zypper supports "state: latest"
- name: Ensure that the system is updated to the latest patchlevel # noqa package-latest
ansible.builtin.package:
state: latest
name: "*"
- when: sap_general_preconfigure_update
+ register: __sap_general_preconfigure_register_update_latest
+ when: sap_general_preconfigure_update | bool
+
+
+# 1275776 - Linux: Preparing SLES for SAP environments
+- name: Install saptune if available
+ ansible.builtin.include_tasks:
+ file: generic/saptune_install.yml
+
+- name: Takeover and enable saptune if available
+ ansible.builtin.include_tasks:
+ file: generic/saptune_takeover.yml
+
# Reason for noqa: The command to be executed might contain pipes
- name: Determine if the system needs to be restarted # noqa command-instead-of-shell
- ansible.builtin.shell: "zypper ps"
+ ansible.builtin.shell:
+ cmd: "zypper ps"
register: __sap_general_preconfigure_register_needs_restarting
ignore_errors: true
changed_when: false
@@ -84,6 +80,8 @@
ansible.builtin.debug:
var: __sap_general_preconfigure_register_needs_restarting
+
+# sap_general_preconfigure_fact_reboot_required is used by follow up role: sap_hana_preconfigure
- name: Set the reboot requirement flag to false
ansible.builtin.set_fact:
sap_general_preconfigure_fact_reboot_required: false
@@ -91,14 +89,21 @@
- name: For needs-restarting - Set the flag that reboot is needed to apply changes
ansible.builtin.set_fact:
sap_general_preconfigure_fact_reboot_required: true
- when: __sap_general_preconfigure_register_needs_restarting is failed
+ when:
+ - __sap_general_preconfigure_register_needs_restarting is failed
+ or __sap_general_preconfigure_register_update_latest.changed
- name: For needs-restarting - Display the content of sap_general_preconfigure_fact_reboot_required
ansible.builtin.debug:
var: sap_general_preconfigure_fact_reboot_required
+
- name: Call Reboot handler if necessary
- ansible.builtin.command: /bin/true
+ ansible.builtin.command:
+ cmd: /bin/true
notify: __sap_general_preconfigure_reboot_handler
changed_when: true
- when: __sap_general_preconfigure_register_needs_restarting is failed
+ when:
+ - __sap_general_preconfigure_register_needs_restarting is failed
+ or __sap_general_preconfigure_register_needs_restarting.rc == 102
+ or __sap_general_preconfigure_register_update_latest.changed
diff --git a/roles/sap_general_preconfigure/tasks/main.yml b/roles/sap_general_preconfigure/tasks/main.yml
index 0cdd514c..829cc313 100644
--- a/roles/sap_general_preconfigure/tasks/main.yml
+++ b/roles/sap_general_preconfigure/tasks/main.yml
@@ -106,19 +106,6 @@
tags:
- always
-# Requirement for package_facts Ansible Module
-- name: For SLES ensure OS Package for Python Lib of rpm bindings is enabled for System Python
- ansible.builtin.package:
- name: python3-rpm
- state: present
- when: ansible_os_family == "Suse"
-
-# required for installation and configuration tasks:
-- name: Gather package facts
- ansible.builtin.package_facts:
- tags:
- - sap_general_preconfigure_installation
-
- name: Include tasks from 'installation.yml'
ansible.builtin.include_tasks:
file: '{{ item }}/{{ __sap_general_preconfigure_fact_assert_filename_prefix }}installation.yml'
@@ -132,11 +119,6 @@
tags:
- sap_general_preconfigure_installation
-- name: Gather package facts again after the installation phase
- ansible.builtin.package_facts:
- tags:
- - always
-
- name: Include tasks from 'configuration.yml'
ansible.builtin.include_tasks:
file: '{{ item }}/{{ __sap_general_preconfigure_fact_assert_filename_prefix }}configuration.yml'
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/2002167/03-setting-the-hostname.yml b/roles/sap_general_preconfigure/tasks/sapnote/2002167/03-setting-the-hostname.yml
index 9e96a265..bf642b1a 100644
--- a/roles/sap_general_preconfigure/tasks/sapnote/2002167/03-setting-the-hostname.yml
+++ b/roles/sap_general_preconfigure/tasks/sapnote/2002167/03-setting-the-hostname.yml
@@ -16,7 +16,7 @@
- name: Import role sap_maintain_etc_hosts
ansible.builtin.import_role:
- name: 'community.sap_install.sap_maintain_etc_hosts'
+ name: '{{ sap_general_preconfigure_sap_install_collection }}.sap_maintain_etc_hosts'
vars:
sap_maintain_etc_hosts_list:
- node_ip: "{{ sap_general_preconfigure_ip }}"
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/2369910.yml b/roles/sap_general_preconfigure/tasks/sapnote/2369910.yml
new file mode 100644
index 00000000..85a256c4
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/2369910.yml
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+- name: Configure - Display SAP note number 2369910 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^2369910$') | first).number }}
+ (version {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^2369910$') | first).version }}): SAP Software on Linux: General Information"
+ tags:
+ - always
+
+- name: Check locales
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_2369910 | d(false)
+ tags:
+ - sap_general_preconfigure_2369910
+ - sap_general_preconfigure_configure_locale
+ block:
+ - name: Configure an English locale
+ ansible.builtin.command: "localectl set-locale LANG={{ sap_general_preconfigure_default_locale }}"
+ changed_when: true
+ when:
+ - sap_general_preconfigure_default_locale is defined and sap_general_preconfigure_default_locale
+ - sap_general_preconfigure_default_locale == 'C.UTF-8' or
+ sap_general_preconfigure_default_locale == 'C.utf8' or
+ sap_general_preconfigure_default_locale.startswith('en_') and
+ (sap_general_preconfigure_default_locale.endswith('UTF-8') or
+ sap_general_preconfigure_default_locale.endswith('utf8'))
+
+ - name: Get the current default locale
+ ansible.builtin.command: awk '{gsub("\"","")}/^LANG=/&&(/=C\./||/=en_/)&&(/utf8$/||/UTF-8$/){print}' /etc/locale.conf
+ check_mode: false
+ register: __sap_general_preconfigure_current_default_locale
+ changed_when: false
+
+ - name: Assert that an English locale is the default
+ ansible.builtin.assert:
+ that: __sap_general_preconfigure_current_default_locale.stdout_lines | length > 0
+ fail_msg: >
+ "FAIL: English is not set as the default locale. Please define an English default locale
+ with the 'sap_general_preconfigure_default_locale' variable!"
+ success_msg: "PASS: An English default locale is set."
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/2578899.yml b/roles/sap_general_preconfigure/tasks/sapnote/2578899.yml
new file mode 100644
index 00000000..af6699a1
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/2578899.yml
@@ -0,0 +1,28 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+# 2578899 - SUSE Linux Enterprise Server 15: Installation Note
+
+- name: Configure - Display SAP note number 2578899 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^2578899$') | first).number }}
+ (version {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^2578899$') | first).version }}):
+ SUSE Linux Enterprise Server 15: Installation Note"
+ tags:
+ - always
+
+- name: Set fact for SAP note number 2578899
+ ansible.builtin.set_fact:
+ __sap_general_preconfigure_services_2578899:
+ - uuidd.socket
+ - sysstat
+ - sysctl-logger.service
+
+ __sap_general_preconfigure_grub_cmdline_2578899: []
+ # I/O Scheduler parameter is already part of default saptune and sapconf configuration.
+ # - "elevator=noop"
+
+- name: Import tasks from '2578899/installation.yml'
+ ansible.builtin.import_tasks: 2578899/installation.yml
+
+- name: Import tasks from '2578899/configuration.yml'
+ ansible.builtin.import_tasks: 2578899/configuration.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/2578899/assert-configuration.yml b/roles/sap_general_preconfigure/tasks/sapnote/2578899/assert-configuration.yml
new file mode 100644
index 00000000..672ffd83
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/2578899/assert-configuration.yml
@@ -0,0 +1,85 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+# ansible_facts.services do not work for socket services!
+# uuidd.socket is not found, while uuidd.service service is.
+- name: Check status of services - Active # noqa command-instead-of-module
+ ansible.builtin.command:
+ cmd: "systemctl is-active {{ item }}"
+ loop: "{{ __sap_general_preconfigure_services_2578899 }}"
+ register: __sap_general_preconfigure_register_services_active
+ changed_when: false
+ ignore_errors: true # Disabled is RC 1
+
+- name: Check status of services - Enabled # noqa command-instead-of-module
+ ansible.builtin.command:
+ cmd: "systemctl is-enabled {{ item }}"
+ loop: "{{ __sap_general_preconfigure_services_2578899 }}"
+ register: __sap_general_preconfigure_register_services_enabled
+ changed_when: false
+ ignore_errors: true # Disabled is RC 1
+
+- name: Assert that services are running and enabled
+ ansible.builtin.assert:
+ that:
+ - __sap_general_preconfigure_register_services_active.results | selectattr('item', 'equalto', item) | map(attribute='rc') | first == 0
+ - __sap_general_preconfigure_register_services_enabled.results | selectattr('item', 'equalto', item) | map(attribute='rc') | first == 0
+ fail_msg: "FAIL: Service '{{ item }}' is not running or not enabled!"
+ success_msg: "PASS: Package '{{ item }}' is running and enabled."
+ loop: "{{ __sap_general_preconfigure_services_2578899 }}"
+ ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
+
+
+- name: Verify SAP Note using saptune
+ when: __sap_general_preconfigure_use_saptune | d(true)
+ block:
+
+ - name: Verify SAP note 2578899 using saptune
+ ansible.builtin.command:
+ cmd: saptune note verify --show-non-compliant 2578899
+ register: __sap_general_preconfigure_saptune_verify_2578899
+ changed_when: false
+ ignore_errors: true
+
+ - name: Assert that SAP note 2578899 is verified by saptune
+ ansible.builtin.assert:
+ that: "{{ __sap_general_preconfigure_saptune_verify_2578899.rc == 0 }}"
+ success_msg: "PASS: SAP note 2578899 is verified by saptune."
+ fail_msg: |
+ "FAIL: SAP note 2578899 is not verified by saptune! See details below:"
+ {{ __sap_general_preconfigure_saptune_verify_2578899.stdout_lines }}
+ {{ __sap_general_preconfigure_saptune_verify_2578899.stderr_lines }}
+ ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
+
+
+- name: Verify SAP Note without using saptune
+ when: not __sap_general_preconfigure_use_saptune | d(true)
+ block:
+
+ - name: Gather kernel parameters
+ ansible.builtin.command: sysctl kernel.pid_max
+ register: __sap_general_preconfigure_register_pid_max
+ changed_when: false
+
+ - name: Assert that kernel parameter pid_max is set to 4194304
+ ansible.builtin.assert:
+ that:
+ - "__sap_general_preconfigure_register_pid_max.stdout.split('=')[1] | trim == '4194304'"
+ fail_msg: "FAIL: Kernel parameter kernel.pid_max is not set to 4194304!"
+ success_msg: "PASS: Kernel parameter kernel.pid_max is set to 4194304."
+ ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
+
+ - name: Get current contents of GRUB
+ ansible.builtin.slurp:
+ path: /etc/default/grub
+ register: __sap_general_preconfigure_grub_contents
+
+ - name: Assert that GRUB cmdline parameters are set
+ ansible.builtin.assert:
+ that:
+ - "'{{ item }}' in __sap_general_preconfigure_grub_contents.content | b64decode | string"
+ fail_msg: "FAIL: GRUB cmdline parameter {{ item }} is not set!"
+ success_msg: "PASS: GRUB cmdline parameter {{ item }} is set."
+ loop: "{{ __sap_general_preconfigure_grub_cmdline_2578899 }}"
+ when: __sap_general_preconfigure_grub_cmdline_2578899 | length > 0
+ ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/2578899/assert-installation.yml b/roles/sap_general_preconfigure/tasks/sapnote/2578899/assert-installation.yml
new file mode 100644
index 00000000..ba5d3501
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/2578899/assert-installation.yml
@@ -0,0 +1,23 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+# Check rpm --whatprovides only if package cannot be found directly.
+- name: Query RPM packages
+ ansible.builtin.shell:
+ cmd: |
+ if rpm -q {{ item }} &> /dev/null;
+ then rpm -q {{ item }}
+ else rpm -q --whatprovides {{ item }};
+ fi
+ register: __sap_general_preconfigure_register_packages
+ changed_when: false
+ ignore_errors: true
+ loop: "{{ __sap_general_preconfigure_packages_2578899 }}"
+
+- name: Assert that all required packages are installed
+ ansible.builtin.assert:
+ that: __sap_general_preconfigure_register_packages.results | selectattr('item', 'equalto', item) | map(attribute='rc') | first == 0
+ fail_msg: "FAIL: Package '{{ item }}' is not installed!"
+ success_msg: "PASS: Package '{{ item }}' is installed."
+ loop: "{{ __sap_general_preconfigure_packages_2578899 }}"
+ ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/2578899/configuration.yml b/roles/sap_general_preconfigure/tasks/sapnote/2578899/configuration.yml
new file mode 100644
index 00000000..c8fea7a8
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/2578899/configuration.yml
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Ensure that the services are enabled and started
+ ansible.builtin.systemd:
+ name: "{{ item }}"
+ state: started
+ enabled: true
+ loop: "{{ __sap_general_preconfigure_services_2578899 }}"
+
+
+- name: Execute task to update GRUB entries
+ ansible.builtin.include_tasks:
+ file: ../../SLES/generic/grub_update.yml
+ vars:
+ __sap_general_preconfigure_grub_cmdline: "{{ __sap_general_preconfigure_grub_cmdline_2578899 }}"
+ when: __sap_general_preconfigure_grub_cmdline | length > 0
+
+
+- name: Apply SAP note 2578899 using saptune
+ when: __sap_general_preconfigure_use_saptune | d(true)
+ block:
+
+ - name: Apply SAP note 2578899 using saptune
+ ansible.builtin.command:
+ cmd: saptune note apply 2578899
+ changed_when: true
+
+ - name: Verify SAP note 2578899 using saptune
+ ansible.builtin.command:
+ cmd: saptune note verify 2578899
+ register: __sap_general_preconfigure_saptune_verify_2578899
+ changed_when: false
+ ignore_errors: true
+
+ - name: Display error if saptune verify failed
+ ansible.builtin.debug:
+ msg: |
+ {{ __sap_general_preconfigure_saptune_verify_2578899.stdout_lines }}
+ {{ __sap_general_preconfigure_saptune_verify_2578899.stderr_lines }}
+ when:
+ __sap_general_preconfigure_saptune_verify_2578899.rc != 0
+
+
+- name: Configuration changes without saptune
+ when: not __sap_general_preconfigure_use_saptune | d(true)
+ block:
+
+ - name: Increase kernel.pid_max to 4194304
+ ansible.builtin.command:
+ cmd: sysctl -w kernel.pid_max=4194304
+ changed_when: true
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/2578899/installation.yml b/roles/sap_general_preconfigure/tasks/sapnote/2578899/installation.yml
new file mode 100644
index 00000000..164296be
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/2578899/installation.yml
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Ensure that the required packages are installed
+ ansible.builtin.package:
+ name: "{{ __sap_general_preconfigure_packages_2578899 }}"
+ state: present
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/2772999/03-configure-hostname.yml b/roles/sap_general_preconfigure/tasks/sapnote/2772999/03-configure-hostname.yml
index 1a22f7c6..3f04c4e2 100644
--- a/roles/sap_general_preconfigure/tasks/sapnote/2772999/03-configure-hostname.yml
+++ b/roles/sap_general_preconfigure/tasks/sapnote/2772999/03-configure-hostname.yml
@@ -16,7 +16,7 @@
- name: Import role sap_maintain_etc_hosts
ansible.builtin.import_role:
- name: 'community.sap_install.sap_maintain_etc_hosts'
+ name: '{{ sap_general_preconfigure_sap_install_collection }}.sap_maintain_etc_hosts'
vars:
sap_maintain_etc_hosts_list:
- node_ip: "{{ sap_general_preconfigure_ip }}"
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/03-configure-hostname.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/03-configure-hostname.yml
index fab19c6b..15b884b9 100644
--- a/roles/sap_general_preconfigure/tasks/sapnote/3108316/03-configure-hostname.yml
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/03-configure-hostname.yml
@@ -16,7 +16,7 @@
- name: Import role sap_maintain_etc_hosts
ansible.builtin.import_role:
- name: 'community.sap_install.sap_maintain_etc_hosts'
+ name: '{{ sap_general_preconfigure_sap_install_collection }}.sap_maintain_etc_hosts'
vars:
sap_maintain_etc_hosts_list:
- node_ip: "{{ sap_general_preconfigure_ip }}"
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909.yml
new file mode 100644
index 00000000..b671d639
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909.yml
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure - Display SAP note number 3562909 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3562909$') | first).number }}
+ (version {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3562909$') | first).version }}): Configure RHEL 9"
+ tags:
+ - always
+
+- name: Import tasks from '3562909/02-configure-selinux.yml'
+ ansible.builtin.import_tasks: 3562909/02-configure-selinux.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_02 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_02
+
+- name: Import tasks from '3562909/03-configure-hostname.yml'
+ ansible.builtin.import_tasks: 3562909/03-configure-hostname.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_03 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_03
+
+- name: Import tasks from '3562909/04-configure-network-time-and-date.yml'
+ ansible.builtin.import_tasks: 3562909/04-configure-network-time-and-date.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_04 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_04
+
+- name: Import tasks from '3562909/05-configure-firewall.yml'
+ ansible.builtin.import_tasks: 3562909/05-configure-firewall.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_05 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_05
+
+- name: Import tasks from '3562909/06-configure-uuidd.yml'
+ ansible.builtin.import_tasks: 3562909/06-configure-uuidd.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_06 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_06
+
+- name: Import tasks from '3562909/07-configure-tmpfs.yml'
+ ansible.builtin.import_tasks: 3562909/07-configure-tmpfs.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_07 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_07
+
+- name: Import tasks from '3562909/08-configure-linux-kernel-parameters.yml'
+ ansible.builtin.import_tasks: 3562909/08-configure-linux-kernel-parameters.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_08 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_08
+
+- name: Import tasks from '3562909/09-configure-process-resource-limits.yml'
+ ansible.builtin.import_tasks: 3562909/09-configure-process-resource-limits.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_09 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_09
+
+- name: Import tasks from '3562909/10-configure-systemd-tmpfiles.yml'
+ ansible.builtin.import_tasks: 3562909/10-configure-systemd-tmpfiles.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_10 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_10
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/02-assert-selinux.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/02-assert-selinux.yml
new file mode 100644
index 00000000..0513f28a
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/02-assert-selinux.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert 3562909-2
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 2: Configure SELinux"
+ tags:
+ - sap_general_preconfigure_selinux
+
+- name: Import tasks from '../../RedHat/generic/assert-selinux.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-selinux.yml
+ tags:
+ - sap_general_preconfigure_selinux
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/02-configure-selinux.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/02-configure-selinux.yml
new file mode 100644
index 00000000..a4172ad7
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/02-configure-selinux.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure 3562909-2
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 2: Configure SELinux"
+ tags:
+ - sap_general_preconfigure_selinux
+
+- name: Import tasks from '../../RedHat/generic/configure-selinux.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-selinux.yml
+ tags:
+ - sap_general_preconfigure_selinux
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/03-assert-hostname.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/03-assert-hostname.yml
new file mode 100644
index 00000000..8ca01d11
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/03-assert-hostname.yml
@@ -0,0 +1,25 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert 3562909-3
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 3: Configure Hostname"
+ tags:
+ - sap_general_preconfigure_hostname
+ - sap_general_preconfigure_etc_hosts
+ - sap_general_preconfigure_dns_name_resolution
+
+- name: Import tasks from '../../RedHat/generic/assert-hostname.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-hostname.yml
+ tags:
+ - sap_general_preconfigure_hostname
+
+- name: Import tasks from '../../RedHat/generic/assert-etc-hosts.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-etc-hosts.yml
+ tags:
+ - sap_general_preconfigure_etc_hosts
+
+- name: Import tasks from '../../RedHat/generic/assert-dns-name-resolution.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-dns-name-resolution.yml
+ tags:
+ - sap_general_preconfigure_dns_name_resolution
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/03-configure-hostname.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/03-configure-hostname.yml
new file mode 100644
index 00000000..d586c011
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/03-configure-hostname.yml
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure 3562909-3
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 3: Configure Hostname"
+ tags:
+ - sap_general_preconfigure_hostname
+ - sap_general_preconfigure_etc_hosts
+ - sap_general_preconfigure_dns_name_resolution
+
+- name: Import tasks from '../../RedHat/generic/configure-hostname.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-hostname.yml
+ tags:
+ - sap_general_preconfigure_hostname
+
+- name: Import role sap_maintain_etc_hosts
+ ansible.builtin.import_role:
+ name: '{{ sap_general_preconfigure_sap_install_collection }}.sap_maintain_etc_hosts'
+ vars:
+ sap_maintain_etc_hosts_list:
+ - node_ip: "{{ sap_general_preconfigure_ip }}"
+ node_name: "{{ sap_general_preconfigure_hostname }}"
+ node_domain: "{{ sap_general_preconfigure_domain }}"
+ state: present
+ when: sap_general_preconfigure_modify_etc_hosts
+ tags:
+ - sap_general_preconfigure_etc_hosts
+
+- name: Import tasks from '../../RedHat/generic/assert-etc-hosts.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-etc-hosts.yml
+ when: not sap_general_preconfigure_modify_etc_hosts
+ tags:
+ - sap_general_preconfigure_etc_hosts
+
+- name: Import tasks from '../../RedHat/generic/check-dns-name-resolution.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/check-dns-name-resolution.yml
+ tags:
+ - sap_general_preconfigure_dns_name_resolution
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/04-assert-network-time-and-date.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/04-assert-network-time-and-date.yml
new file mode 100644
index 00000000..748bf8e1
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/04-assert-network-time-and-date.yml
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert 3562909-4
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 4: Configure Network Time and Date"
+ tags:
+ - sap_general_preconfigure_network_time_and_date
+
+# Reason for noqa: We need to get the current status only
+- name: Get status of chronyd # noqa command-instead-of-module
+ ansible.builtin.command: systemctl status chronyd
+ register: __sap_general_preconfigure_register_chronyd_status_assert
+ ignore_errors: true
+ changed_when: false
+ tags:
+ - sap_general_preconfigure_network_time_and_date
+
+- name: Assert that chronyd is enabled
+ ansible.builtin.assert:
+ that: "'/usr/lib/systemd/system/chronyd.service; enabled' in __sap_general_preconfigure_register_chronyd_status_assert.stdout"
+ fail_msg: "FAIL: Service 'chronyd' is not enabled!"
+ success_msg: "PASS: Service 'chronyd' is enabled."
+ ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
+ tags:
+ - sap_general_preconfigure_network_time_and_date
+
+- name: Assert that chronyd is active
+ ansible.builtin.assert:
+ that: "'active (running)' in __sap_general_preconfigure_register_chronyd_status_assert.stdout"
+ fail_msg: "FAIL: Service 'chronyd' is not active!"
+ success_msg: "PASS: Service 'chronyd' is active."
+ ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
+ tags:
+ - sap_general_preconfigure_network_time_and_date
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/04-configure-network-time-and-date.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/04-configure-network-time-and-date.yml
new file mode 100644
index 00000000..a3f3c7b5
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/04-configure-network-time-and-date.yml
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure 3562909-4
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 4: Configure Network Time and Date"
+ tags:
+ - sap_general_preconfigure_network_time_and_date
+
+- name: Start and enable service chronyd
+ ansible.builtin.systemd:
+ name: chronyd
+ state: started
+ enabled: true
+ tags:
+ - sap_general_preconfigure_network_time_and_date
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/05-assert-firewall.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/05-assert-firewall.yml
new file mode 100644
index 00000000..c3d40452
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/05-assert-firewall.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert 3562909-5
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 5: Configure the Firewall"
+ tags:
+ - sap_general_preconfigure_firewall
+
+- name: Import tasks from '../../RedHat/generic/assert-firewall.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-firewall.yml
+ tags:
+ - sap_general_preconfigure_firewall
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/05-configure-firewall.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/05-configure-firewall.yml
new file mode 100644
index 00000000..18ee27f7
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/05-configure-firewall.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure 3562909-5
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 5: Configure the Firewall"
+ tags:
+ - sap_general_preconfigure_firewall
+
+- name: Import tasks from '../../RedHat/generic/configure-firewall.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-firewall.yml
+ tags:
+ - sap_general_preconfigure_firewall
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/06-assert-uuidd.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/06-assert-uuidd.yml
new file mode 100644
index 00000000..33bd29d8
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/06-assert-uuidd.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert 3562909-6
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 6: Configure uuidd"
+ tags:
+ - sap_general_preconfigure_configure_uuidd
+
+- name: Import tasks from '../../RedHat/generic/assert-uuidd.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-uuidd.yml
+ tags:
+ - sap_general_preconfigure_configure_uuidd
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/06-configure-uuidd.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/06-configure-uuidd.yml
new file mode 100644
index 00000000..a2cfffca
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/06-configure-uuidd.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure 3562909-6
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 6: Configure uuidd"
+ tags:
+ - sap_general_preconfigure_configure_uuidd
+
+- name: Import tasks from '../../RedHat/generic/configure-uuidd.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-uuidd.yml
+ tags:
+ - sap_general_preconfigure_configure_uuidd
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/07-assert-tmpfs.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/07-assert-tmpfs.yml
new file mode 100644
index 00000000..48548d2e
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/07-assert-tmpfs.yml
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert 3562909-7
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 7: Configure tmpfs;
+ memtotal_mb = {{ ansible_memtotal_mb }};
+ swaptotal_mb = {{ ansible_swaptotal_mb }};
+ sap_general_preconfigure_size_of_tmpfs_gb = {{ sap_general_preconfigure_size_of_tmpfs_gb }}"
+ tags:
+ - sap_general_preconfigure_configure_tmpfs
+
+- name: Import tasks from '../../RedHat/generic/assert-tmpfs.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-tmpfs.yml
+ tags:
+ - sap_general_preconfigure_configure_tmpfs
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/07-configure-tmpfs.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/07-configure-tmpfs.yml
new file mode 100644
index 00000000..99c61abf
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/07-configure-tmpfs.yml
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure 3562909-7
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 7: Configure tmpfs;
+ memtotal_mb = {{ ansible_memtotal_mb }};
+ swaptotal_mb = {{ ansible_swaptotal_mb }};
+ sap_general_preconfigure_size_of_tmpfs_gb = {{ sap_general_preconfigure_size_of_tmpfs_gb }}"
+ tags:
+ - sap_general_preconfigure_configure_tmpfs
+
+- name: Import tasks from '../../RedHat/generic/configure-tmpfs.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-tmpfs.yml
+ tags:
+ - sap_general_preconfigure_configure_tmpfs
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/08-assert-linux-kernel-parameters.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/08-assert-linux-kernel-parameters.yml
new file mode 100644
index 00000000..6ef6cadd
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/08-assert-linux-kernel-parameters.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert 3562909-8
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 8: Configure Linux Kernel Parameters"
+ tags:
+ - sap_general_preconfigure_kernel_parameters
+
+- name: Import tasks from '../../RedHat/generic/assert-kernel-parameters.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-kernel-parameters.yml
+ tags:
+ - sap_general_preconfigure_kernel_parameters
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/08-configure-linux-kernel-parameters.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/08-configure-linux-kernel-parameters.yml
new file mode 100644
index 00000000..29b99c59
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/08-configure-linux-kernel-parameters.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure 3562909-8
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 8: Configure Linux Kernel Parameters"
+ tags:
+ - sap_general_preconfigure_kernel_parameters
+
+- name: Import tasks from '../../RedHat/generic/configure-kernel-parameters.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-kernel-parameters.yml
+ tags:
+ - sap_general_preconfigure_kernel_parameters
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/09-assert-process-resource-limits.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/09-assert-process-resource-limits.yml
new file mode 100644
index 00000000..afd0f02d
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/09-assert-process-resource-limits.yml
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert 3562909-9
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 9: Configure Process Resource Limits"
+ tags:
+ - sap_general_preconfigure_nproc_limits
+
+- name: Import tasks from '../../RedHat/generic/assert-limits-conf-file.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-limits-conf-file.yml
+ tags:
+ - sap_general_preconfigure_nproc_limits
+
+- name: Import tasks from '../../RedHat/generic/assert-nproc-limits.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-nproc-limits.yml
+ tags:
+ - sap_general_preconfigure_nproc_limits
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/09-configure-process-resource-limits.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/09-configure-process-resource-limits.yml
new file mode 100644
index 00000000..95d2c666
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/09-configure-process-resource-limits.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure 3562909-9
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 9: Configure Process Resource Limits"
+ tags:
+ - sap_general_preconfigure_nproc_limits
+
+- name: Import tasks from '../../RedHat/generic/increase-nproc-limits.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/increase-nproc-limits.yml
+ tags:
+ - sap_general_preconfigure_nproc_limits
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/10-assert-systemd-tmpfiles.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/10-assert-systemd-tmpfiles.yml
new file mode 100644
index 00000000..c0e42ed8
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/10-assert-systemd-tmpfiles.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert 3562909-10
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 10: Configure systemd-tmpfiles"
+ tags:
+ - sap_general_preconfigure_systemd_tmpfiles
+
+- name: Import tasks from '../../RedHat/generic/assert-systemd-tmpfiles.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-systemd-tmpfiles.yml
+ tags:
+ - sap_general_preconfigure_systemd_tmpfiles
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3562909/10-configure-systemd-tmpfiles.yml b/roles/sap_general_preconfigure/tasks/sapnote/3562909/10-configure-systemd-tmpfiles.yml
new file mode 100644
index 00000000..bde2ef65
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3562909/10-configure-systemd-tmpfiles.yml
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Configure 3562909-10
+ ansible.builtin.debug:
+ msg: "SAP note 3562909 Step 10: Configure systemd-tmpfiles"
+ tags:
+ - sap_general_preconfigure_systemd_tmpfiles
+
+- name: Import tasks from '../../RedHat/generic/configure-systemd-tmpfiles.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-systemd-tmpfiles.yml
+ tags:
+ - sap_general_preconfigure_systemd_tmpfiles
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/assert-2369910.yml b/roles/sap_general_preconfigure/tasks/sapnote/assert-2369910.yml
new file mode 100644
index 00000000..e14f88eb
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/assert-2369910.yml
@@ -0,0 +1,36 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+- name: Assert - Display SAP note number 2369910 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^2369910$') | first).number }}
+ (version {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^2369910$') | first).version }}): SAP Software on Linux: General Information"
+ tags:
+ - always
+
+## STEP 3.1 -- System Language
+- name: Step 3.1 - Check if English Language is installed
+ tags:
+ - sap_general_preconfigure_2369910
+ - sap_general_preconfigure_2369910_03
+ block:
+ - name: Get list of installed locales
+ ansible.builtin.command: locale -a
+ changed_when: false
+ register: __sap_general_preconfigure_locales_installed
+
+ - name: Assert that an English locale is installed
+ ansible.builtin.assert:
+ that: __sap_general_preconfigure_locales_installed.stdout_lines | select('match', '^en_') | list | length > 0
+ fail_msg: "FAIL: No English locale is installed. Please install an English locale!"
+ success_msg: "PASS: An English locale is installed."
+
+ - name: Get the current default locale
+ ansible.builtin.command: awk '{gsub("\"","")}/^LANG=/&&(/=C\./||/=en_/)&&(/utf8$/||/UTF-8$/){print}' /etc/locale.conf
+ changed_when: false
+ register: __sap_general_preconfigure_current_default_locale
+
+ - name: Assert that an English locale is the default
+ ansible.builtin.assert:
+ that: __sap_general_preconfigure_current_default_locale.stdout_lines | length > 0
+ fail_msg: "FAIL: English is not set as the default locale. Please define a valid English default locale with the variable 'sap_general_preconfigure_default_locale' !"
+ success_msg: "PASS: An English default locale is set."
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/assert-2578899.yml b/roles/sap_general_preconfigure/tasks/sapnote/assert-2578899.yml
new file mode 100644
index 00000000..38242e56
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/assert-2578899.yml
@@ -0,0 +1,28 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+# 2578899 - SUSE Linux Enterprise Server 15: Installation Note
+
+- name: Assert - Display SAP note number 2578899 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^2578899$') | first).number }}
+ (version {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^2578899$') | first).version }}):
+ SUSE Linux Enterprise Server 15: Installation Note"
+ tags:
+ - always
+
+- name: Set fact for SAP note number 2578899
+ ansible.builtin.set_fact:
+ __sap_general_preconfigure_services_2578899:
+ - uuidd.socket
+ - sysstat
+ - sysctl-logger.service
+
+ __sap_general_preconfigure_grub_cmdline_2578899: []
+ # I/O Scheduler parameter is already part of default saptune and sapconf configuration.
+ # - "elevator=noop"
+
+- name: Import tasks from '2578899/assert-installation.yml'
+ ansible.builtin.import_tasks: 2578899/assert-installation.yml
+
+- name: Import tasks from '2578899/assert-configuration.yml'
+ ansible.builtin.import_tasks: 2578899/assert-configuration.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/assert-3562909.yml b/roles/sap_general_preconfigure/tasks/sapnote/assert-3562909.yml
new file mode 100644
index 00000000..5237ed50
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/assert-3562909.yml
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+- name: Assert - Display SAP note number 3562909 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3562909$') | first).number }}
+ (version {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3562909$') | first).version }}): Configure RHEL 9"
+ tags:
+ - always
+
+- name: Import tasks from '3562909/02-assert-selinux.yml'
+ ansible.builtin.import_tasks: 3562909/02-assert-selinux.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_02 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_02
+
+- name: Import tasks from '3562909/03-assert-hostname.yml'
+ ansible.builtin.import_tasks: 3562909/03-assert-hostname.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_03 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_03
+
+- name: Import tasks from '3562909/04-assert-network-time-and-date.yml'
+ ansible.builtin.import_tasks: 3562909/04-assert-network-time-and-date.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_04 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_04
+
+- name: Import tasks from '3562909/05-assert-firewall.yml'
+ ansible.builtin.import_tasks: 3562909/05-assert-firewall.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_05 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_05
+
+- name: Import tasks from '3562909/06-assert-uuidd.yml'
+ ansible.builtin.import_tasks: 3562909/06-assert-uuidd.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_06 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_06
+
+- name: Import tasks from '3562909/07-assert-tmpfs.yml'
+ ansible.builtin.import_tasks: 3562909/07-assert-tmpfs.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_07 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_07
+
+- name: Import tasks from '3562909/08-assert-linux-kernel-parameters.yml'
+ ansible.builtin.import_tasks: 3562909/08-assert-linux-kernel-parameters.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_08 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_08
+
+- name: Import tasks from '3562909/09-assert-process-resource-limits.yml'
+ ansible.builtin.import_tasks: 3562909/09-assert-process-resource-limits.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_09 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_09
+
+- name: Import tasks from '3562909/10-assert-systemd-tmpfiles.yml'
+ ansible.builtin.import_tasks: 3562909/10-assert-systemd-tmpfiles.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3562909_10 | d(false)
+ tags:
+ - sap_general_preconfigure_3562909
+ - sap_general_preconfigure_3562909_10
diff --git a/roles/sap_general_preconfigure/vars/RedHat_10.yml b/roles/sap_general_preconfigure/vars/RedHat_10.yml
new file mode 100644
index 00000000..ef1a5803
--- /dev/null
+++ b/roles/sap_general_preconfigure/vars/RedHat_10.yml
@@ -0,0 +1,104 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+
+# vars file for sap_general_preconfigure
+
+__sap_general_preconfigure_sapnotes_versions:
+ - { number: '2369910', version: '18' }
+ - { number: '3562909', version: '1' }
+ - { number: '1771258', version: '6' }
+
+__sap_general_preconfigure_max_repo_type_x86_64: 'e4s'
+__sap_general_preconfigure_max_repo_type_ppc64le: 'e4s'
+__sap_general_preconfigure_max_repo_type_s390x: 'eus'
+
+__sap_general_preconfigure_max_repo_type: "{{ lookup('vars', '__sap_general_preconfigure_max_repo_type_' + ansible_architecture) }}"
+
+# RHEL 9 minor releases maximum repo support duration
+__sap_general_preconfigure_max_repo_type_string_10_0: '{{ __sap_general_preconfigure_max_repo_type }}-'
+__sap_general_preconfigure_max_repo_type_string_10_1: ''
+
+__sap_general_preconfigure_max_repo_type_string: "{{ lookup('vars', '__sap_general_preconfigure_max_repo_type_string_' + ansible_distribution_version | replace(\".\", \"_\")) }}"
+
+__sap_general_preconfigure_req_os_repos:
+ - rhel-{{ ansible_distribution_major_version }}-for-{{ ansible_architecture }}-baseos-{{ __sap_general_preconfigure_max_repo_type_string }}rpms
+ - rhel-{{ ansible_distribution_major_version }}-for-{{ ansible_architecture }}-appstream-{{ __sap_general_preconfigure_max_repo_type_string }}rpms
+__sap_general_preconfigure_req_netweaver_repos:
+ - rhel-{{ ansible_distribution_major_version }}-for-{{ ansible_architecture }}-sap-netweaver-{{ __sap_general_preconfigure_max_repo_type_string }}rpms
+__sap_general_preconfigure_req_hana_repos:
+ - rhel-{{ ansible_distribution_major_version }}-for-{{ ansible_architecture }}-sap-solutions-{{ __sap_general_preconfigure_max_repo_type_string }}rpms
+__sap_general_preconfigure_req_ha_repos:
+ - rhel-{{ ansible_distribution_major_version }}-for-{{ ansible_architecture }}-highavailability-{{ __sap_general_preconfigure_max_repo_type_string }}rpms
+
+__sap_general_preconfigure_envgroups:
+ - "server-product-environment"
+
+__sap_general_preconfigure_packagegroups_x86_64:
+ - "@server"
+
+__sap_general_preconfigure_packagegroups_ppc64le:
+ - "@server"
+
+__sap_general_preconfigure_packagegroups_s390x:
+ - "@server"
+
+__sap_general_preconfigure_packagegroups: "{{ lookup('vars', '__sap_general_preconfigure_packagegroups_' + ansible_architecture) }}"
+
+__sap_general_preconfigure_packages_x86_64:
+ - uuidd
+ - libnsl
+ - tcsh
+ - psmisc
+ - nfs-utils
+ - bind-utils
+# package hostname: needed by rhel-system-roles-sap
+ - hostname
+# package tuned: no longer part of package group "Core" in RHEL 10, so we have to install it
+ - tuned
+# package libxcrypt-compat: needed by sapstartsrv and SAP HANA on RHEL 10:
+ - libxcrypt-compat
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
+
+__sap_general_preconfigure_packages_ppc64le:
+ - uuidd
+ - libnsl
+ - tcsh
+ - psmisc
+ - nfs-utils
+ - bind-utils
+# package hostname: needed by rhel-system-roles-sap
+ - hostname
+# package tuned: no longer part of package group "Core" in RHEL 10, so we have to install it
+ - tuned
+# package libxcrypt-compat: needed by sapstartsrv and SAP HANA on RHEL 10:
+ - libxcrypt-compat
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
+
+__sap_general_preconfigure_packages_s390x:
+ - uuidd
+ - libnsl
+ - tcsh
+ - psmisc
+ - nfs-utils
+ - bind-utils
+# package hostname: needed by rhel-system-roles-sap
+ - hostname
+# package tuned: no longer part of package group "Core" in RHEL 10, so we have to install it
+ - tuned
+# package libxcrypt-compat: needed by sapstartsrv on RHEL 10:
+ - libxcrypt-compat
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
+
+__sap_general_preconfigure_packages: "{{ lookup('vars', '__sap_general_preconfigure_packages_' + ansible_architecture) }}"
+
+__sap_general_preconfigure_required_ppc64le:
+ - ibm-power-managed-rhel9
+
+__sap_general_preconfigure_kernel_parameters_default:
+ - { name: vm.max_map_count, value: '2147483647' }
diff --git a/roles/sap_general_preconfigure/vars/RedHat_7.yml b/roles/sap_general_preconfigure/vars/RedHat_7.yml
index 76f8dc46..5478a445 100644
--- a/roles/sap_general_preconfigure/vars/RedHat_7.yml
+++ b/roles/sap_general_preconfigure/vars/RedHat_7.yml
@@ -4,6 +4,7 @@
# vars file for sap_general_preconfigure
__sap_general_preconfigure_sapnotes_versions:
+ - { number: '2369910', version: '18' }
- { number: '2002167', version: '36' }
- { number: '1771258', version: '6' }
- { number: '1391070', version: '41' }
diff --git a/roles/sap_general_preconfigure/vars/RedHat_8.0.yml b/roles/sap_general_preconfigure/vars/RedHat_8.0.yml
index 0f952dcd..d0f8fe03 100644
--- a/roles/sap_general_preconfigure/vars/RedHat_8.0.yml
+++ b/roles/sap_general_preconfigure/vars/RedHat_8.0.yml
@@ -4,6 +4,7 @@
# vars file for sap_general_preconfigure
__sap_general_preconfigure_sapnotes_versions:
+ - { number: '2369910', version: '18' }
- { number: '2772999', version: '24' }
- { number: '1771258', version: '6' }
@@ -47,6 +48,9 @@ __sap_general_preconfigure_packages:
- psmisc
- nfs-utils
- bind-utils
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_required_ppc64le:
- ibm-power-managed-rhel8
diff --git a/roles/sap_general_preconfigure/vars/RedHat_8.1.yml b/roles/sap_general_preconfigure/vars/RedHat_8.1.yml
index 3ffd289a..375b7e05 100644
--- a/roles/sap_general_preconfigure/vars/RedHat_8.1.yml
+++ b/roles/sap_general_preconfigure/vars/RedHat_8.1.yml
@@ -4,6 +4,7 @@
# vars file for sap_general_preconfigure
__sap_general_preconfigure_sapnotes_versions:
+ - { number: '2369910', version: '18' }
- { number: '2772999', version: '24' }
- { number: '1771258', version: '6' }
@@ -49,6 +50,9 @@ __sap_general_preconfigure_packages_x86_64:
- bind-utils
- compat-sap-c++-9
- compat-sap-c++-10
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages_ppc64le:
- uuidd
@@ -59,6 +63,9 @@ __sap_general_preconfigure_packages_ppc64le:
- bind-utils
- compat-sap-c++-9
- compat-sap-c++-10
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages_s390x:
- uuidd
@@ -67,6 +74,9 @@ __sap_general_preconfigure_packages_s390x:
- psmisc
- nfs-utils
- bind-utils
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages: "{{ lookup('vars', '__sap_general_preconfigure_packages_' + ansible_architecture) }}"
diff --git a/roles/sap_general_preconfigure/vars/RedHat_8.2.yml b/roles/sap_general_preconfigure/vars/RedHat_8.2.yml
index e47d8806..bd26d320 100644
--- a/roles/sap_general_preconfigure/vars/RedHat_8.2.yml
+++ b/roles/sap_general_preconfigure/vars/RedHat_8.2.yml
@@ -4,6 +4,7 @@
# vars file for sap_general_preconfigure
__sap_general_preconfigure_sapnotes_versions:
+ - { number: '2369910', version: '18' }
- { number: '2772999', version: '24' }
- { number: '1771258', version: '6' }
@@ -49,6 +50,9 @@ __sap_general_preconfigure_packages_x86_64:
- bind-utils
- compat-sap-c++-9
- compat-sap-c++-10
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages_ppc64le:
- uuidd
@@ -59,6 +63,9 @@ __sap_general_preconfigure_packages_ppc64le:
- bind-utils
- compat-sap-c++-9
- compat-sap-c++-10
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages_s390x:
- uuidd
@@ -67,6 +74,9 @@ __sap_general_preconfigure_packages_s390x:
- psmisc
- nfs-utils
- bind-utils
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages: "{{ lookup('vars', '__sap_general_preconfigure_packages_' + ansible_architecture) }}"
diff --git a/roles/sap_general_preconfigure/vars/RedHat_8.yml b/roles/sap_general_preconfigure/vars/RedHat_8.yml
index aa05e96d..12ee9598 100644
--- a/roles/sap_general_preconfigure/vars/RedHat_8.yml
+++ b/roles/sap_general_preconfigure/vars/RedHat_8.yml
@@ -4,6 +4,7 @@
# vars file for sap_general_preconfigure
__sap_general_preconfigure_sapnotes_versions:
+ - { number: '2369910', version: '18' }
- { number: '2772999', version: '24' }
- { number: '1771258', version: '6' }
@@ -59,6 +60,9 @@ __sap_general_preconfigure_packages_x86_64:
- compat-sap-c++-9
- compat-sap-c++-10
- compat-sap-c++-11
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages_ppc64le:
- uuidd
@@ -70,6 +74,9 @@ __sap_general_preconfigure_packages_ppc64le:
- compat-sap-c++-9
- compat-sap-c++-10
- compat-sap-c++-11
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages_s390x:
- uuidd
@@ -79,6 +86,9 @@ __sap_general_preconfigure_packages_s390x:
- nfs-utils
- bind-utils
- compat-sap-c++-10
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages: "{{ lookup('vars', '__sap_general_preconfigure_packages_' + ansible_architecture) }}"
diff --git a/roles/sap_general_preconfigure/vars/RedHat_9.yml b/roles/sap_general_preconfigure/vars/RedHat_9.yml
index 9f22fefe..a2579378 100644
--- a/roles/sap_general_preconfigure/vars/RedHat_9.yml
+++ b/roles/sap_general_preconfigure/vars/RedHat_9.yml
@@ -4,6 +4,7 @@
# vars file for sap_general_preconfigure
__sap_general_preconfigure_sapnotes_versions:
+ - { number: '2369910', version: '18' }
- { number: '3108316', version: '2' }
- { number: '1771258', version: '6' }
@@ -65,6 +66,9 @@ __sap_general_preconfigure_packages_x86_64:
- tuned
# package libxcrypt-compat: needed by sapstartsrv and SAP HANA on RHEL 9:
- libxcrypt-compat
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages_ppc64le:
- uuidd
@@ -79,6 +83,9 @@ __sap_general_preconfigure_packages_ppc64le:
- tuned
# package libxcrypt-compat: needed by sapstartsrv and SAP HANA on RHEL 9:
- libxcrypt-compat
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages_s390x:
- uuidd
@@ -93,6 +100,9 @@ __sap_general_preconfigure_packages_s390x:
- tuned
# package libxcrypt-compat: needed by sapstartsrv on RHEL 9:
- libxcrypt-compat
+# English locale packages are required as per SAP note 2369910:
+ - langpacks-en
+ - glibc-langpack-en
__sap_general_preconfigure_packages: "{{ lookup('vars', '__sap_general_preconfigure_packages_' + ansible_architecture) }}"
diff --git a/roles/sap_general_preconfigure/vars/SLES_15.yml b/roles/sap_general_preconfigure/vars/SLES_15.yml
new file mode 100644
index 00000000..f6e47478
--- /dev/null
+++ b/roles/sap_general_preconfigure/vars/SLES_15.yml
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+# Variables specific to following versions:
+# - SUSE Linux Enterprise Server 15
+
+__sap_general_preconfigure_sapnotes_versions:
+ # 2578899 - SUSE Linux Enterprise Server 15: Installation Note
+ - { number: '2578899', version: '50' }
+ # 2369910 - SAP Software on Linux: General information
+ - { number: '2369910', version: '18' }
+
+__sap_general_preconfigure_packages:
+ - uuidd
+ - tcsh
+ - psmisc
+ - nfs-utils
+ - bind-utils
+ - hostname
+
+# Packages specific for SAP Note 2578899
+# Their services are enabled using __sap_general_preconfigure_services_2578899
+__sap_general_preconfigure_packages_2578899:
+ - uuidd
+ - sysstat
+ - sysctl-logger
+
+__sap_general_preconfigure_min_pkgs: []
+__sap_general_preconfigure_packagegroups:
+__sap_general_preconfigure_envgroups:
+__sap_general_preconfigure_kernel_parameters_default: []
+
+# SLES_SAP is using saptune, but SLES is using sapconf.
+__sap_general_preconfigure_use_saptune: false
diff --git a/roles/sap_general_preconfigure/vars/SLES_SAP_15.yml b/roles/sap_general_preconfigure/vars/SLES_SAP_15.yml
new file mode 100644
index 00000000..1f2dcb57
--- /dev/null
+++ b/roles/sap_general_preconfigure/vars/SLES_SAP_15.yml
@@ -0,0 +1,37 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+# Variables specific to following versions:
+# - SUSE Linux Enterprise Server for SAP Applications 15
+
+__sap_general_preconfigure_sapnotes_versions:
+ # 2578899 - SUSE Linux Enterprise Server 15: Installation Note
+ - { number: '2578899', version: '50' }
+ # 2369910 - SAP Software on Linux: General information
+ - { number: '2369910', version: '18' }
+
+__sap_general_preconfigure_packages:
+ # Mandatory patterns
+ - patterns-server-enterprise-sap_server
+
+ # Recommended packages
+ - tcsh
+ - psmisc
+
+ # Additional packages
+ - nfs-utils
+ - bind-utils
+
+# Packages specific for SAP Note 2578899
+# Their services are enabled using __sap_general_preconfigure_services_2578899
+__sap_general_preconfigure_packages_2578899:
+ - uuidd
+ - sysstat
+ - sysctl-logger
+
+__sap_general_preconfigure_min_pkgs: []
+__sap_general_preconfigure_packagegroups:
+__sap_general_preconfigure_envgroups:
+__sap_general_preconfigure_kernel_parameters_default: []
+
+# SLES_SAP is using saptune, but SLES is using sapconf.
+__sap_general_preconfigure_use_saptune: true
diff --git a/roles/sap_general_preconfigure/vars/SLES_SAP_16.yml b/roles/sap_general_preconfigure/vars/SLES_SAP_16.yml
new file mode 100644
index 00000000..c36a953f
--- /dev/null
+++ b/roles/sap_general_preconfigure/vars/SLES_SAP_16.yml
@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: Apache-2.0
+---
+# Variables specific to following versions:
+# - SUSE Linux Enterprise Server for SAP Applications 16
+
+__sap_general_preconfigure_sapnotes_versions: []
+
+__sap_general_preconfigure_packages:
+ # Mandatory patterns
+ - patterns-sap-base_sap_server
+
+ # Recommended packages
+ - tcsh
+ - psmisc
+
+ # 2578899 is not updated for SLES 16 yet.
+ - uuidd
+ - sysstat
+ - sysctl-logger
+
+ # Additional packages
+ - nfs-utils
+ - bind-utils
+
+
+__sap_general_preconfigure_min_pkgs: []
+__sap_general_preconfigure_packagegroups:
+__sap_general_preconfigure_envgroups:
+__sap_general_preconfigure_kernel_parameters_default: []
+
+# SLES_SAP is using saptune, but SLES is using sapconf.
+__sap_general_preconfigure_use_saptune: true
diff --git a/roles/sap_general_preconfigure/vars/Suse.yml b/roles/sap_general_preconfigure/vars/Suse.yml
deleted file mode 100644
index c1bba28a..00000000
--- a/roles/sap_general_preconfigure/vars/Suse.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-# SPDX-License-Identifier: Apache-2.0
----
-# Variables specific to following versions:
-# - SUSE Linux Enterprise Server for SAP Applications 15
-# - SUSE Linux Enterprise Server 15
-# - SUSE Linux Enterprise Server for SAP Applications 16
-# - SUSE Linux Enterprise Server 16
-
-__sap_general_preconfigure_sapnotes_versions:
- - ''
-
-__sap_general_preconfigure_packages:
- - uuidd
- - tcsh
- - psmisc
- - nfs-utils
- - bind-utils
- - hostname
-
-__sap_general_preconfigure_min_pkgs:
-__sap_general_preconfigure_packagegroups:
-__sap_general_preconfigure_envgroups:
-__sap_general_preconfigure_kernel_parameters_default:
diff --git a/roles/sap_ha_pacemaker_cluster/README.md b/roles/sap_ha_pacemaker_cluster/README.md
index a74280e4..c85964e2 100644
--- a/roles/sap_ha_pacemaker_cluster/README.md
+++ b/roles/sap_ha_pacemaker_cluster/README.md
@@ -883,7 +883,8 @@ sap_ha_pacemaker_cluster_resource_defaults:
- _Type:_ `string`
- _Default:_ `True`
-Disabling this variable enables to use Classic SAPHanaSR agents even on server, with SAPHanaSR-angi is available.
+Disabling this variable enables to use Classic SAPHanaSR agents even on server, where SAPHanaSR-angi is available.
+Value `false` (Classic) is ignored when only SAPHanaSR-angi packages are available.
### sap_ha_pacemaker_cluster_sbd_devices
- _Type:_ `list`
diff --git a/roles/sap_ha_pacemaker_cluster/defaults/main.yml b/roles/sap_ha_pacemaker_cluster/defaults/main.yml
index b50453b9..de02a3d5 100644
--- a/roles/sap_ha_pacemaker_cluster/defaults/main.yml
+++ b/roles/sap_ha_pacemaker_cluster/defaults/main.yml
@@ -1,353 +1,452 @@
-# SPDX-License-Identifier: Apache-2.0
----
-################################################################################
-# Role generic parameters
-################################################################################
-
-# Do NOT USE ANSIBLE FACTS for defaults to be compatible with
-# playbooks that disable generic fact gathering!
-
-# Set which Ansible Collection to use for the Linux System Roles.
-# For community/upstream, use 'fedora.linux_system_roles'
-# For the RHEL System Roles for SAP, or for Red Hat Automation Hub, use 'redhat.rhel_system_roles'
-sap_ha_pacemaker_cluster_system_roles_collection: 'fedora.linux_system_roles'
-
-# Variables for the cluster setup must be constructed by dedicated tasks!
-# The included 'ha_cluster' role will not work with the role variables set
-# in this role. This SAP HA role takes care of the parameter construction
-# based on the target cluster to be configured, before feeding it into 'ha_cluster'.
-
-
-# Optional: write all cluster configuration (including unencrypted credentials!) into a yaml
-# config file.
-# Useful for parameter review or reuse with the 'ha_cluster' LSR.
-sap_ha_pacemaker_cluster_create_config_varfile: false
-sap_ha_pacemaker_cluster_create_config_dest: "review_resource_config.yml"
-
-# Inherit SAP common (global synonyms) parameters when defined.
-
-# This variable is currently only required for HANA nodes to define
-# - hana_site:
-# Other options are needed in the separate HSR setup role.
-sap_ha_pacemaker_cluster_cluster_nodes: "{{ sap_hana_cluster_nodes | d([]) }}"
-
-# Resource defaults are defined differently by cluster type in different tasks, if not custom defined.
-sap_ha_pacemaker_cluster_resource_defaults: {}
-sap_ha_pacemaker_cluster_operation_defaults: {}
-
-# The type of SAP landscape and multi-node replication
-# TODO: Type definitions and feature support
-# TODO: Implement all types
-# hana_scaleup_costopt (not yet)
-# hana_scaleup_perf (available, default)
-# hana_scaleup_per_dr (not yet)
-# hana_scaleout (not yet)
-# nwas_abap_ascs_ers (available)
-# nwas_abap_pas_aas (not yet)
-# nwas_java_scs_ers (available)
-
-# 'sap_ha_pacemaker_cluster_host_type' is converted from string to list type in
-# 'tasks/ascertain_sap_landscape.yml'.
-sap_ha_pacemaker_cluster_host_type: "{{ sap_host_type | d(['hana_scaleup_perf']) }}"
-
-### VIP resource default patterns
-sap_ha_pacemaker_cluster_vip_client_interface: ''
-
-## A custom stonith definition that takes precedence over platform defaults.
-# sap_ha_pacemaker_cluster_stonith_custom:
-# - name: ""
-# agent: "stonith:"
-# options:
-# pcmk_host_list: ""
-
-# sap_ha_pacemaker_cluster_stonith_custom: []
-
-# Simpler definition format here which gets transformed into the 'ha_cluster' LSR native
-# 'ha_cluster_cluster_properties' parameter.
-sap_ha_pacemaker_cluster_cluster_properties:
- stonith-enabled: true
- stonith-timeout: 900
- concurrent-fencing: true
-
-### Constraints:
-# score is dynamic and automatically increased for groups
-sap_ha_pacemaker_cluster_constraint_colo_base_score: 2000
-
-################################################################################
-# Inherit from 'ha_cluster' Linux System Role parameters when defined
-################################################################################
-
-# Optional without a default. The 'ha_cluster' LSR defaults will apply when not defined.
-# sap_ha_pacemaker_cluster_ha_cluster:
-# sap_ha_pacemaker_cluster_cluster_name:
-
-# Optional. Set a default here and not in the code.
-sap_ha_pacemaker_cluster_extra_packages: []
-
-# Optional: additional fence agent packages. This is combined with the above "minimal" list.
-sap_ha_pacemaker_cluster_fence_agent_packages: []
-
-# Mandatory.
-# Either inherit from the 'ha_cluster' LSR variable when defined, but do not set a default.
-# This fails the argument validation when none of the 2 vars are defined.
-sap_ha_pacemaker_cluster_hacluster_user_password: "{{ ha_cluster_hacluster_password }}"
-
-
-################################################################################
-# HANA
-################################################################################
-
-sap_ha_pacemaker_cluster_hana_sid: '' # Mandatory System ID in capital letters
-sap_ha_pacemaker_cluster_hana_instance_nr: '' # Mandatory instance number in string format
-
-# Optional parameters to customize SAPHana resources
-# AUTOMATED_REGISTER
-sap_ha_pacemaker_cluster_hana_automated_register: true
-# DUPLICATE_PRIMARY_TIMEOUT
-sap_ha_pacemaker_cluster_hana_duplicate_primary_timeout: 7200
-# PREFER_SITE_TAKEOVER
-sap_ha_pacemaker_cluster_hana_prefer_site_takeover: true
-
-# SAP HANA - Resource IDs (names) as convenience parameters.
-sap_ha_pacemaker_cluster_hana_resource_name: '' # Default: rsc_SAPHana__HDB
-sap_ha_pacemaker_cluster_hana_resource_clone_name: '' # Default: cln_SAPHana__HDB
-sap_ha_pacemaker_cluster_hana_resource_clone_msl_name: '' # Default: msl_SAPHana__HDB
-sap_ha_pacemaker_cluster_hanacontroller_resource_name: '' # Default: rsc_SAPHanaCon__HDB
-sap_ha_pacemaker_cluster_hanacontroller_resource_clone_name: '' # Default: _SAPHanaCon__HDB
-sap_ha_pacemaker_cluster_hana_topology_resource_name: '' # Default: rsc_SAPHanaTop__HDB
-sap_ha_pacemaker_cluster_hana_topology_resource_clone_name: '' # Default: cln_SAPHanaTop__HDB
-sap_ha_pacemaker_cluster_hana_filesystem_resource_name: '' # Default: rsc_SAPHanaFil__HDB
-sap_ha_pacemaker_cluster_hana_filesystem_resource_clone_name: '' # Default: cln_SAPHanaFil__HDB
-
-# SAP HANA - Constraint names
-sap_ha_pacemaker_cluster_hana_order_topology_hana_name: '' # Default: ord_saphana_saphanatop__HDB
-sap_ha_pacemaker_cluster_hana_colocation_hana_vip_primary_name: '' # Default: col_saphana_vip__HDB_primary
-sap_ha_pacemaker_cluster_hana_colocation_hana_vip_secondary_name: '' # Default: col_saphana_vip__HDB_readonly
-sap_ha_pacemaker_cluster_hana_order_hana_vip_primary_name: '' # Default: ord_saphana_vip__HDB_primary
-sap_ha_pacemaker_cluster_hana_order_hana_vip_secondary_name: '' # Default: ord_saphana_vip__HDB_readonly
-
-# Multiple VIP parameters can be defined and will be combined.
-# See tasks/include_construct_vip_resources.yml
-#
-# Mandatory: primary VIP address definition in HANA scale-up clusters
-sap_ha_pacemaker_cluster_vip_hana_primary_ip_address: ''
-sap_ha_pacemaker_cluster_vip_hana_primary_resource_name: '' # Default: rsc_vip__HDB_primary
-sap_ha_pacemaker_cluster_healthcheck_hana_primary_resource_name: '' # Default: rsc_vip_health_check__HDB_primary
-
-sap_ha_pacemaker_cluster_vip_hana_secondary_ip_address: ''
-sap_ha_pacemaker_cluster_vip_hana_secondary_resource_name: '' # Default: rsc_vip__HDB_readonly
-sap_ha_pacemaker_cluster_healthcheck_hana_secondary_resource_name: '' # Default: rsc_vip_health_check__HDB_readonly
-
-sap_ha_pacemaker_cluster_healthcheck_hana_primary_id: '' # Default: prim
-sap_ha_pacemaker_cluster_healthcheck_hana_secondary_id: '' # Default: ro
-
-# Optional dictionary with custom list of HANA Hooks for replication
-sap_ha_pacemaker_cluster_hana_hooks: []
-# Parameters enable additional srHooks for TkOver and ChkSrv.
-# They are ignored if sap_ha_pacemaker_cluster_hana_hooks is used.
-sap_ha_pacemaker_cluster_hana_hook_tkover: false
-sap_ha_pacemaker_cluster_hana_hook_chksrv: false
-
-# SAP Hana global.ini path calculated from SID
-sap_ha_pacemaker_cluster_hana_global_ini_path: '' # Default: /usr/sap//SYS/global/hdb/custom/config/global.ini
-
-# Disable auto-detection of SAPHanaSR-angi package and use Classic
-sap_ha_pacemaker_cluster_saphanasr_angi_detection: true
-
-################################################################################
-# NetWeaver generic definitions
-################################################################################
-
-# Default will be ENSA2. To configure HA resources for ENSA1,
-# set this parameter to 'true'.
-sap_ha_pacemaker_cluster_nwas_cs_ensa1: false
-
-# Enable ENSA2 simple mount configuration
-sap_ha_pacemaker_cluster_nwas_cs_ers_simple_mount: true
-
-# Enable/Disable sap_cluster_connector.
-# Ref.: https://access.redhat.com/solutions/3606101
-sap_ha_pacemaker_cluster_enable_cluster_connector: true
-
-# SAP Netweaver instance details
-sap_ha_pacemaker_cluster_nwas_sid: '' # Mandatory System ID in capital letters for Netweaver scenarios
-sap_ha_pacemaker_cluster_nwas_ascs_instance_nr: '' # Mandatory instance number for ASCS/ERS
-sap_ha_pacemaker_cluster_nwas_scs_instance_nr: '' # Mandatory instance number for SCS/ERS
-sap_ha_pacemaker_cluster_nwas_ers_instance_nr: '' # Mandatory instance number for ASCS/ERS and SCS/ERS
-# TODO: Differentiate between ABAP and JAVA (Dxx vs Jxx) once supported
-sap_ha_pacemaker_cluster_nwas_abap_pas_instance_nr: '' # Mandatory instance number for PAS/AAS
-sap_ha_pacemaker_cluster_nwas_abap_aas_instance_nr: '' # Mandatory instance number for PAS/AAS
-
-
-# Definitions for filesystems resources. Currently limited to NFS filesystems.
-sap_ha_pacemaker_cluster_storage_definition: "{{ sap_storage_setup_definition | d([]) }}"
-sap_ha_pacemaker_cluster_storage_nfs_filesystem_type: nfs
-sap_ha_pacemaker_cluster_storage_nfs_mount_options: 'defaults'
-sap_ha_pacemaker_cluster_storage_nfs_server: "{{ sap_storage_nfs_server | d('') }}"
-
-# NFS filesystem resource requirement
-# Not adding to argument_specs because this should not be changed anyway.
-# TODO: review later and move to internal vars in vars/main.yml?
-sap_ha_pacemaker_cluster_resource_filesystem_force_unmount: safe
-
-
-# Multiple VIP parameters can be defined and will be combined.
-# See tasks/include_construct_vip_resources.yml
-sap_ha_pacemaker_cluster_vip_nwas_ascs_ip_address: ''
-sap_ha_pacemaker_cluster_vip_nwas_ascs_resource_name: '' # Default rsc_vip__ASCS
-sap_ha_pacemaker_cluster_healthcheck_nwas_ascs_resource_name: '' # Default: rsc_vip_health_check__ASCS
-
-sap_ha_pacemaker_cluster_vip_nwas_scs_ip_address: ''
-sap_ha_pacemaker_cluster_vip_nwas_scs_resource_name: '' # Default: rsc_vip__SCS
-sap_ha_pacemaker_cluster_healthcheck_nwas_scs_resource_name: '' # Default: rsc_vip_health_check__SCS
-
-sap_ha_pacemaker_cluster_vip_nwas_ers_ip_address: ''
-sap_ha_pacemaker_cluster_vip_nwas_ers_resource_name: '' # Default: rsc_vip__ERS
-sap_ha_pacemaker_cluster_healthcheck_nwas_ers_resource_name: '' # Default: rsc_vip_health_check__ERS
-
-sap_ha_pacemaker_cluster_vip_nwas_abap_pas_ip_address: ''
-sap_ha_pacemaker_cluster_vip_nwas_abap_pas_resource_name: '' # Default: rsc_vip__PAS
-sap_ha_pacemaker_cluster_healthcheck_nwas_abap_pas_resource_name: '' # Default: rsc_vip_health_check__PAS
-
-sap_ha_pacemaker_cluster_vip_nwas_abap_aas_ip_address: ''
-sap_ha_pacemaker_cluster_vip_nwas_abap_aas_resource_name: '' # Default: rsc_vip__AAS
-sap_ha_pacemaker_cluster_healthcheck_nwas_abap_aas_resource_name: '' # Default: rsc_vip_health_check__AAS
-
-sap_ha_pacemaker_cluster_healthcheck_nwas_ascs_id: ''
-sap_ha_pacemaker_cluster_healthcheck_nwas_scs_id: ''
-sap_ha_pacemaker_cluster_healthcheck_nwas_ers_id: ''
-sap_ha_pacemaker_cluster_healthcheck_nwas_pas_id: ''
-sap_ha_pacemaker_cluster_healthcheck_nwas_aas_id: ''
-
-# SAP NetWeaver common - Resource IDs (names) as convenience parameters
-# for the following filesystems:
-# - /sapmnt
-# - /usr/sap/trans
-# - /usr/sap/<>/SYS
-sap_ha_pacemaker_cluster_nwas_sapmnt_filesystem_resource_name: '' # Default: rsc_fs__sapmnt
-sap_ha_pacemaker_cluster_nwas_sapmnt_filesystem_resource_clone_name: '' # Default: cln_fs__sapmnt
-
-sap_ha_pacemaker_cluster_nwas_transports_filesystem_resource_name: '' # Default: rsc_fs__trans
-sap_ha_pacemaker_cluster_nwas_transports_filesystem_resource_clone_name: '' # Default: cln_fs__trans
-
-sap_ha_pacemaker_cluster_nwas_sys_filesystem_resource_name: '' # Default: rsc_fs__sys
-sap_ha_pacemaker_cluster_nwas_sys_filesystem_resource_clone_name: '' # Default: cln_fs__sys
-
-# The shared filesystems are not required to be configured in the cluster.
-# By default it is assumed that they are mounted by the system and available on all cluster nodes.
-# Set this parameter to "true" to configure the 3 shared filesystems as part of the cluster.
-sap_ha_pacemaker_cluster_nwas_shared_filesystems_cluster_managed: false
-
-
-################################################################################
-# ASCS and SCS shared resource defaults
-################################################################################
-
-# TODO: Remove backwards compatibility to nwas_abap_ascs
-sap_ha_pacemaker_cluster_nwas_cs_sapinstance_automatic_recover_bool:
- "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_sapinstance_automatic_recover_bool | d(false) }}"
-sap_ha_pacemaker_cluster_nwas_cs_sapinstance_resource_stickiness:
- "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_sapinstance_resource_stickiness | d(5000) }}"
-sap_ha_pacemaker_cluster_nwas_cs_sapinstance_ensa1_migration_threshold:
- "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_sapinstance_ensa1_migration_threshold | d(1) }}"
-sap_ha_pacemaker_cluster_nwas_cs_sapinstance_ensa1_failure_timeout:
- "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_sapinstance_ensa1_failure_timeout | d(60) }}"
-sap_ha_pacemaker_cluster_nwas_cs_group_stickiness:
- "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_group_stickiness | d(3000) }}"
-
-
-################################################################################
-# ASCS resource defaults
-################################################################################
-
-sap_ha_pacemaker_cluster_nwas_ascs_sapinstance_instance_name: '' # Mandatory name of instance profile
-sap_ha_pacemaker_cluster_nwas_ascs_sapinstance_start_profile_string: '' # Full path of instance profile
-
-sap_ha_pacemaker_cluster_nwas_ascs_filesystem_resource_name: '' # Default: rsc_fs__ASCS
-sap_ha_pacemaker_cluster_nwas_ascs_sapinstance_resource_name: '' # Default: rsc_SAPInstance__ASCS
-sap_ha_pacemaker_cluster_nwas_ascs_sapstartsrv_resource_name: '' # Default: rsc_SAPStartSrv__ASCS
-
-sap_ha_pacemaker_cluster_vip_nwas_ascs_resource_group_name: '' # Default: grp__ASCS
-
-sap_ha_pacemaker_cluster_nwas_colocation_ascs_no_ers_name: '' # Default: col_ascs_separate_
-sap_ha_pacemaker_cluster_nwas_order_ascs_first_name: '' # Default: ord_ascs_first_
-
-
-################################################################################
-# SCS resource defaults
-################################################################################
-
-sap_ha_pacemaker_cluster_nwas_scs_sapinstance_instance_name: '' # Mandatory name of instance profile
-sap_ha_pacemaker_cluster_nwas_scs_sapinstance_start_profile_string: '' # Full path of instance profile
-
-sap_ha_pacemaker_cluster_nwas_scs_filesystem_resource_name: '' # Default: rsc_fs__SCS
-sap_ha_pacemaker_cluster_nwas_scs_sapinstance_resource_name: '' # Default: rsc_SAPInstance__SCS
-sap_ha_pacemaker_cluster_nwas_scs_sapstartsrv_resource_name: '' # Default: rsc_SAPStartSrv__SCS
-
-sap_ha_pacemaker_cluster_vip_nwas_scs_resource_group_name: '' # Default: grp__SCS
-
-sap_ha_pacemaker_cluster_nwas_colocation_scs_no_ers_name: '' # Default: col_ascs_separate_
-sap_ha_pacemaker_cluster_nwas_order_scs_first_name: '' # Default: ord_ascs_first_
-
-
-################################################################################
-# ERS resource defaults
-################################################################################
-
-sap_ha_pacemaker_cluster_nwas_ers_sapinstance_instance_name: '' # Mandatory name of instance profile
-sap_ha_pacemaker_cluster_nwas_ers_sapinstance_start_profile_string: '' # Full path of instance profile
-
-sap_ha_pacemaker_cluster_nwas_ers_filesystem_resource_name: '' # Default: rsc_fs__ERS
-sap_ha_pacemaker_cluster_nwas_ers_sapinstance_resource_name: '' # Default: rsc_SAPInstance__ERS
-sap_ha_pacemaker_cluster_nwas_ers_sapstartsrv_resource_name: '' # Default: rsc_SAPStartSrv__ERS
-sap_ha_pacemaker_cluster_vip_nwas_ers_resource_group_name: '' # Default: grp__ERS
-
-sap_ha_pacemaker_cluster_nwas_ers_sapinstance_automatic_recover_bool: false
-
-################################################################################
-# PAS/AAS resource defaults
-################################################################################
-# sap_ha_pacemaker_cluster_nwas_abap_pas_filesystem_resource_name: ''
-# sap_ha_pacemaker_cluster_nwas_abap_pas_sapinstance_resource_name: ''
-# sap_ha_pacemaker_cluster_nwas_abap_aas_filesystem_resource_name: ''
-# sap_ha_pacemaker_cluster_nwas_abap_aas_sapinstance_resource_name: ''
-
-
-################################################################################
-# Platform specific
-################################################################################
-
-## Infrastructure Platform variables, shown here for visibility only and should not be given default values
-
-## AWS platform, EC2 Virtual Servers
-# sap_ha_pacemaker_cluster_aws_vip_update_rt
-# sap_ha_pacemaker_cluster_aws_access_key_id
-# sap_ha_pacemaker_cluster_aws_secret_access_key
-# sap_ha_pacemaker_cluster_aws_region
-# sap_ha_pacemaker_cluster_aws_credentials_setup: false
-
-## Google Cloud platform, Compute Engine Virtual Machines
-# sap_ha_pacemaker_cluster_gcp_project
-# sap_ha_pacemaker_cluster_gcp_region_zone
-
-## IBM Cloud platform, Virtual Servers (x86_64)
-# sap_ha_pacemaker_cluster_ibmcloud_api_key
-# sap_ha_pacemaker_cluster_ibmcloud_region
-
-## IBM Cloud platform, IBM Power Virtual Servers (ppc64le)
-# sap_ha_pacemaker_cluster_ibmcloud_api_key
-# sap_ha_pacemaker_cluster_ibmcloud_region
-# sap_ha_pacemaker_cluster_ibmcloud_powervs_workspace_crn
-# sap_ha_pacemaker_cluster_ibmcloud_powervs_api_type
-# sap_ha_pacemaker_cluster_ibmcloud_powervs_forward_proxy_url
-
-## IBM PowerVM hypervisor, Virtual Machines (LPAR, ppc64le)
-# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host
-# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host_port # default, SSH Port 22
-# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host_login
-# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host_login_password
-# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host_version
-
-## MS Azure platform, Virtual Machines
-# sap_ha_pacemaker_cluster_msazure_subscription_id
-# sap_ha_pacemaker_cluster_msazure_resource_group
+# SPDX-License-Identifier: Apache-2.0
+---
+# TEMP to fix CFLF
+################################################################################
+# Role generic parameters
+################################################################################
+
+# Do NOT USE ANSIBLE FACTS for defaults to be compatible with
+# playbooks that disable generic fact gathering!
+
+# Set which Ansible Collection to use for the Linux System Roles.
+# For community/upstream, use 'fedora.linux_system_roles'
+# For the RHEL System Roles for SAP, or for Red Hat Automation Hub, use 'redhat.rhel_system_roles'
+sap_ha_pacemaker_cluster_system_roles_collection: 'fedora.linux_system_roles'
+
+# Variables for the cluster setup must be constructed by dedicated tasks!
+# The included 'ha_cluster' role will not work with the role variables set
+# in this role. This SAP HA role takes care of the parameter construction
+# based on the target cluster to be configured, before feeding it into 'ha_cluster'.
+
+
+# Optional: write all cluster configuration (including unencrypted credentials!) into a yaml
+# config file.
+# Useful for parameter review or reuse with the 'ha_cluster' LSR.
+sap_ha_pacemaker_cluster_create_config_varfile: false
+sap_ha_pacemaker_cluster_create_config_dest: "review_resource_config.yml"
+
+# Inherit SAP common (global synonyms) parameters when defined.
+
+# This variable is currently only required for HANA nodes to define
+# - hana_site:
+# Other options are needed in the separate HSR setup role.
+sap_ha_pacemaker_cluster_cluster_nodes: "{{ sap_hana_cluster_nodes | d([]) }}"
+
+# Resource defaults are defined differently by cluster type in different tasks, if not custom defined.
+sap_ha_pacemaker_cluster_resource_defaults: {}
+sap_ha_pacemaker_cluster_operation_defaults: {}
+
+# The type of SAP landscape and multi-node replication
+# TODO: Type definitions and feature support
+# TODO: Implement all types
+# hana_scaleup_costopt (not yet)
+# hana_scaleup_perf (available, default)
+# hana_scaleup_per_dr (not yet)
+# hana_scaleout (not yet)
+# nwas_abap_ascs_ers (available)
+# nwas_abap_pas_aas (not yet)
+# nwas_java_scs_ers (available)
+# sap_webdisp (beta)
+# sap_webdisp (beta)
+
+# 'sap_ha_pacemaker_cluster_host_type' is converted from string to list type in
+# 'tasks/ascertain_sap_landscape.yml'.
+sap_ha_pacemaker_cluster_host_type: "{{ sap_host_type | d(['hana_scaleup_perf']) }}"
+
+### VIP resource default patterns
+sap_ha_pacemaker_cluster_vip_client_interface: ''
+
+## A custom stonith definition that takes precedence over platform defaults.
+# sap_ha_pacemaker_cluster_stonith_custom:
+# - name: ""
+# agent: "stonith:"
+# options:
+# pcmk_host_list: ""
+
+# sap_ha_pacemaker_cluster_stonith_custom: []
+
+# Simpler definition format here which gets transformed into the 'ha_cluster' LSR native
+# 'ha_cluster_cluster_properties' parameter.
+sap_ha_pacemaker_cluster_cluster_properties:
+ stonith-enabled: true
+ stonith-timeout: 900
+ concurrent-fencing: true
+
+### Constraints:
+# score is dynamic and automatically increased for groups
+sap_ha_pacemaker_cluster_constraint_colo_base_score: 2000
+
+################################################################################
+# Inherit from 'ha_cluster' Linux System Role parameters when defined
+################################################################################
+
+# Optional without a default. The 'ha_cluster' LSR defaults will apply when not defined.
+# sap_ha_pacemaker_cluster_ha_cluster:
+# sap_ha_pacemaker_cluster_cluster_name:
+
+# Optional. Set a default here and not in the code.
+sap_ha_pacemaker_cluster_extra_packages: []
+
+# Optional: additional fence agent packages. This is combined with the above "minimal" list.
+sap_ha_pacemaker_cluster_fence_agent_packages: []
+
+# Mandatory.
+# Either inherit from the 'ha_cluster' LSR variable when defined, but do not set a default.
+# This fails the argument validation when none of the 2 vars are defined.
+sap_ha_pacemaker_cluster_hacluster_user_password: "{{ ha_cluster_hacluster_password }}"
+
+
+################################################################################
+# HANA
+################################################################################
+
+sap_ha_pacemaker_cluster_hana_sid: '' # Mandatory System ID in capital letters
+sap_ha_pacemaker_cluster_hana_instance_nr: '' # Mandatory instance number in string format
+
+# Optional parameters to customize SAPHana resources
+# AUTOMATED_REGISTER
+sap_ha_pacemaker_cluster_hana_automated_register: true
+# DUPLICATE_PRIMARY_TIMEOUT
+sap_ha_pacemaker_cluster_hana_duplicate_primary_timeout: 7200
+# PREFER_SITE_TAKEOVER
+sap_ha_pacemaker_cluster_hana_prefer_site_takeover: true
+
+# SAP HANA - Resource IDs (names) as convenience parameters.
+sap_ha_pacemaker_cluster_hana_resource_name: '' # Default: rsc_SAPHana__HDB
+sap_ha_pacemaker_cluster_hana_resource_clone_name: '' # Default: cln_SAPHana__HDB
+sap_ha_pacemaker_cluster_hana_resource_clone_msl_name: '' # Default: msl_SAPHana__HDB
+sap_ha_pacemaker_cluster_hanacontroller_resource_name: '' # Default: rsc_SAPHanaCon__HDB
+sap_ha_pacemaker_cluster_hanacontroller_resource_clone_name: '' # Default: _SAPHanaCon__HDB
+sap_ha_pacemaker_cluster_hana_topology_resource_name: '' # Default: rsc_SAPHanaTop__HDB
+sap_ha_pacemaker_cluster_hana_topology_resource_clone_name: '' # Default: cln_SAPHanaTop__HDB
+sap_ha_pacemaker_cluster_hana_filesystem_resource_name: '' # Default: rsc_SAPHanaFil__HDB
+sap_ha_pacemaker_cluster_hana_filesystem_resource_clone_name: '' # Default: cln_SAPHanaFil__HDB
+
+# SAP HANA - Constraint names
+sap_ha_pacemaker_cluster_hana_order_topology_hana_name: '' # Default: ord_saphana_saphanatop__HDB
+sap_ha_pacemaker_cluster_hana_colocation_hana_vip_primary_name: '' # Default: col_saphana_vip__HDB_primary
+sap_ha_pacemaker_cluster_hana_colocation_hana_vip_secondary_name: '' # Default: col_saphana_vip__HDB_readonly
+sap_ha_pacemaker_cluster_hana_order_hana_vip_primary_name: '' # Default: ord_saphana_vip__HDB_primary
+sap_ha_pacemaker_cluster_hana_order_hana_vip_secondary_name: '' # Default: ord_saphana_vip__HDB_readonly
+
+# Multiple VIP parameters can be defined and will be combined.
+# See tasks/include_construct_vip_resources.yml
+#
+# Mandatory: primary VIP address definition in HANA scale-up clusters
+sap_ha_pacemaker_cluster_vip_hana_primary_ip_address: ''
+sap_ha_pacemaker_cluster_vip_hana_primary_resource_name: '' # Default: rsc_vip__HDB_primary
+sap_ha_pacemaker_cluster_healthcheck_hana_primary_resource_name: '' # Default: rsc_vip_health_check__HDB_primary
+
+sap_ha_pacemaker_cluster_vip_hana_secondary_ip_address: ''
+sap_ha_pacemaker_cluster_vip_hana_secondary_resource_name: '' # Default: rsc_vip__HDB_readonly
+sap_ha_pacemaker_cluster_healthcheck_hana_secondary_resource_name: '' # Default: rsc_vip_health_check__HDB_readonly
+
+sap_ha_pacemaker_cluster_healthcheck_hana_primary_id: '' # Default: prim
+sap_ha_pacemaker_cluster_healthcheck_hana_secondary_id: '' # Default: ro
+
+# Optional dictionary with custom list of HANA Hooks for replication
+sap_ha_pacemaker_cluster_hana_hooks: []
+# Parameters enable additional srHooks for TkOver and ChkSrv.
+# They are ignored if sap_ha_pacemaker_cluster_hana_hooks is used.
+sap_ha_pacemaker_cluster_hana_hook_tkover: false
+sap_ha_pacemaker_cluster_hana_hook_chksrv: false
+
+# SAP Hana global.ini path calculated from SID
+sap_ha_pacemaker_cluster_hana_global_ini_path: '' # Default: /usr/sap//SYS/global/hdb/custom/config/global.ini
+
+# Disable auto-detection of SAPHanaSR-angi package and use Classic
+sap_ha_pacemaker_cluster_saphanasr_angi_detection: true
+
+################################################################################
+# NetWeaver generic definitions
+################################################################################
+
+# Default will be ENSA2. To configure HA resources for ENSA1,
+# set this parameter to 'true'.
+sap_ha_pacemaker_cluster_nwas_cs_ensa1: false
+
+# Enable ENSA2 simple mount configuration
+sap_ha_pacemaker_cluster_nwas_cs_ers_simple_mount: true
+
+# Enable/Disable sap_cluster_connector.
+# Ref.: https://access.redhat.com/solutions/3606101
+sap_ha_pacemaker_cluster_enable_cluster_connector: true
+
+# SAP Netweaver instance details
+sap_ha_pacemaker_cluster_nwas_sid: '' # Mandatory System ID in capital letters for Netweaver scenarios
+sap_ha_pacemaker_cluster_nwas_ascs_instance_nr: '' # Mandatory instance number for ASCS/ERS
+sap_ha_pacemaker_cluster_nwas_scs_instance_nr: '' # Mandatory instance number for SCS/ERS
+sap_ha_pacemaker_cluster_nwas_ers_instance_nr: '' # Mandatory instance number for ASCS/ERS and SCS/ERS
+# TODO: Differentiate between ABAP and JAVA (Dxx vs Jxx) once supported
+sap_ha_pacemaker_cluster_nwas_abap_pas_instance_nr: '' # Mandatory instance number for PAS/AAS
+sap_ha_pacemaker_cluster_nwas_abap_aas_instance_nr: '' # Mandatory instance number for PAS/AAS
+
+
+# Definitions for filesystems resources. Currently limited to NFS filesystems.
+sap_ha_pacemaker_cluster_storage_definition: "{{ sap_storage_setup_definition | d([]) }}"
+sap_ha_pacemaker_cluster_storage_nfs_filesystem_type: nfs
+sap_ha_pacemaker_cluster_storage_nfs_mount_options: 'defaults'
+sap_ha_pacemaker_cluster_storage_nfs_server: "{{ sap_storage_nfs_server | d('') }}"
+
+# NFS filesystem resource requirement
+# Not adding to argument_specs because this should not be changed anyway.
+# TODO: review later and move to internal vars in vars/main.yml?
+sap_ha_pacemaker_cluster_resource_filesystem_force_unmount: safe
+
+
+# Multiple VIP parameters can be defined and will be combined.
+# See tasks/include_construct_vip_resources.yml
+sap_ha_pacemaker_cluster_vip_nwas_ascs_ip_address: ''
+sap_ha_pacemaker_cluster_vip_nwas_ascs_resource_name: '' # Default rsc_vip__ASCS
+sap_ha_pacemaker_cluster_healthcheck_nwas_ascs_resource_name: '' # Default: rsc_vip_health_check__ASCS
+
+sap_ha_pacemaker_cluster_vip_nwas_scs_ip_address: ''
+sap_ha_pacemaker_cluster_vip_nwas_scs_resource_name: '' # Default: rsc_vip__SCS
+sap_ha_pacemaker_cluster_healthcheck_nwas_scs_resource_name: '' # Default: rsc_vip_health_check__SCS
+
+sap_ha_pacemaker_cluster_vip_nwas_ers_ip_address: ''
+sap_ha_pacemaker_cluster_vip_nwas_ers_resource_name: '' # Default: rsc_vip__ERS
+sap_ha_pacemaker_cluster_healthcheck_nwas_ers_resource_name: '' # Default: rsc_vip_health_check__ERS
+
+sap_ha_pacemaker_cluster_vip_nwas_abap_pas_ip_address: ''
+sap_ha_pacemaker_cluster_vip_nwas_abap_pas_resource_name: '' # Default: rsc_vip__PAS
+sap_ha_pacemaker_cluster_healthcheck_nwas_abap_pas_resource_name: '' # Default: rsc_vip_health_check__PAS
+
+sap_ha_pacemaker_cluster_vip_nwas_abap_aas_ip_address: ''
+sap_ha_pacemaker_cluster_vip_nwas_abap_aas_resource_name: '' # Default: rsc_vip__AAS
+sap_ha_pacemaker_cluster_healthcheck_nwas_abap_aas_resource_name: '' # Default: rsc_vip_health_check__AAS
+
+sap_ha_pacemaker_cluster_healthcheck_nwas_ascs_id: ''
+sap_ha_pacemaker_cluster_healthcheck_nwas_scs_id: ''
+sap_ha_pacemaker_cluster_healthcheck_nwas_ers_id: ''
+sap_ha_pacemaker_cluster_healthcheck_nwas_pas_id: ''
+sap_ha_pacemaker_cluster_healthcheck_nwas_aas_id: ''
+
+# SAP NetWeaver common - Resource IDs (names) as convenience parameters
+# for the following filesystems:
+# - /sapmnt
+# - /usr/sap/trans
+# - /usr/sap/<>/SYS
+sap_ha_pacemaker_cluster_nwas_sapmnt_filesystem_resource_name: '' # Default: rsc_fs__sapmnt
+sap_ha_pacemaker_cluster_nwas_sapmnt_filesystem_resource_clone_name: '' # Default: cln_fs__sapmnt
+
+sap_ha_pacemaker_cluster_nwas_transports_filesystem_resource_name: '' # Default: rsc_fs__trans
+sap_ha_pacemaker_cluster_nwas_transports_filesystem_resource_clone_name: '' # Default: cln_fs__trans
+
+sap_ha_pacemaker_cluster_nwas_sys_filesystem_resource_name: '' # Default: rsc_fs__sys
+sap_ha_pacemaker_cluster_nwas_sys_filesystem_resource_clone_name: '' # Default: cln_fs__sys
+
+# The shared filesystems are not required to be configured in the cluster.
+# By default it is assumed that they are mounted by the system and available on all cluster nodes.
+# Set this parameter to "true" to configure the 3 shared filesystems as part of the cluster.
+sap_ha_pacemaker_cluster_nwas_shared_filesystems_cluster_managed: false
+
+
+################################################################################
+# ASCS and SCS shared resource defaults
+################################################################################
+
+# TODO: Remove backwards compatibility to nwas_abap_ascs
+sap_ha_pacemaker_cluster_nwas_cs_sapinstance_automatic_recover_bool:
+ "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_sapinstance_automatic_recover_bool | d(false) }}"
+sap_ha_pacemaker_cluster_nwas_cs_sapinstance_resource_stickiness:
+ "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_sapinstance_resource_stickiness | d(5000) }}"
+sap_ha_pacemaker_cluster_nwas_cs_sapinstance_ensa1_migration_threshold:
+ "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_sapinstance_ensa1_migration_threshold | d(1) }}"
+sap_ha_pacemaker_cluster_nwas_cs_sapinstance_ensa1_failure_timeout:
+ "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_sapinstance_ensa1_failure_timeout | d(60) }}"
+sap_ha_pacemaker_cluster_nwas_cs_group_stickiness:
+ "{{ sap_ha_pacemaker_cluster_nwas_abap_ascs_group_stickiness | d(3000) }}"
+
+
+################################################################################
+# ASCS resource defaults
+################################################################################
+
+sap_ha_pacemaker_cluster_nwas_ascs_sapinstance_instance_name: '' # Mandatory name of instance profile
+sap_ha_pacemaker_cluster_nwas_ascs_sapinstance_start_profile_string: '' # Full path of instance profile
+
+sap_ha_pacemaker_cluster_nwas_ascs_filesystem_resource_name: '' # Default: rsc_fs__ASCS
+sap_ha_pacemaker_cluster_nwas_ascs_sapinstance_resource_name: '' # Default: rsc_SAPInstance__ASCS
+sap_ha_pacemaker_cluster_nwas_ascs_sapstartsrv_resource_name: '' # Default: rsc_SAPStartSrv__ASCS
+
+sap_ha_pacemaker_cluster_vip_nwas_ascs_resource_group_name: '' # Default: grp__ASCS
+
+sap_ha_pacemaker_cluster_nwas_colocation_ascs_no_ers_name: '' # Default: col_ascs_separate_
+sap_ha_pacemaker_cluster_nwas_order_ascs_first_name: '' # Default: ord_ascs_first_
+
+
+################################################################################
+# SCS resource defaults
+################################################################################
+
+sap_ha_pacemaker_cluster_nwas_scs_sapinstance_instance_name: '' # Mandatory name of instance profile
+sap_ha_pacemaker_cluster_nwas_scs_sapinstance_start_profile_string: '' # Full path of instance profile
+
+sap_ha_pacemaker_cluster_nwas_scs_filesystem_resource_name: '' # Default: rsc_fs__SCS
+sap_ha_pacemaker_cluster_nwas_scs_sapinstance_resource_name: '' # Default: rsc_SAPInstance__SCS
+sap_ha_pacemaker_cluster_nwas_scs_sapstartsrv_resource_name: '' # Default: rsc_SAPStartSrv__SCS
+
+sap_ha_pacemaker_cluster_vip_nwas_scs_resource_group_name: '' # Default: grp__SCS
+
+sap_ha_pacemaker_cluster_nwas_colocation_scs_no_ers_name: '' # Default: col_ascs_separate_
+sap_ha_pacemaker_cluster_nwas_order_scs_first_name: '' # Default: ord_ascs_first_
+
+
+################################################################################
+# ERS resource defaults
+################################################################################
+
+sap_ha_pacemaker_cluster_nwas_ers_sapinstance_instance_name: '' # Mandatory name of instance profile
+sap_ha_pacemaker_cluster_nwas_ers_sapinstance_start_profile_string: '' # Full path of instance profile
+
+sap_ha_pacemaker_cluster_nwas_ers_filesystem_resource_name: '' # Default: rsc_fs__ERS
+sap_ha_pacemaker_cluster_nwas_ers_sapinstance_resource_name: '' # Default: rsc_SAPInstance__ERS
+sap_ha_pacemaker_cluster_nwas_ers_sapstartsrv_resource_name: '' # Default: rsc_SAPStartSrv__ERS
+sap_ha_pacemaker_cluster_vip_nwas_ers_resource_group_name: '' # Default: grp__ERS
+
+sap_ha_pacemaker_cluster_nwas_ers_sapinstance_automatic_recover_bool: false
+
+################################################################################
+# PAS/AAS resource defaults
+################################################################################
+# sap_ha_pacemaker_cluster_nwas_abap_pas_filesystem_resource_name: ''
+# sap_ha_pacemaker_cluster_nwas_abap_pas_sapinstance_resource_name: ''
+# sap_ha_pacemaker_cluster_nwas_abap_aas_filesystem_resource_name: ''
+# sap_ha_pacemaker_cluster_nwas_abap_aas_sapinstance_resource_name: ''
+
+################################################################################
+# Web Dispatcher resource defaults
+################################################################################
+
+#TODO - check if these need to be moved to include_vars_webdisp.yml and converted to __*
+
+sap_ha_pacemaker_cluster_wdp_sid: "{{ sap_swpm_wdp_sid | d('') }}"
+sap_ha_pacemaker_cluster_wdp_instance_nr: "{{ sap_swpm_wdp_instance_nr | d('') }}"
+
+sap_ha_pacemaker_cluster_vip_wdp_ip_address: ''
+sap_ha_pacemaker_cluster_vip_wdp_resource_name: >-
+ rsc_vip_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+sap_ha_pacemaker_cluster_healthcheck_wdp_resource_name: >-
+ rsc_vip_health_check_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+
+# Name of the instance profile - mandatory to be user-defined
+sap_ha_pacemaker_cluster_wdp_sapinstance_instance_name: ''
+# Full path with instance profile name - mandatory to be user-defined
+sap_ha_pacemaker_cluster_wdp_sapinstance_start_profile_string: ''
+
+sap_ha_pacemaker_cluster_wdp_filesystem_resource_name: >-
+ rsc_fs_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+sap_ha_pacemaker_cluster_wdp_sapinstance_resource_name: >-
+ rsc_SAPInstance_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+sap_ha_pacemaker_cluster_wdp_sapstartsrv_resource_name: >-
+ rsc_SAPStartSrv_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+
+sap_ha_pacemaker_cluster_vip_wdp_resource_group_name: >-
+ grp_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+
+# Currently unused
+# sap_ha_pacemaker_cluster_wdp_order_wdp_last_name: >-
+# ord_wdp_last_{{ sap_ha_pacemaker_cluster_wdp_sid }}
+
+sap_ha_pacemaker_cluster_wdp_sapinstance_automatic_recover_bool: false
+sap_ha_pacemaker_cluster_wdp_sapinstance_resource_stickiness: 5000
+
+# Stickiness of the WebDisp group
+sap_ha_pacemaker_cluster_wdp_group_stickiness: 3000
+
+# Clustered filesystem for Web Dispatcher
+sap_ha_pacemaker_cluster_wdp_filesystem_host_mount_path: ''
+sap_ha_pacemaker_cluster_wdp_filesystem_local_mount_path: "/usr/sap/{{ sap_ha_pacemaker_cluster_wdp_sid }}/W{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}"
+sap_ha_pacemaker_cluster_wdp_filesystem_fstype: "{{ sap_ha_pacemaker_cluster_storage_nfs_filesytem_type }}"
+sap_ha_pacemaker_cluster_wdp_filesystem_options_string: "{{ sap_ha_pacemaker_cluster_storage_nfs_mount_options }}"
+sap_ha_pacemaker_cluster_wdp_filesystem_force_unmount: "{{ sap_ha_pacemaker_cluster_resource_filesystem_force_unmount }}"
+
+sap_ha_pacemaker_cluster_healthcheck_wdp_id: "{{ sap_ha_pacemaker_cluster_wdp_sid + 'wdp' }}"
+################################################################################
+# Web Dispatcher resource defaults
+################################################################################
+
+#TODO - check if these need to be moved to include_vars_webdisp.yml and converted to __*
+
+sap_ha_pacemaker_cluster_wdp_sid: "{{ sap_swpm_wdp_sid | d('') }}"
+sap_ha_pacemaker_cluster_wdp_instance_nr: "{{ sap_swpm_wdp_instance_nr | d('') }}"
+
+sap_ha_pacemaker_cluster_vip_wdp_ip_address: ''
+sap_ha_pacemaker_cluster_vip_wdp_resource_name: >-
+ rsc_vip_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+sap_ha_pacemaker_cluster_healthcheck_wdp_resource_name: >-
+ rsc_vip_health_check_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+
+# Name of the instance profile - mandatory to be user-defined
+sap_ha_pacemaker_cluster_wdp_sapinstance_instance_name: ''
+# Full path with instance profile name - mandatory to be user-defined
+sap_ha_pacemaker_cluster_wdp_sapinstance_start_profile_string: ''
+
+sap_ha_pacemaker_cluster_wdp_filesystem_resource_name: >-
+ rsc_fs_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+sap_ha_pacemaker_cluster_wdp_sapinstance_resource_name: >-
+ rsc_SAPInstance_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+sap_ha_pacemaker_cluster_wdp_sapstartsrv_resource_name: >-
+ rsc_SAPStartSrv_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+
+sap_ha_pacemaker_cluster_vip_wdp_resource_group_name: >-
+ grp_{{ sap_ha_pacemaker_cluster_wdp_sid }}_WDP{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}
+
+# Currently unused
+# sap_ha_pacemaker_cluster_wdp_order_wdp_last_name: >-
+# ord_wdp_last_{{ sap_ha_pacemaker_cluster_wdp_sid }}
+
+sap_ha_pacemaker_cluster_wdp_sapinstance_automatic_recover_bool: false
+sap_ha_pacemaker_cluster_wdp_sapinstance_resource_stickiness: 5000
+
+# Stickiness of the WebDisp group
+sap_ha_pacemaker_cluster_wdp_group_stickiness: 3000
+
+# Clustered filesystem for Web Dispatcher
+sap_ha_pacemaker_cluster_wdp_filesystem_host_mount_path: ''
+sap_ha_pacemaker_cluster_wdp_filesystem_local_mount_path: "/usr/sap/{{ sap_ha_pacemaker_cluster_wdp_sid }}/W{{ sap_ha_pacemaker_cluster_wdp_instance_nr }}"
+sap_ha_pacemaker_cluster_wdp_filesystem_fstype: "{{ sap_ha_pacemaker_cluster_storage_nfs_filesytem_type }}"
+sap_ha_pacemaker_cluster_wdp_filesystem_options_string: "{{ sap_ha_pacemaker_cluster_storage_nfs_mount_options }}"
+sap_ha_pacemaker_cluster_wdp_filesystem_force_unmount: "{{ sap_ha_pacemaker_cluster_resource_filesystem_force_unmount }}"
+
+sap_ha_pacemaker_cluster_healthcheck_wdp_id: "{{ sap_ha_pacemaker_cluster_wdp_sid + 'wdp' }}"
+
+################################################################################
+# Platform specific
+################################################################################
+
+## Infrastructure Platform variables, shown here for visibility only and should not be given default values
+
+## AWS platform, EC2 Virtual Servers
+# sap_ha_pacemaker_cluster_aws_vip_update_rt
+# sap_ha_pacemaker_cluster_aws_access_key_id
+# sap_ha_pacemaker_cluster_aws_secret_access_key
+# sap_ha_pacemaker_cluster_aws_region
+# sap_ha_pacemaker_cluster_aws_credentials_setup: false
+
+## Google Cloud platform, Compute Engine Virtual Machines
+# sap_ha_pacemaker_cluster_gcp_project
+# sap_ha_pacemaker_cluster_gcp_region_zone
+
+## IBM Cloud platform, Virtual Servers (x86_64)
+# sap_ha_pacemaker_cluster_ibmcloud_api_key
+# sap_ha_pacemaker_cluster_ibmcloud_region
+
+## IBM Cloud platform, IBM Power Virtual Servers (ppc64le)
+# sap_ha_pacemaker_cluster_ibmcloud_api_key
+# sap_ha_pacemaker_cluster_ibmcloud_region
+# sap_ha_pacemaker_cluster_ibmcloud_powervs_workspace_crn
+# sap_ha_pacemaker_cluster_ibmcloud_powervs_api_type
+# sap_ha_pacemaker_cluster_ibmcloud_powervs_forward_proxy_url
+
+## IBM PowerVM hypervisor, Virtual Machines (LPAR, ppc64le)
+# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host
+# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host_port # default, SSH Port 22
+# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host_login
+# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host_login_password
+# sap_ha_pacemaker_cluster_ibmpower_vm_hmc_host_version
+
+## MS Azure platform, Virtual Machines
+# sap_ha_pacemaker_cluster_msazure_subscription_id
+# sap_ha_pacemaker_cluster_msazure_resource_group
diff --git a/roles/sap_ha_pacemaker_cluster/meta/argument_specs.yml b/roles/sap_ha_pacemaker_cluster/meta/argument_specs.yml
index 7a7e2846..1365314c 100644
--- a/roles/sap_ha_pacemaker_cluster/meta/argument_specs.yml
+++ b/roles/sap_ha_pacemaker_cluster/meta/argument_specs.yml
@@ -1,1077 +1,1159 @@
-# SPDX-License-Identifier: Apache-2.0
----
-# Requires: ansible 2.11
-# Argument specifications in this separate file maintain backwards compatibility.
-argument_specs:
-
-# TODO: make 'ha_cluster' role variables the primary names
-# For required variables using aliases do not work and fail the argument validation.
-
- main:
- short_description: SAP HA automated cluster setup requirements
- options:
-
-# Take this template and copy it to the desired place.
-# Add content and remove placeholders that are not needed.
-# Ideally sort by key (variable name) alphabetically.
-#
-# sap_ha_pacemaker_cluster_
-# default:
-# description:
-# -
-# example:
-#
-# required: false
-# type:
-# options: # additional options for lists and dicts
-# :
-# description:
-# ...
-
- #########################################################################
- # SAP HA role generic parameters
- #########################################################################
- sap_ha_pacemaker_cluster_system_roles_collection:
- default: fedora.linux_system_roles
- description:
- - Reference to the Ansible Collection used for the Linux System Roles.
- - For community/upstream, use 'fedora.linux_system_roles'.
- - For RHEL System Roles for SAP, or Red Hat Automation Hub, use 'redhat.rhel_system_roles'.
-
- sap_ha_pacemaker_cluster_create_config_dest:
- default: review_resource_config.yml
- description:
- - The pacemaker cluster resource configuration optionally created by this role will be
- saved in a Yaml file in the current working directory.
- - Requires `sap_ha_pacemaker_cluster_create_config_varfile` to be enabled for generating
- the output file.
- - Specify a path/filename to save the file in a custom location.
- - The file can be used as input vars file for an Ansible playbook running the 'ha_cluster'
- Linux System Role.
-
- sap_ha_pacemaker_cluster_create_config_varfile:
- type: bool
- default: false
- description:
- - When enabled, all cluster configuration parameters this role constructs for executing
- the 'ha_cluster' Linux System role will be written into a file in Yaml format.
- - This allows using the output file later as input file for additional custom steps using
- the 'ha_cluster' role and covering the resource configuration in a cluster that was set
- up using this 'sap_ha_pacemaker_cluster' role.
- - When enabled this parameters file is also created when the playbook is run in check_mode
- (`--check`) and can be used to review the configuration parameters without executing
- actual changes on the target nodes.
- - WARNING! This report may include sensitive details like secrets required for certain
- cluster resources!
-
- sap_ha_pacemaker_cluster_cluster_nodes:
- type: list
- description:
- - List of cluster nodes and associated attributes to describe the target SAP HA environment.
- - This is required for the HANA System Replication configuration.
- - Synonym for this parameter is `sap_hana_cluster_nodes`.
- - Mandatory to be defined for HANA clusters.
- elements: dict
- options:
- node_ip:
- description:
- - IP address of the node used for HANA System Replication.
- - _Optional. Currently not needed/used in cluster configuration._
- node_name:
- description:
- - Hostname of the cluster node.
- - _Optional. Currently not needed/used in cluster configuration._
- node_role:
- choices:
- - primary
- - secondary
- description:
- - Role of the defined `node_name` in the SAP HANA cluster setup.
- - There must be only **one** primary, but there can be multiple secondary nodes.
- - _Optional. Currently not needed/used in cluster configuration._
- hana_site:
- description:
- - Site of the cluster and/or SAP HANA System Replication node (for example 'DC01').
- - Mandatory for HANA clusters (sudo config for system replication).
-
- example:
- sap_ha_pacemaker_cluster_cluster_nodes:
- - hana_site: DC01
- node_name: nodeA
- node_role: primary
- node_ip: 192.168.5.1
- - hana_site: DC02
-
- sap_ha_pacemaker_cluster_resource_defaults:
- type: dict
- default:
- resource-stickiness: 3000
- migration-threshold: 5000
- description:
- - Set default parameters that will be valid for all pacemaker resources.
- example:
- sap_ha_pacemaker_cluster_resource_defaults:
- resource-stickiness: 1000
- migration-threshold: 5000
-
- sap_ha_pacemaker_cluster_operation_defaults:
- type: dict
- default:
- timeout: 600
- record-pending: true
- description:
- - Set default operation parameters that will be valid for all pacemaker resources.
- example:
- sap_ha_pacemaker_cluster_operation_defaults:
- timeout: 600
- record-pending: true
-
- sap_ha_pacemaker_cluster_host_type:
- type: list
- choices:
-# - hana_scaleup_costopt
- - hana_scaleup_perf
-# - hana_scaleup_perf_dr
-# - hana_scaleout
- - nwas_abap_ascs_ers
-# - nwas_abap_pas_aas
- - nwas_java_scs_ers
- default: hana_scaleup_perf
- description:
- - The SAP landscape to for which the cluster is to be configured.
- - The default is a 2-node SAP HANA scale-up cluster.
-
-# sap_ha_pacemaker_cluster_replication_type:
-# choices:
-# - mtr
-# - none
-# default: none
-# description:
-# - The type of SAP HANA site replication across multiple hosts.
-# - _Not yet supported_
-
- sap_ha_pacemaker_cluster_vip_client_interface:
- description:
- - OS device name of the network interface to use for the Virtual IP configuration.
- - When there is only one interface on the system, its name will be used by default.
-
- sap_ha_pacemaker_cluster_stonith_custom:
- type: list
- description:
- - Custom list of STONITH resource(s) to be configured in the cluster.
- - This definition override any defaults the role would apply otherwise.
- - Definition follows structure of ha_cluster_resource_primitives in linux-system-roles/ha_cluster
- elements: dict
- options:
- id:
- type: str
- description:
- - Parameter `id` is required.
- - Name that will be used as the resource ID (name).
- # TODO: Enable to remove Tech debt after name and options are removed!
- # required: true
- agent:
- type: str
- description:
- - Resource agent name, must contain the prefix "stonith:" to avoid mismatches or failures.
- required: true
- instance_attrs:
- type: list
- description:
- - Defines resource agent params as list of name/value pairs.
- - Requires the mandatory options for the particular stonith resource agent to be
- defined, otherwise the setup will fail.
- - "Example: stonith:fence_sbd agent requires devices option with list of SBD disks."
- - "Example: stonith:external/sbd agent does not require devices option, but `sap_ha_pacemaker_cluster_sbd_devices`."
- operations:
- type: list
- description:
- - Defines list of resource agent operations.
- action:
- description:
- - Name of resource agent operation.
- attrs:
- description:
- - Defines operation parameters as list of name/value pairs.
- meta_attrs:
- type: list
- description:
- - Defines meta attributes as list of name/value pairs.
- # TODO: Tech Debt: Remove name and options in next release
- name:
- type: str
- description:
- - WARNING! This option will be removed in future release.
- # TODO: Tech Debt: Remove name and options in next release
- options:
- type: dict
- description:
- - WARNING! This option will be removed in future release.
-
- example:
- sap_ha_pacemaker_cluster_stonith_custom:
- - id: "my-fence-resource"
- agent: "stonith:fence_rhevm"
- instance_attrs:
- - attrs:
- - name: ip
- value: rhevm-server
- - name: username
- value: login-user
- - name: password
- value: login-user-password
- - name: pcmk_host_list
- value: node1,node2
- - name: power_wait
- value: 3
- meta_attrs:
- - attrs:
- - name: target-role
- value: Started
- operations:
- - action: start
- attrs:
- - name: interval
- value: 0
- - name: timeout
- value: 180
-
- sap_ha_pacemaker_cluster_sbd_enabled:
- type: bool
- description:
- - Set this parameter to 'true' to enable workflow to add Stonith SBD resource.
- - Stonith SBD resource has to be provided as part of `sap_ha_pacemaker_cluster_stonith_custom`.
- - "Default SBD agents are: stonith:external/sbd for SLES and stonith:fence_sbd for RHEL"
-
- example:
- sap_ha_pacemaker_cluster_sbd_enabled: true
- sap_ha_pacemaker_cluster_stonith_custom:
- - id: stonith_sbd
- agent: stonith:external/sbd
- instance_attrs:
- - attrs:
- - name: pcmk_delay_max
- value: 15
- sap_ha_pacemaker_cluster_sbd_devices:
- - /dev/disk/by-id/scsi-3600
-
- sap_ha_pacemaker_cluster_sbd_devices:
- type: list
- description:
- - Required if `sap_ha_pacemaker_cluster_sbd_enabled` is enabled.
- - Provide list of block devices for Stonith SBD agent
-
- example:
- sap_ha_pacemaker_cluster_sbd_devices:
- - /dev/disk/by-id/scsi-3600
-
- sap_ha_pacemaker_cluster_sbd_options:
- type: list
- description:
- - Optional if `sap_ha_pacemaker_cluster_sbd_enabled` is enabled.
- - Provide list of SBD specific options that are added into SBD configuration file.
-
- example:
- sap_ha_pacemaker_cluster_sbd_options:
- - name: startmode
- value: clean
-
- sap_ha_pacemaker_cluster_sbd_watchdog:
- type: str
- default: /dev/watchdog
- description:
- - Optional if `sap_ha_pacemaker_cluster_sbd_enabled` is enabled.
- - Provide watchdog name to override default /dev/watchdog
-
- sap_ha_pacemaker_cluster_sbd_watchdog_modules:
- type: list
- description:
- - Optional if `sap_ha_pacemaker_cluster_sbd_enabled` is enabled.
- - Provide list of watchdog kernel modules to be loaded (creates /dev/watchdog* devices).
-
- example:
- sap_ha_pacemaker_cluster_sbd_watchdog_modules:
- - softdog
-
- sap_ha_pacemaker_cluster_cluster_properties:
- type: dict
- default:
- stonith-enabled: true
- stonith-timeout: 900
- concurrent-fencing: true
- description:
- - Standard pacemaker cluster properties are configured with recommended settings for
- cluster node fencing.
- - When no STONITH resource is defined, STONITH will be disabled and a warning displayed.
-
- example:
- sap_ha_pacemaker_cluster_cluster_properties:
- stonith-enabled: true
- stonith-timeout: 900
- concurrent-fencing: true
-
-
- ##########################################################################
- # Parameters that are optionally imported from 'ha_cluster' LSR parameters
- ##########################################################################
-
- sap_ha_pacemaker_cluster_ha_cluster:
- type: dict
- description:
- - The `ha_cluster` LSR native parameter `ha_cluster` can be used as a synonym.
- - Optional _**host_vars**_ parameter - if defined it must be set for each node.
- - Dictionary that can contain various node options for the pacemaker cluster configuration.
- - Supported options can be reviewed in the `ha_cluster` Linux System Role
- [https://github.com/linux-system-roles/ha_cluster/blob/master/README.md].
- - If not defined, the `ha_cluster` Linux System Role default will be used.
-
- example:
- sap_ha_pacemaker_cluster_ha_cluster:
- corosync_addresses:
- - 192.168.1.10
- - 192.168.2.10
- node_name: nodeA
-
-
- sap_ha_pacemaker_cluster_cluster_name:
- description:
- - The name of the pacemaker cluster.
- - Inherits the `ha_cluster` LSR native parameter `ha_cluster_cluster_name` if not defined.
- - If not defined, the `ha_cluster` Linux System Role default will be used.
-
- sap_ha_pacemaker_cluster_extra_packages:
- type: list
- description:
- - Additional extra packages to be installed, for instance specific resource packages.
- - For SAP clusters configured by this role, the relevant standard packages for the target
- scenario are automatically included.
-
- sap_ha_pacemaker_cluster_fence_agent_packages:
- type: list
- description:
- - Additional fence agent packages to be installed.
- - "This is automatically combined with default packages in:"
- - "`__sap_ha_pacemaker_cluster_fence_agent_packages_minimal`"
- - "`__sap_ha_pacemaker_cluster_fence_agent_packages_platform`"
-
- sap_ha_pacemaker_cluster_hacluster_user_password:
- description:
- - The password of the `hacluster` user which is created during pacemaker installation.
- - Inherits the value of `ha_cluster_hacluster_password`, when defined.
- no_log: true
- required: true
-
-
- ##########################################################################
- # HANA specific parameters
- ##########################################################################
-
- sap_ha_pacemaker_cluster_hana_sid:
- description:
- - The SAP HANA System ID (SID) of the instance that will be configured in the cluster.
- - The SID must follow SAP specifications - see SAP Note 1979280.
- - Inherits the value of `sap_hana_sid`, when defined.
- - Mandatory for SAP HANA cluster scenarios.
-
- sap_ha_pacemaker_cluster_hana_instance_nr:
- description:
- - The instance number of the SAP HANA database which this role will configure in the cluster.
- - Inherits the value of `sap_hana_instance_number`, when defined.
- - Mandatory for SAP HANA cluster scenarios.
-
- sap_ha_pacemaker_cluster_hana_automated_register:
- type: bool
- default: true
- description:
- - Parameter for the 'SAPHana' cluster resource.
- - Define if a former primary should be re-registered automatically as secondary.
-
- sap_ha_pacemaker_cluster_hana_duplicate_primary_timeout:
- type: int
- default: 7200
- description:
- - Parameter for the 'SAPHana' cluster resource.
- - Time difference needed between to primary time stamps, if a dual-primary situation occurs.
- - If the time difference is less than the time gap, then the cluster holds one or both
- instances in a "WAITING" status.
- - This is to give an admin a chance to react on a failover. A failed former primary will
- be registered after the time difference is passed.
-
- sap_ha_pacemaker_cluster_hana_prefer_site_takeover:
- type: bool
- default: true
- description:
- - Parameter for the 'SAPHana' cluster resource.
- - Set to "false" if the cluster should first attempt to restart the instance on the same node.
- - When set to "true" (default) a failover to secondary will be initiated on resource failure.
-
- sap_ha_pacemaker_cluster_hana_resource_name:
- default: "rsc_SAPHana__HDB"
- description:
- - Customize the cluster resource name of the SAP HANA DB resource.
-
- sap_ha_pacemaker_cluster_hana_resource_clone_name:
- default: "cln_SAPHana__HDB"
- description:
- - Customize the cluster resource name of the SAP HANA DB resource clone.
-
- sap_ha_pacemaker_cluster_hana_resource_clone_msl_name:
- default: "msl_SAPHana__HDB"
- description:
- - Customize the cluster resource name of the SAP HANA DB resource master slave clone.
- - Master Slave clone is specific to Classic SAPHana resource on SUSE (non-angi).
-
- sap_ha_pacemaker_cluster_hanacontroller_resource_name:
- default: "rsc_SAPHanaCon__HDB"
- description:
- - Customize the cluster resource name of the SAP HANA Controller.
-
- sap_ha_pacemaker_cluster_hanacontroller_resource_clone_name:
- default: "_SAPHanaCon__HDB"
- description:
- - Customize the cluster resource name of the SAP HANA Controller clone.
-
- sap_ha_pacemaker_cluster_hana_topology_resource_name:
- default: "rsc_SAPHanaTop__HDB"
- description:
- - Customize the cluster resource name of the SAP HANA Topology resource.
-
- sap_ha_pacemaker_cluster_hana_topology_resource_clone_name:
- default: "cln_SAPHanaTop__HDB"
- description:
- - Customize the cluster resource name of the SAP HANA Topology resource clone.
-
- sap_ha_pacemaker_cluster_hana_filesystem_resource_name:
- default: "rsc_SAPHanaFil__HDB"
- description:
- - Customize the cluster resource name of the SAP HANA Filesystem.
-
- sap_ha_pacemaker_cluster_hana_filesystem_resource_clone_name:
- default: "cln_SAPHanaFil__HDB"
- description:
- - Customize the cluster resource name of the SAP HANA Filesystem clone.
-
- sap_ha_pacemaker_cluster_hana_order_topology_hana_name:
- default: "ord_saphana_saphanatop__HDB"
- description:
- - Customize the cluster constraint name for SAPHana and Topology order.
-
- sap_ha_pacemaker_cluster_vip_hana_primary_ip_address:
- description:
- - The virtual IP of the primary HANA instance.
- - Mandatory parameter for HANA clusters.
-
- sap_ha_pacemaker_cluster_vip_hana_primary_resource_name:
- default: "rsc_vip__HDB_primary"
- description:
- - Name of the Virtual IP resource for primary HANA instance.
-
- sap_ha_pacemaker_cluster_healthcheck_hana_primary_resource_name:
- default: "rsc_vip_health_check__HDB_primary"
- description:
- - Name of the Virtual IP Health Check resource for primary HANA instance.
-
- sap_ha_pacemaker_cluster_vip_hana_secondary_ip_address:
- description:
- - The virtual IP for read-only access to the secondary HANA instance.
- - Optional parameter in HANA clusters.
-
- sap_ha_pacemaker_cluster_vip_hana_secondary_resource_name:
- default: "rsc_vip__HDB_readonly"
- description:
- - Name of the Virtual IP resource for read-only HANA instance.
-
- sap_ha_pacemaker_cluster_healthcheck_hana_secondary_resource_name:
- default: "rsc_vip_health_check__HDB_readonly"
- description:
- - Name of the Virtual IP Health Check resource for read-only HANA instance.
-
- sap_ha_pacemaker_cluster_hana_order_hana_vip_primary_name:
- default: "ord_saphana_vip__HDB_primary"
- description:
- - Customize the cluster constraint name for VIP and SAPHana primary clone order.
-
- sap_ha_pacemaker_cluster_hana_order_hana_vip_secondary_name:
- default: "ord_saphana_vip__HDB_readonly"
- description:
- - Customize the cluster constraint name for VIP and SAPHana secondary clone order.
-
- sap_ha_pacemaker_cluster_hana_colocation_hana_vip_primary_name:
- default: "col_saphana_vip__HDB_primary"
- description:
- - Customize the cluster constraint name for VIP and SAPHana primary clone colocation.
-
- sap_ha_pacemaker_cluster_hana_colocation_hana_vip_secondary_name:
- default: "col_saphana_vip__HDB_readonly"
- description:
- - Customize the cluster constraint name for VIP and SAPHana secondary clone colocation.
-
- sap_ha_pacemaker_cluster_hana_hooks:
- type: list
- default: []
- description:
- - Customize required list of SAP HANA Hooks
- - Mandatory to include SAPHanaSR srHook in list.
- - Mandatory attributes are provider and path.
- - Example below shows mandatory SAPHanaSR, TkOver and ChkSrv hooks.
-
- example:
- sap_ha_pacemaker_cluster_hana_hooks:
- - provider: SAPHanaSR
- path: /usr/share/SAPHanaSR/
- options:
- - name: execution_order
- value: 1
- - provider: susTkOver
- path: /usr/share/SAPHanaSR/
- options:
- - name: execution_order
- value: 2
- - provider: susChkSrv
- path: /usr/share/SAPHanaSR/
- options:
- - name: execution_order
- value: 3
- - name: action_on_lost
- value: stop
-
- sap_ha_pacemaker_cluster_hana_hook_tkover:
- type: bool
- default: false
- description:
- - Controls if TkOver srHook is enabled during srHook creation.
- - It is ignored when sap_ha_pacemaker_cluster_hana_hooks is defined.
-
- sap_ha_pacemaker_cluster_hana_hook_chksrv:
- type: bool
- default: false
- description:
- - Controls if ChkSrv srHook is enabled during srHook creation.
- - It is ignored when sap_ha_pacemaker_cluster_hana_hooks is defined.
-
- sap_ha_pacemaker_cluster_hana_global_ini_path:
- default: "/usr/sap//SYS/global/hdb/custom/config/global.ini"
- description:
- - Path with location of global.ini for srHook update
-
- sap_ha_pacemaker_cluster_saphanasr_angi_detection:
- default: true
- description:
- - Disabling this variable enables to use Classic SAPHanaSR agents even on server,
- with SAPHanaSR-angi is available.
-
- ##########################################################################
- # NetWeaver specific parameters
- ##########################################################################
-
- sap_ha_pacemaker_cluster_nwas_cs_ers_simple_mount:
- type: bool
- default: true
- description:
- - Enables preferred method for Central Services (ASCS or SCS) ENSA2 clusters - Simple Mount.
- - Set this parameter to 'true' to configure ENSA2 Simple Mount.
-
- sap_ha_pacemaker_cluster_nwas_cs_ensa1:
- type: bool
- default: false
- description:
- - The standard NetWeaver Central Services cluster will be set up as ENSA2.
- - Set this parameter to 'true' to configure it as ENSA1.
-
- sap_ha_pacemaker_cluster_enable_cluster_connector:
- type: bool
- default: true
- description:
- - Enables/Disables the SAP HA Interface for SAP ABAP application server instances, also
- known as `sap_cluster_connector`.
- - Set this parameter to 'false' if the SAP HA interface should not be installed and configured.
-
- sap_ha_pacemaker_cluster_nwas_sid:
- description:
- - System ID (SID) of the NetWeaver instances in Capital letters.
- - Defaults to `sap_swpm_sid` if defined.
- - Mandatory for NetWeaver cluster scenarios.
-
- sap_ha_pacemaker_cluster_nwas_ascs_instance_nr:
- description:
- - Instance number of the NetWeaver ABAP Central Services (ASCS) instance.
- - Mandatory for NetWeaver ASCS/ERS cluster configuration.
-
- sap_ha_pacemaker_cluster_nwas_scs_instance_nr:
- description:
- - Instance number of the NetWeaver Central Services (SCS) instance.
- - Mandatory for NetWeaver SCS/ERS cluster configuration.
-
- sap_ha_pacemaker_cluster_nwas_ers_instance_nr:
- description:
- - Instance number of the NetWeaver Enqueue Replication Service (ERS) instance.
- - Mandatory for NetWeaver ASCS/ERS and SCS/ERS cluster configuration.
-
- sap_ha_pacemaker_cluster_nwas_abap_pas_instance_nr:
- description:
- - Instance number of the NetWeaver ABAP PAS instance.
- - Mandatory for NetWeaver PAS cluster configuration.
-
- sap_ha_pacemaker_cluster_nwas_abap_aas_instance_nr:
- description:
- - Instance number of the NetWeaver ABAP AAS instance.
- - Mandatory for NetWeaver AAS cluster configuration.
-
- sap_ha_pacemaker_cluster_storage_definition:
- type: list
- description:
- - List of filesystem definitions used for filesystem cluster resources.
- - Options relevant, see example.
- - Mandatory for SAP NetWeaver cluster without Simple Mount.
- - Reuse `sap_storage_setup_definition` if defined.
- - Reuse `sap_storage_setup_definition` will extract values 'mountpoint',
- 'nfs_filesystem_type', 'nfs_mount_options', 'nfs_path', 'nfs_server'.
- - Reuse `sap_storage_setup_definition` all options are documented under Ansible Role
- `sap_storage_setup`.
- - Note! For this variable, the argument specification does not list options, to avoid
- errors during reuse of `sap_storage_setup_definition` if defined.
- elements: dict
-
- example:
- sap_ha_pacemaker_cluster_storage_definition:
- - name: usr_sap
- mountpoint: /usr/sap
- nfs_path: /usr/sap
- nfs_server: "nfs-server.example.com:/"
- - name: usr_sap_trans
- mountpoint: /usr/sap/trans
- nfs_path: /usr/sap/trans
- nfs_server: "nfs-server.example.com:/"
- - name: sapmnt
- mountpoint: /sapmnt
- nfs_filesystem_type: nfs
- nfs_mount_options: defaults
- nfs_path: /sapmnt
- nfs_server: "nfs-server.example.com:/"
-
-
- sap_ha_pacemaker_cluster_storage_nfs_filesystem_type:
- default: nfs
- description:
- - Filesystem type of the NFS filesystems that are part of the cluster configuration.
-
- sap_ha_pacemaker_cluster_storage_nfs_mount_options:
- default: defaults
- description:
- - Mount options of the NFS filesystems that are part of the cluster configuration.
-
- sap_ha_pacemaker_cluster_storage_nfs_server:
- description:
- - Default address of the NFS server, if not defined individually by filesystem.
-
- sap_ha_pacemaker_cluster_vip_nwas_ascs_ip_address:
- description:
- - Virtual IP of the NetWeaver ABAP Central Services (ASCS) instance.
- - Mandatory for NetWeaver ASCS/ERS cluster setup.
-
- sap_ha_pacemaker_cluster_vip_nwas_ascs_resource_name:
- default: rsc_vip__ASCS
- description:
- - Name of the Virtual IP resource for NetWeaver ABAP Central Services (ASCS).
-
- sap_ha_pacemaker_cluster_healthcheck_nwas_ascs_resource_name:
- default: rsc_vip_health_check__ASCS
- description:
- - Name of the Virtual IP Health Check resource for NetWeaver ABAP Central Services (ASCS).
-
- sap_ha_pacemaker_cluster_vip_nwas_scs_ip_address:
- description:
- - Virtual IP of the NetWeaver Central Services (SCS) instance.
- - Mandatory for NetWeaver SCS/ERS cluster setup.
-
- sap_ha_pacemaker_cluster_vip_nwas_scs_resource_name:
- default: rsc_vip__SCS
- description:
- - Name of the Virtual IP resource for NetWeaver Central Services (SCS).
-
- sap_ha_pacemaker_cluster_healthcheck_nwas_scs_resource_name:
- default: rsc_vip_health_check__SCS
- description:
- - Name of the Virtual IP Health Check resource for NetWeaver Central Services (SCS).
-
- sap_ha_pacemaker_cluster_vip_nwas_ers_ip_address:
- description:
- - Virtual IP of the NetWeaver Enqueue Replication Service (ERS) instance.
- - Mandatory for NetWeaver ASCS/ERS and SCS/ERS cluster setup.
-
- sap_ha_pacemaker_cluster_vip_nwas_ers_resource_name:
- default: rsc_vip__ERS
- description:
- - Name of the Virtual IP resource for NetWeaver Enqueue Replication Service (ERS).
-
- sap_ha_pacemaker_cluster_healthcheck_nwas_ers_resource_name:
- default: rsc_vip_health_check__ERS
- description:
- - Name of the Virtual IP Health Check resource for NetWeaver Enqueue Replication Service (ERS).
-
- sap_ha_pacemaker_cluster_vip_nwas_abap_pas_ip_address:
- description:
- - Virtual IP of the NetWeaver PAS instance.
- - Mandatory for NetWeaver PAS cluster setup.
-
- sap_ha_pacemaker_cluster_vip_nwas_abap_pas_resource_name:
- default: rsc_vip__PAS
- description:
- - Name of the Virtual IP resource for NetWeaver PAS.
-
- sap_ha_pacemaker_cluster_healthcheck_nwas_abap_pas_resource_name:
- default: rsc_vip_health_check__PAS
- description:
- - Name of the Virtual IP Health Check resource for NetWeaver PAS.
-
- sap_ha_pacemaker_cluster_vip_nwas_abap_aas_ip_address:
- description:
- - Virtual IP of the NetWeaver AAS instance.
- - Mandatory for NetWeaver AAS cluster setup.
-
- sap_ha_pacemaker_cluster_vip_nwas_abap_aas_resource_name:
- default: rsc_vip__AAS
- description:
- - Name of the Virtual IP resource for NetWeaver AAS.
-
- sap_ha_pacemaker_cluster_healthcheck_nwas_abap_aas_resource_name:
- default: rsc_vip_health_check__AAS
- description:
- - Name of the Virtual IP Health Check resource for NetWeaver AAS.
-
- sap_ha_pacemaker_cluster_nwas_sapmnt_filesystem_resource_name:
- default: rsc_fs__sapmnt
- description:
- - Filesystem resource name for the shared filesystem /sapmnt.
- - Optional, this is typically managed by the OS, but can as well be added to the cluster
- configuration.
- - Enable this resource setup using `sap_ha_pacemaker_cluster_nwas_shared_filesystems_cluster_managed`.
-
- sap_ha_pacemaker_cluster_nwas_sapmnt_filesystem_resource_clone_name:
- default: cln_fs__sapmnt
- description:
- - Filesystem resource clone name for the shared filesystem /sapmnt.
- - Enable this resource setup using `sap_ha_pacemaker_cluster_nwas_shared_filesystems_cluster_managed`.
-
- sap_ha_pacemaker_cluster_nwas_transports_filesystem_resource_name:
- default: rsc_fs__trans
- description:
- - Filesystem resource name for the transports filesystem /usr/sap/trans.
- - Optional, this is typically managed by the OS, but can as well be added to the cluster
- configuration.
- - Enable this resource setup using `sap_ha_pacemaker_cluster_nwas_shared_filesystems_cluster_managed`.
-
- sap_ha_pacemaker_cluster_nwas_transports_filesystem_resource_clone_name:
- default: cln_fs__trans
- description:
- - Filesystem resource clone name for the shared filesystem /usr/sap/trans.
- - Enable this resource setup using `sap_ha_pacemaker_cluster_nwas_shared_filesystems_cluster_managed`.
-
- sap_ha_pacemaker_cluster_nwas_sys_filesystem_resource_name:
- default: rsc_fs_