diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 018496019..6291cdbd9 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,6 +6,18 @@ community.sap_install Release Notes
+v1.2.3
+======
+
+Release Summary
+---------------
+
+| Release Date: 2022-04-25
+| sap_hana_preconfigure: Some modifications for HANA on RHEL 9
+| sap_ha_pacemaker_cluster: Support for custom stonith resource definitions containing more than one element
+| sap_hana_preconfigure: Be more flexible with IBM service and productivity tools
+
+
v1.2.2
======
diff --git a/galaxy.yml b/galaxy.yml
index cccb9e482..f477709ca 100644
--- a/galaxy.yml
+++ b/galaxy.yml
@@ -10,7 +10,7 @@ namespace: community
name: sap_install
# The version of the collection. Must be compatible with semantic versioning
-version: 1.2.2
+version: 1.2.3
# The path to the Markdown (.md) readme file. This path is relative to the root of the collection
readme: README.md
diff --git a/playbooks/sample-deploy-2-node-sap-hana-pacemaker-cluster.yml b/playbooks/sample-sap-ha-deployment-hana-2-node-cluster.yml
similarity index 100%
rename from playbooks/sample-deploy-2-node-sap-hana-pacemaker-cluster.yml
rename to playbooks/sample-sap-ha-deployment-hana-2-node-cluster.yml
diff --git a/playbooks/sample-sap-ha-install-hana-hsr.yml b/playbooks/sample-sap-ha-install-hana-hsr.yml
deleted file mode 100644
index c508d7d3f..000000000
--- a/playbooks/sample-sap-ha-install-hana-hsr.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- hosts: all
- become: true
- roles:
- - { role: ../roles/sap_ha_install_hana_hsr }
diff --git a/playbooks/sample-sap-ha-install-pacemaker.yml b/playbooks/sample-sap-ha-install-pacemaker.yml
deleted file mode 100644
index 5492ecc7b..000000000
--- a/playbooks/sample-sap-ha-install-pacemaker.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- hosts: all
- become: true
- roles:
- - { role: ../roles/sap_ha_install_pacemaker }
diff --git a/playbooks/sample-sap-ha-set-hana.yml b/playbooks/sample-sap-ha-set-hana.yml
deleted file mode 100644
index a581a23ae..000000000
--- a/playbooks/sample-sap-ha-set-hana.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- hosts: all
- become: true
- roles:
- - { role: ../roles/sap_ha_set_hana }
diff --git a/playbooks/sample-sap-ha-set-netweaver.yml b/playbooks/sample-sap-ha-set-netweaver.yml
deleted file mode 100644
index 13433087e..000000000
--- a/playbooks/sample-sap-ha-set-netweaver.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- hosts: all
- become: true
- roles:
- - { role: ../roles/sap_ha_set_netweaver }
diff --git a/playbooks/sample-sap-hana-install.yml b/playbooks/sample-sap-hana-install.yml
index 19dc4d027..f9489ac62 100644
--- a/playbooks/sample-sap-hana-install.yml
+++ b/playbooks/sample-sap-hana-install.yml
@@ -1,8 +1,9 @@
---
-- hosts: all
+- name: Ansible Play for executing SAP HANA installation to all hosts in Ansible Inventory
+ hosts: all
become: true
pre_tasks:
- - name: Include vars
+ - name: Include variables
ansible.builtin.include_vars: ./vars/sample-variables-sap-hana-install.yml
roles:
- { role: ../roles/sap_hana_install }
diff --git a/playbooks/sample-sap-hana-preconfigure.yml b/playbooks/sample-sap-hana-preconfigure.yml
index 4624dfdeb..fd420d241 100644
--- a/playbooks/sample-sap-hana-preconfigure.yml
+++ b/playbooks/sample-sap-hana-preconfigure.yml
@@ -1,8 +1,13 @@
---
-- hosts: all
+- name: Ansible Play for executing preconfiguration activities for SAP HANA to all hosts in Ansible Inventory
+ hosts: all
become: true
vars:
+ sap_general_preconfigure_fail_if_reboot_required: no
sap_hana_preconfigure_fail_if_reboot_required: no
sap_hana_preconfigure_update: yes
+ sap_netweaver_preconfigure_fail_if_not_enough_swap_space_configured: no
roles:
+ - { role: community.sap_install.sap_general_preconfigure }
- { role: community.sap_install.sap_hana_preconfigure }
+ - { role: community.sap_install.sap_netweaver_preconfigure }
diff --git a/playbooks/sample-sap-netweaver-preconfigure.yml b/playbooks/sample-sap-netweaver-preconfigure.yml
deleted file mode 100644
index 506074b86..000000000
--- a/playbooks/sample-sap-netweaver-preconfigure.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- hosts: all
- become: true
- vars:
- sap_netweaver_preconfigure_fail_if_not_enough_swap_space_configured: no
- roles:
- - { role: community.sap_install.sap_netweaver_preconfigure }
diff --git a/playbooks/sample-sap-preconfigure.yml b/playbooks/sample-sap-preconfigure.yml
deleted file mode 100644
index c7bc17b62..000000000
--- a/playbooks/sample-sap-preconfigure.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-- hosts: all
- become: true
- vars:
- sap_general_preconfigure_fail_if_reboot_required: no
- sap_hana_preconfigure_fail_if_reboot_required: no
- sap_hana_preconfigure_update: yes
- sap_netweaver_preconfigure_fail_if_not_enough_swap_space_configured: no
- roles:
- - { role: community.sap_install.sap_general_preconfigure }
- - { role: community.sap_install.sap_hana_preconfigure }
- - { role: community.sap_install.sap_netweaver_preconfigure }
diff --git a/playbooks/sample-sap-storage-prep.yml b/playbooks/sample-sap-storage-prep.yml
index d4235f842..ace34cc91 100644
--- a/playbooks/sample-sap-storage-prep.yml
+++ b/playbooks/sample-sap-storage-prep.yml
@@ -1,8 +1,12 @@
---
+
+# Experimental Ansible Role, do not suggest using this
+
- hosts: all
become: true
pre_tasks:
- - include_vars: ./vars/sample-variables-sap-storage-partitions.yml
+# - include_vars: ./vars/sample-variables-sap-storage-lvm.yml
+# - include_vars: ./vars/sample-variables-sap-storage-lvm-stripes.yml
tasks:
diff --git a/playbooks/sample-sap-swpm-advanced-mode.yml b/playbooks/sample-sap-swpm-advanced-mode.yml
index 429e0bddc..819b5ff47 100644
--- a/playbooks/sample-sap-swpm-advanced-mode.yml
+++ b/playbooks/sample-sap-swpm-advanced-mode.yml
@@ -1,6 +1,23 @@
---
-- hosts: all
+# Ansible Playbook for executing sap_swpm Ansible in "Advanced Mode"
+
+- name: Ansible Play for executing SAP SWPM to all hosts in Ansible Inventory
+ hosts: all
+ become: true
+
vars:
sap_swpm_ansible_role_mode: advanced
- roles:
- - { role: ../roles/sap_swpm }
+
+ tasks:
+
+ - name: Import variables for sap_swpm Ansible Role (Advanced Mode)
+ ansible.builtin.include_vars:
+# file: ./sample-variables-sap-swpm-advanced-mode-s4hana-install.yml
+
+ - name: Execute Ansible Role sap_install_media_detect
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_install_media_detect }
+
+ - name: Execute Ansible Role sap_swpm
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_swpm }
diff --git a/playbooks/sample-sap-swpm-advanced-templates-mode.yml b/playbooks/sample-sap-swpm-advanced-templates-mode.yml
index 5462de9c3..508660a64 100644
--- a/playbooks/sample-sap-swpm-advanced-templates-mode.yml
+++ b/playbooks/sample-sap-swpm-advanced-templates-mode.yml
@@ -1,7 +1,32 @@
---
-- hosts: all
+# Ansible Playbook for executing sap_swpm Ansible in "Advanced Templates Mode"
+
+- name: Ansible Play for executing SAP SWPM to all hosts in Ansible Inventory
+ hosts: all
+ become: true
+
vars:
sap_swpm_ansible_role_mode: advanced_templates
- sap_swpm_templates_product_input: sap_s4hana_2020_onehost_install
- roles:
- - { role: ../roles/sap_swpm }
+# sap_swpm_templates_product_input: sap_system_rename
+# sap_swpm_templates_product_input: sap_s4hana_2021_onehost_install
+# sap_swpm_templates_product_input: sap_s4hana_2021_onehost_system_restore
+# sap_swpm_templates_product_input: sap_s4hana_2020_onehost_install
+# sap_swpm_templates_product_input: sap_s4hana_2020_onehost_system_restore
+# sap_swpm_templates_product_input: sap_bw4hana_2021_install
+# sap_swpm_templates_product_input: sap_webdisp_7_50_install
+# sap_swpm_templates_product_input: sap_solman_7_20_abap
+# sap_swpm_templates_product_input: sap_solman_7_20_java
+
+ tasks:
+
+ - name: Import variables for sap_swpm Ansible Role (Advanced Templates Mode)
+ ansible.builtin.include_vars:
+ file: ./sample-variables-sap-swpm-advanced-templates-mode.yml
+
+ - name: Execute Ansible Role sap_install_media_detect
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_install_media_detect }
+
+ - name: Execute Ansible Role sap_swpm
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_swpm }
diff --git a/playbooks/sample-sap-swpm-all-modes-interactive.yml b/playbooks/sample-sap-swpm-all-modes-interactive.yml
index 888ae2b0b..5b55ef7b0 100644
--- a/playbooks/sample-sap-swpm-all-modes-interactive.yml
+++ b/playbooks/sample-sap-swpm-all-modes-interactive.yml
@@ -1,30 +1,26 @@
---
-- hosts: all
+# Ansible Playbook for executing sap_swpm Ansible Role with interactive selection of mode (Inifile Reuse, Default, Advanced, Default Templates, Advanced Templates)
+- name: Ansible Play for executing SAP SWPM to all hosts in Ansible Inventory
+ hosts: all
become: true
- name: Playbook sample for SAP SWPM
-
- roles:
- - { role: ../roles/sap_swpm }
-
-
# Prompt for Ansible Variables, using pause for conditional argument
# Avoid vars prompt, so Facts Gathering does not split the input of a user
pre_tasks:
- - pause:
+ - ansible.builtin.pause:
prompt: "Choose: default, advanced, inifile_reuse. Alternatively use default_templates or advanced_templates"
register: prompt
no_log: yes
run_once: yes
- - set_fact:
+ - ansible.builtin.set_fact:
sap_swpm_ansible_role_mode: "{{ prompt.user_input }}"
no_log: yes
run_once: yes
- - pause:
+ - ansible.builtin.pause:
prompt: "Mode is {{ sap_swpm_ansible_role_mode }}, but variables not detected. Define path to YAML file with Ansible Variables"
register: prompt
no_log: no
@@ -32,7 +28,7 @@
when:
- (sap_swpm_ansible_role_mode == "default" or sap_swpm_ansible_role_mode == "advanced")
- (sap_swpm_product_catalog_id is not defined or sap_swpm_product_catalog_id == None)
- - include_vars:
+ - ansible.builtin.include_vars:
file: "{{ prompt.user_input }}"
no_log: no
run_once: yes
@@ -40,21 +36,21 @@
- (sap_swpm_ansible_role_mode == "default" or sap_swpm_ansible_role_mode == "advanced")
- (sap_swpm_product_catalog_id is not defined or sap_swpm_product_catalog_id == None)
- - pause:
+ - ansible.builtin.pause:
prompt: "Mode is {{ sap_swpm_ansible_role_mode }}, but inifile.params not detected. Define path to inifile.params"
register: prompt
no_log: yes
run_once: yes
when:
- sap_swpm_ansible_role_mode == "inifile_reuse"
- - set_fact:
+ - ansible.builtin.set_fact:
sap_swpm_inifile_reuse_source: "{{ prompt.user_input }}"
no_log: no
run_once: yes
when:
- sap_swpm_ansible_role_mode == "inifile_reuse"
- - pause:
+ - ansible.builtin.pause:
prompt: "Mode is {{ sap_swpm_ansible_role_mode }}, but variables not detected. Define path to YAML file with Ansible Variables"
register: prompt
no_log: no
@@ -62,21 +58,21 @@
when:
- (sap_swpm_ansible_role_mode == "default_templates" or sap_swpm_ansible_role_mode == "advanced_templates")
- (sap_swpm_templates_install_dictionary is not defined or sap_swpm_templates_install_dictionary == None)
- - include_vars:
+ - ansible.builtin.include_vars:
file: "{{ prompt.user_input }}"
no_log: no
run_once: yes
when:
- (sap_swpm_ansible_role_mode == "default_templates" or sap_swpm_ansible_role_mode == "advanced_templates")
- (sap_swpm_templates_install_dictionary is not defined or sap_swpm_templates_install_dictionary == None)
- - pause:
+ - ansible.builtin.pause:
prompt: "Mode is {{ sap_swpm_ansible_role_mode }}, define which template to run (e.g. sap_s4hana_2020_onehost_install)"
register: prompt
no_log: yes
run_once: yes
when:
- sap_swpm_ansible_role_mode == "default_templates" or sap_swpm_ansible_role_mode == "advanced_templates"
- - set_fact:
+ - ansible.builtin.set_fact:
sap_swpm_templates_product_input: "{{ prompt.user_input }}"
no_log: no
run_once: yes
@@ -84,19 +80,18 @@
- sap_swpm_ansible_role_mode == "default_templates" or sap_swpm_ansible_role_mode == "advanced_templates"
- name: Display Ansible Role for SAP SWPM using default or advanced templates mode
- debug:
+ ansible.builtin.debug:
msg: "Ansible Role for SAP SWPM mode is {{ sap_swpm_ansible_role_mode }}, using the following values: {{ sap_swpm_templates_install_dictionary }}"
when:
- sap_swpm_ansible_role_mode == "default_templates" or sap_swpm_ansible_role_mode == "advanced_templates"
-# Execute SAP SWPM
tasks:
- name: Execute Ansible Role sap_install_media_detect
- include_role:
- name: { role: lss.sap_install.sap_install_media_detect }
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_install_media_detect }
- - name: Execute Ansible Role sap_swpm with SAP S/4HANA One Host, System Copy Homogeneous (SAP HANA Backup/Restore)
- include_role:
- name: { role: lss.sap_install.sap_swpm }
+ - name: Execute Ansible Role sap_swpm
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_swpm }
diff --git a/playbooks/sample-sap-swpm-default-mode.yml b/playbooks/sample-sap-swpm-default-mode.yml
index 8d5506c55..d16fe750d 100644
--- a/playbooks/sample-sap-swpm-default-mode.yml
+++ b/playbooks/sample-sap-swpm-default-mode.yml
@@ -1,6 +1,33 @@
---
-- hosts: all
+# Ansible Playbook for executing sap_swpm Ansible in "Default Mode"
+
+- name: Ansible Play for executing SAP SWPM to all hosts in Ansible Inventory
+ hosts: all
+ become: true
+
vars:
sap_swpm_ansible_role_mode: default
- roles:
- - { role: ../roles/sap_swpm }
+
+ tasks:
+
+ - name: Import variables for sap_swpm Ansible Role (Default Mode)
+ ansible.builtin.include_vars:
+# file: ./sample-variables-sap-swpm-default-mode-bw4hana-onehost-install.yml
+# file: ./sample-variables-sap-swpm-default-mode-s4hana-distributed-ascs-install
+# file: ./sample-variables-sap-swpm-default-mode-s4hana-distributed-dbload-install
+# file: ./sample-variables-sap-swpm-default-mode-s4hana-distributed-ers-install
+# file: ./sample-variables-sap-swpm-default-mode-s4hana-distributed-pas-install
+# file: ./sample-variables-sap-swpm-default-mode-s4hana-onehost-install.yml
+# file: ./sample-variables-sap-swpm-default-mode-s4hana-onehost-restore.yml
+# file: ./sample-variables-sap-swpm-default-mode-solman-abap-onehost-install.yml
+# file: ./sample-variables-sap-swpm-default-mode-solman-java-onehost-install.yml
+# file: ./sample-variables-sap-swpm-default-mode-system-rename.yml
+# file: ./sample-variables-sap-swpm-default-mode-webdisp-standalone-install.yml
+
+ - name: Execute Ansible Role sap_install_media_detect
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_install_media_detect }
+
+ - name: Execute Ansible Role sap_swpm
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_swpm }
diff --git a/playbooks/sample-sap-swpm-default-templates-mode.yml b/playbooks/sample-sap-swpm-default-templates-mode.yml
index ce6eee9f2..1ed58153e 100644
--- a/playbooks/sample-sap-swpm-default-templates-mode.yml
+++ b/playbooks/sample-sap-swpm-default-templates-mode.yml
@@ -1,7 +1,26 @@
---
-- hosts: all
+# Ansible Playbook for executing sap_swpm Ansible in "Default Templates Mode"
+
+- name: Ansible Play for executing SAP SWPM to all hosts in Ansible Inventory
+ hosts: all
+ become: true
+
vars:
sap_swpm_ansible_role_mode: default_templates
- sap_swpm_templates_product_input: sap_s4hana_2020_onehost_install
- roles:
- - { role: ../roles/sap_swpm }
+# sap_swpm_templates_product_input: sap_system_rename
+# sap_swpm_templates_product_input: sap_s4hana_2020_onehost_install
+# sap_swpm_templates_product_input: sap_s4hana_2020_onehost_system_restore
+
+ tasks:
+
+ - name: Import variables for sap_swpm Ansible Role (Default Templates Mode)
+ ansible.builtin.include_vars:
+ file: ./sample-variables-sap-swpm-default-templates-mode.yml
+
+ - name: Execute Ansible Role sap_install_media_detect
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_install_media_detect }
+
+ - name: Execute Ansible Role sap_swpm
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_swpm }
diff --git a/playbooks/sample-sap-swpm-inifile-reuse-mode.yml b/playbooks/sample-sap-swpm-inifile-reuse-mode.yml
index e2f3ca1b1..b7ff6938d 100644
--- a/playbooks/sample-sap-swpm-inifile-reuse-mode.yml
+++ b/playbooks/sample-sap-swpm-inifile-reuse-mode.yml
@@ -1,7 +1,20 @@
---
-- hosts: all
+# Ansible Playbook for executing sap_swpm Ansible in "Inifile Reuse Mode"
+
+- name: Ansible Play for executing SAP SWPM to all hosts in Ansible Inventory
+ hosts: all
+ become: true
+
vars:
sap_swpm_ansible_role_mode: inifile_reuse
- sap_swpm_inifile_reuse_source: vars/custom/dummy.inifile.params
- roles:
- - { role: ../roles/sap_swpm }
+# sap_swpm_inifile_reuse_source: ./sample-sap-swpm-inifile-reuse-mode-sample.inifile.params
+
+ tasks:
+
+ - name: Execute Ansible Role sap_install_media_detect
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_install_media_detect }
+
+ - name: Execute Ansible Role sap_swpm
+ ansible.builtin.include_role:
+ name: { role: community.sap_install.sap_swpm }
diff --git a/playbooks/sample-sap-swpm.yml b/playbooks/sample-sap-swpm.yml
deleted file mode 100644
index 986a5b8a9..000000000
--- a/playbooks/sample-sap-swpm.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- hosts: all
- become: true
- roles:
- - { role: ../roles/sap_swpm }
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-bw4hana-install.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-bw4hana-onehost-install.yml
similarity index 68%
rename from playbooks/vars/sample-variables-sap-swpm-default-mode-bw4hana-install.yml
rename to playbooks/vars/sample-variables-sap-swpm-default-mode-bw4hana-onehost-install.yml
index a8b8ae3da..0c21ecaf9 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-bw4hana-install.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-bw4hana-onehost-install.yml
@@ -3,6 +3,20 @@
# Product ID for New Installation
sap_swpm_product_catalog_id: NW_ABAP_OneHost:BW4HANA20.CORE.HDB.ABAP
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - swpm_installation_media_swpm2_hana
+ - credentials
+ - credentials_hana
+ - db_config_hana
+ - db_connection_nw_hana
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_primary_application_server_instance
+ - nw_config_ports
+ - sap_os_linux_user
+
# Passwords
sap_swpm_master_password: "NewPass$321"
sap_swpm_db_system_password: "NewPass$321"
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-ascs-install.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-ascs-install.yml
index 6168fee19..96f8e65a1 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-ascs-install.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-ascs-install.yml
@@ -3,6 +3,25 @@
# Product ID for New Installation
sap_swpm_product_catalog_id: NW_ABAP_ASCS:S4HANA2020.CORE.HDB.ABAP
#NW_ABAP_ASCS:S4HANA2020.CORE.HDB.ABAPHA
+
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - swpm_installation_media_swpm2_hana
+ - credentials
+ - credentials_hana
+ - db_config_hana
+ - db_connection_nw_hana
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_primary_application_server_instance
+ - nw_config_ports
+ - nw_config_host_agent
+ - sap_os_linux_user
+ - maintenance_plan_stack_tms_config
+ - maintenance_plan_stack_spam_config
+ - maintenance_plan_stack_sum_config
+
# Software
sap_swpm_software_path: /software/download_basket
sap_swpm_sapcar_path: /software/download_basket
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-dbci-install.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-dbload-install.yml
similarity index 67%
rename from playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-dbci-install.yml
rename to playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-dbload-install.yml
index fc5206691..8ca2b0bab 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-dbci-install.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-dbload-install.yml
@@ -3,6 +3,25 @@
# Product ID for New Installation
sap_swpm_product_catalog_id: NW_ABAP_DB:S4HANA2020.CORE.HDB.ABAP
#NW_ABAP_DB:S4HANA2020.CORE.HDB.ABAPHA
+
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - swpm_installation_media_swpm2_hana
+ - credentials
+ - credentials_hana
+ - db_config_hana
+ - db_connection_nw_hana
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_primary_application_server_instance
+ - nw_config_ports
+ - nw_config_host_agent
+ - sap_os_linux_user
+ - maintenance_plan_stack_tms_config
+ - maintenance_plan_stack_spam_config
+ - maintenance_plan_stack_sum_config
+
# Software
sap_swpm_software_path: /software/download_basket
sap_swpm_sapcar_path: /software/download_basket
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-ers-install.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-ers-install.yml
index 6b608a88e..725eb005f 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-ers-install.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-ers-install.yml
@@ -3,6 +3,21 @@
# Product ID for New Installation
sap_swpm_product_catalog_id: NW_ERS:S4HANA2020.CORE.HDB.ABAPHA
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - swpm_installation_media_swpm2_hana
+ - credentials
+ - credentials_hana
+ - db_config_hana
+ - db_connection_nw_hana
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_primary_application_server_instance
+ - nw_config_ports
+ - nw_config_host_agent
+ - sap_os_linux_user
+
# Software
sap_swpm_software_path: /software/download_basket
sap_swpm_sapcar_path: /software/download_basket
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-pas-install.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-pas-install.yml
index 3f3e78dfa..8c8c2d091 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-pas-install.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-distributed-pas-install.yml
@@ -3,6 +3,25 @@
# Product ID for New Installation
sap_swpm_product_catalog_id: NW_ABAP_CI:S4HANA2020.CORE.HDB.ABAP
#NW_ABAP_CI:S4HANA2020.CORE.HDB.ABAPHA
+
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - swpm_installation_media_swpm2_hana
+ - credentials
+ - credentials_hana
+ - db_config_hana
+ - db_connection_nw_hana
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_primary_application_server_instance
+ - nw_config_ports
+ - nw_config_host_agent
+ - sap_os_linux_user
+ - maintenance_plan_stack_tms_config
+ - maintenance_plan_stack_spam_config
+ - maintenance_plan_stack_sum_config
+
# Software
sap_swpm_software_path: /software/download_basket
sap_swpm_sapcar_path: /software/download_basket
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-install.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-onehost-install.yml
similarity index 72%
rename from playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-install.yml
rename to playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-onehost-install.yml
index 4e1d67f28..593dfed2a 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-install.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-onehost-install.yml
@@ -3,6 +3,20 @@
# Product ID for New Installation
sap_swpm_product_catalog_id: NW_ABAP_OneHost:S4HANA2020.CORE.HDB.ABAP
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - swpm_installation_media_swpm2_hana
+ - credentials
+ - credentials_hana
+ - db_config_hana
+ - db_connection_nw_hana
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_primary_application_server_instance
+ - nw_config_ports
+ - sap_os_linux_user
+
# Software
sap_swpm_software_path: /software/download_basket
sap_swpm_sapcar_path: /software/download_basket
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-restore.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-onehost-restore.yml
similarity index 74%
rename from playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-restore.yml
rename to playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-onehost-restore.yml
index 29d6baf1c..cb6f5a2b3 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-restore.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-s4hana-onehost-restore.yml
@@ -3,6 +3,21 @@
# Product ID for New Installation
sap_swpm_product_catalog_id: NW_ABAP_OneHost:S4HANA2020.CORE.HDB.CP
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - swpm_installation_media_swpm2_hana
+ - credentials
+ - credentials_hana
+ - db_config_hana
+ - db_connection_nw_hana
+ - db_restore_hana
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_primary_application_server_instance
+ - nw_config_ports
+ - sap_os_linux_user
+
# Software
sap_swpm_software_path: /software/download_basket
sap_swpm_sapcar_path: /software/download_basket
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-solman-abap-install.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-solman-abap-onehost-install.yml
similarity index 70%
rename from playbooks/vars/sample-variables-sap-swpm-default-mode-solman-abap-install.yml
rename to playbooks/vars/sample-variables-sap-swpm-default-mode-solman-abap-onehost-install.yml
index 4f6cc4f1b..7a9df6d33 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-solman-abap-install.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-solman-abap-onehost-install.yml
@@ -3,6 +3,27 @@
# Product ID for Solman New Installation
sap_swpm_product_catalog_id: NW_ABAP_OneHost:SOLMAN72SR2.ABAP.HDB.PD
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - swpm_installation_media_swpm1_exportfiles
+ - swpm_installation_media_swpm1_sapase
+ - credentials
+ - credentials_anydb_sapase
+ - db_config_anydb_all
+ - db_config_anydb_sapase
+ - nw_config_anydb
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_primary_application_server_instance
+ - nw_config_java_ume
+ - nw_config_ports
+ - nw_config_java_ume
+ - nw_config_host_agent
+ - sap_os_linux_user
+ - solman_credentials_swpm1
+ - solman_abap_swpm1
+
# Software
sap_swpm_software_path: /software/download_basket
sap_swpm_sapcar_path: /software/download_basket
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-solman-java-install.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-solman-java-onehost-install.yml
similarity index 71%
rename from playbooks/vars/sample-variables-sap-swpm-default-mode-solman-java-install.yml
rename to playbooks/vars/sample-variables-sap-swpm-default-mode-solman-java-onehost-install.yml
index 94680b10b..f6b040adf 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-solman-java-install.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-solman-java-onehost-install.yml
@@ -3,6 +3,29 @@
# Product ID for Solman New Installation
sap_swpm_product_catalog_id: NW_Java_OneHost:SOLMAN72SR2.JAVA.HDB.PD
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - swpm_installation_media_swpm1_exportfiles
+ - swpm_installation_media_swpm1_sapase
+ - credentials
+ - credentials_anydb_sapase
+ - db_config_anydb_sapase
+ - nw_config_anydb
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_central_services_java
+ - nw_config_primary_application_server_instance
+ - nw_config_java_ume
+ - nw_config_ports
+ - nw_config_host_agent
+# - sap_os_linux_user # Ignore, and SAP SWPM will auto-assign UID and GID
+ - solman_credentials_swpm1
+ - nw_config_java_feature_template_ids
+
+sap_swpm_java_template_id_selected_list:
+ - java_solman
+
# Software
sap_swpm_software_path: /software/download_basket/SAPINST/SOLMAN_JAVA
sap_swpm_sapcar_path: /software/download_basket/SAPINST/SAP_SWPM_SOLMAN
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-system-rename.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-system-rename.yml
index 89d341e7a..b9dd62a3b 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-system-rename.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-system-rename.yml
@@ -1,16 +1,23 @@
---
-# Target host path and file name for the sapcar installation file
-sap_swpm_sapcar_path: /software
-sap_swpm_sapcar_file_name: SAPCAR_1010-70006178.EXE
+# Product ID for System Rename
+sap_swpm_product_catalog_id: NW_StorageBasedCopy
+
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - credentials
+ - db_hana_nw_connection
+ - nw_other_config
+ - nw_central_instance
+ - nw_instance_config
# Target host path and file name for the SWPM .SAR file
sap_swpm_swpm_path: /software
sap_swpm_swpm_sar_file_name: SWPM20SP08_2-80003424.SAR
-sap_swpm_product_catalog_id: NW_StorageBasedCopy
-
-# Response variables for unattended installation config file
+# Target host path and file name for the sapcar installation file
+sap_swpm_sapcar_path: /software
+sap_swpm_sapcar_file_name: SAPCAR_1010-70006178.EXE
# SAP instance details
sap_swpm_ascs_instance_nr: "02"
diff --git a/playbooks/vars/sample-variables-sap-swpm-default-mode-webdisp-install.yml b/playbooks/vars/sample-variables-sap-swpm-default-mode-webdisp-standalone-install.yml
similarity index 63%
rename from playbooks/vars/sample-variables-sap-swpm-default-mode-webdisp-install.yml
rename to playbooks/vars/sample-variables-sap-swpm-default-mode-webdisp-standalone-install.yml
index b68007158..f0f9be133 100644
--- a/playbooks/vars/sample-variables-sap-swpm-default-mode-webdisp-install.yml
+++ b/playbooks/vars/sample-variables-sap-swpm-default-mode-webdisp-standalone-install.yml
@@ -3,6 +3,18 @@
# Product ID for New Installation
sap_swpm_product_catalog_id: NW_Webdispatcher:NW750.IND.PD
+# Generate inifile.params using sap_swpm Ansible Role
+sap_swpm_inifile_list:
+ - swpm_installation_media
+ - credentials
+ - nw_config_other
+ - nw_config_central_services_abap
+ - nw_config_primary_application_server_instance
+ - nw_config_ports
+ - nw_config_webdisp_generic
+ - nw_config_host_agent
+ - sap_os_linux_user
+
# Software
sap_swpm_software_path: /software
sap_swpm_sapcar_path: /software
@@ -23,7 +35,9 @@ sap_swpm_wd_backend_ms_http_port: '8001'
sap_swpm_wd_backend_ms_host: "{{ ansible_hostname }}"
sap_swpm_wd_backend_rfc_host: "{{ ansible_hostname }}"
sap_swpm_wd_backend_rfc_instance_nr: "01"
-sap_swpm_wd_backend_rfc_ddic_000_password: "NewPass$321"
+sap_swpm_wd_backend_rfc_client_nr: "000"
+sap_swpm_wd_backend_rfc_user: "DDIC"
+sap_swpm_wd_backend_rfc_user_password: "NewPass$321"
sap_swpm_wd_backend_scenario_size: '500'
sap_swpm_wd_virtual_host: "{{ ansible_hostname }}"
diff --git a/roles/sap_general_preconfigure/files/etc/tmpfiles.d/sap_RedHat_9.conf b/roles/sap_general_preconfigure/files/etc/tmpfiles.d/sap_RedHat_9.conf
new file mode 100644
index 000000000..082012b08
--- /dev/null
+++ b/roles/sap_general_preconfigure/files/etc/tmpfiles.d/sap_RedHat_9.conf
@@ -0,0 +1,10 @@
+# systemd.tmpfiles exclude file for SAP
+# SAP software stores some important files in /tmp which should not be deleted automatically.
+# This file has been created using role sap_general_preconfigure in RHEL System Roles for SAP.
+# Do not change this file as it might be overwritten when running role sap_general_preconfigure again.
+
+# Exclude SAP socket and lock files
+x /tmp/.sap*
+
+# Exclude TREX lock file
+x /tmp/.trex*lock
diff --git a/roles/sap_general_preconfigure/tasks/RedHat/generic/assert-etc-hosts.yml b/roles/sap_general_preconfigure/tasks/RedHat/generic/assert-etc-hosts.yml
index d2cf27049..1de70c990 100644
--- a/roles/sap_general_preconfigure/tasks/RedHat/generic/assert-etc-hosts.yml
+++ b/roles/sap_general_preconfigure/tasks/RedHat/generic/assert-etc-hosts.yml
@@ -58,9 +58,9 @@
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
- name: Check for duplicate or missing entries of {{ sap_hostname }}.{{ sap_domain }} in /etc/hosts
- ansible.builtin.command: awk '/^{{ sap_hostname }}.{{ sap_domain }} /||
- / {{ sap_hostname }}.{{ sap_domain }} /||
- / {{ sap_hostname }}.{{ sap_domain }}$/{a++}END{print a}' /etc/hosts
+ ansible.builtin.command: awk 'BEGIN{a=0}/^{{ sap_hostname }}.{{ sap_domain }}\s/||
+ /\s{{ sap_hostname }}.{{ sap_domain }}\s/||
+ /\s{{ sap_hostname }}.{{ sap_domain }}$/{a++}END{print a}' /etc/hosts
register: __sap_general_preconfigure_register_fqdn_once_assert
ignore_errors: yes
changed_when: no
@@ -73,9 +73,9 @@
ignore_errors: "{{ sap_general_preconfigure_assert_ignore_errors | d(false) }}"
- name: Check for duplicate or missing entries of {{ sap_hostname }} in /etc/hosts
- ansible.builtin.command: awk '/^{{ sap_hostname }} /||
- / {{ sap_hostname }} /||
- / {{ sap_hostname }}$/{a++}END{print a}' /etc/hosts
+ ansible.builtin.command: awk 'BEGIN{a=0}/^{{ sap_hostname }}\s/||
+ /\s{{ sap_hostname }}\s/||
+ /\s{{ sap_hostname }}$/{a++}END{print a}' /etc/hosts
register: __sap_general_preconfigure_register_sap_hostname_once_assert
ignore_errors: yes
changed_when: no
diff --git a/roles/sap_general_preconfigure/tasks/RedHat/generic/configure-systemd-tmpfiles.yml b/roles/sap_general_preconfigure/tasks/RedHat/generic/configure-systemd-tmpfiles.yml
index a5a8c9870..3c81e526f 100644
--- a/roles/sap_general_preconfigure/tasks/RedHat/generic/configure-systemd-tmpfiles.yml
+++ b/roles/sap_general_preconfigure/tasks/RedHat/generic/configure-systemd-tmpfiles.yml
@@ -1,6 +1,6 @@
---
-- name: Copy file /etc/tmpfiles.d/sap.conf
+- name: Copy file /etc/tmpfiles.d/sap.conf, RHEL 7 or 8
ansible.builtin.copy:
src: etc/tmpfiles.d/sap.conf
dest: /etc/tmpfiles.d/sap.conf
@@ -8,3 +8,14 @@
group: root
mode: '0644'
backup: yes
+ when: ansible_distribution_major_version != '9'
+
+- name: Copy file /etc/tmpfiles.d/sap.conf, RHEL 9
+ ansible.builtin.copy:
+ src: etc/tmpfiles.d/sap_RedHat_9.conf
+ dest: /etc/tmpfiles.d/sap.conf
+ owner: root
+ group: root
+ mode: '0644'
+ backup: yes
+ when: ansible_distribution_major_version == '9'
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316.yml
new file mode 100644
index 000000000..5dc4af4b3
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316.yml
@@ -0,0 +1,42 @@
+---
+
+- name: Configure - Display SAP note number 3108316 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3108316$') | first).number }}
+ (version {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3108316$') | first).version }}): Configure RHEL 8"
+
+- name: Import tasks from '3108316/02-configure-selinux.yml'
+ ansible.builtin.import_tasks: 3108316/02-configure-selinux.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_02 | d(false)
+
+- name: Import tasks from '3108316/03-configure-hostname.yml'
+ ansible.builtin.import_tasks: 3108316/03-configure-hostname.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_03 | d(false)
+
+- name: Import tasks from '3108316/04-configure-network-time-and-date.yml'
+ ansible.builtin.import_tasks: 3108316/04-configure-network-time-and-date.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_04 | d(false)
+
+- name: Import tasks from '3108316/05-configure-firewall.yml'
+ ansible.builtin.import_tasks: 3108316/05-configure-firewall.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_05 | d(false)
+
+- name: Import tasks from '3108316/06-configure-uuidd.yml'
+ ansible.builtin.import_tasks: 3108316/06-configure-uuidd.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_06 | d(false)
+
+- name: Import tasks from '3108316/07-configure-tmpfs.yml'
+ ansible.builtin.import_tasks: 3108316/07-configure-tmpfs.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_07 | d(false)
+
+- name: Import tasks from '3108316/08-configure-linux-kernel-parameters.yml'
+ ansible.builtin.import_tasks: 3108316/08-configure-linux-kernel-parameters.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_08 | d(false)
+
+- name: Import tasks from '3108316/09-configure-process-resource-limits.yml'
+ ansible.builtin.import_tasks: 3108316/09-configure-process-resource-limits.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_09 | d(false)
+
+- name: Import tasks from '3108316/10-configure-systemd-tmpfiles.yml'
+ ansible.builtin.import_tasks: 3108316/10-configure-systemd-tmpfiles.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_10 | d(false)
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/02-assert-selinux.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/02-assert-selinux.yml
new file mode 100644
index 000000000..1c2fe6e96
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/02-assert-selinux.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108316-2
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 2: Configure SELinux"
+
+- name: Import tasks from '../../RedHat/generic/assert-selinux.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-selinux.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/02-configure-selinux.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/02-configure-selinux.yml
new file mode 100644
index 000000000..29a95015e
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/02-configure-selinux.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108316-2
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 2: Configure SELinux"
+
+- name: Import tasks from '../../RedHat/generic/configure-selinux.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-selinux.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/03-assert-hostname.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/03-assert-hostname.yml
new file mode 100644
index 000000000..17aa80708
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/03-assert-hostname.yml
@@ -0,0 +1,14 @@
+---
+
+- name: Assert 3108316-3
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 3: Configure Hostname"
+
+- name: Import tasks from '../../RedHat/generic/assert-hostname.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-hostname.yml
+
+- name: Import tasks from '../../RedHat/generic/assert-etc-hosts.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-etc-hosts.yml
+
+- name: Import tasks from '../../RedHat/generic/assert-dns-name-resolution.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-dns-name-resolution.yml
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
new file mode 100644
index 000000000..d120c8e8e
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/03-configure-hostname.yml
@@ -0,0 +1,14 @@
+---
+
+- name: Configure 3108316-3
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 3: Configure Hostname"
+
+- name: Import tasks from '../../RedHat/generic/configure-hostname.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-hostname.yml
+
+- name: Import tasks from '../../RedHat/generic/configure-etc-hosts.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-etc-hosts.yml
+
+- name: Import tasks from '../../RedHat/generic/check-dns-name-resolution.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/check-dns-name-resolution.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/04-assert-network-time-and-date.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/04-assert-network-time-and-date.yml
new file mode 100644
index 000000000..f46e0aac5
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/04-assert-network-time-and-date.yml
@@ -0,0 +1,26 @@
+---
+
+- name: Assert 3108316-4
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 4: Configure 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: yes
+ changed_when: no
+
+- 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) }}"
+
+- 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) }}"
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/04-configure-network-time-and-date.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/04-configure-network-time-and-date.yml
new file mode 100644
index 000000000..510ca3fb4
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/04-configure-network-time-and-date.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Configure 3108316-4
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 4: Configure Network Time and Date"
+
+- name: Start and enable service chronyd
+ ansible.builtin.systemd:
+ name: chronyd
+ state: started
+ enabled: yes
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/05-assert-firewall.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/05-assert-firewall.yml
new file mode 100644
index 000000000..9f70e1648
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/05-assert-firewall.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108316-5
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 5: Configure the Firewall"
+
+- name: Import tasks from '../../RedHat/generic/assert-firewall.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-firewall.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/05-configure-firewall.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/05-configure-firewall.yml
new file mode 100644
index 000000000..707b53712
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/05-configure-firewall.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108316-5
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 5: Configure the Firewall"
+
+- name: Import tasks from '../../RedHat/generic/configure-firewall.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-firewall.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/06-assert-uuidd.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/06-assert-uuidd.yml
new file mode 100644
index 000000000..dab32ed0f
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/06-assert-uuidd.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108316-6
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 6: Configure uuidd"
+
+- name: Import tasks from '../../RedHat/generic/assert-uuidd.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-uuidd.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/06-configure-uuidd.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/06-configure-uuidd.yml
new file mode 100644
index 000000000..ff31a6ce1
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/06-configure-uuidd.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108316-6
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 6: Configure uuidd"
+
+- name: Import tasks from '../../RedHat/generic/configure-uuidd.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-uuidd.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/07-assert-tmpfs.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/07-assert-tmpfs.yml
new file mode 100644
index 000000000..180df8ba5
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/07-assert-tmpfs.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Assert 3108316-7
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 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 }}"
+
+- name: Import tasks from '../../RedHat/generic/assert-tmpfs.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-tmpfs.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/07-configure-tmpfs.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/07-configure-tmpfs.yml
new file mode 100644
index 000000000..f293b7979
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/07-configure-tmpfs.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Configure 3108316-7
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 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 }}"
+
+- name: Import tasks from '../../RedHat/generic/configure-tmpfs.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-tmpfs.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/08-assert-linux-kernel-parameters.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/08-assert-linux-kernel-parameters.yml
new file mode 100644
index 000000000..a5ed5b632
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/08-assert-linux-kernel-parameters.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108316-8
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 8: Configure Linux Kernel Parameters"
+
+- name: Import tasks from '../../RedHat/generic/assert-kernel-parameters.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-kernel-parameters.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/08-configure-linux-kernel-parameters.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/08-configure-linux-kernel-parameters.yml
new file mode 100644
index 000000000..5daf105f5
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/08-configure-linux-kernel-parameters.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108316-8
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 8: Configure Linux Kernel Parameters"
+
+- name: Import tasks from '../../RedHat/generic/configure-kernel-parameters.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-kernel-parameters.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/09-assert-process-resource-limits.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/09-assert-process-resource-limits.yml
new file mode 100644
index 000000000..b556fe3ef
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/09-assert-process-resource-limits.yml
@@ -0,0 +1,11 @@
+---
+
+- name: Assert 3108316-9
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 9: Configure Process Resource Limits"
+
+- name: Import tasks from '../../RedHat/generic/assert-limits-conf-file.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-limits-conf-file.yml
+
+- name: Import tasks from '../../RedHat/generic/assert-nproc-limits.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-nproc-limits.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/09-configure-process-resource-limits.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/09-configure-process-resource-limits.yml
new file mode 100644
index 000000000..104bd24b9
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/09-configure-process-resource-limits.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108316-9
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 9: Configure Process Resource Limits"
+
+- name: Import tasks from '../../RedHat/generic/increase-nproc-limits.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/increase-nproc-limits.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/10-assert-systemd-tmpfiles.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/10-assert-systemd-tmpfiles.yml
new file mode 100644
index 000000000..37f6d65f7
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/10-assert-systemd-tmpfiles.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108316-10
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 10: Configure systemd-tmpfiles"
+
+- name: Import tasks from '../../RedHat/generic/assert-systemd-tmpfiles.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-systemd-tmpfiles.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/3108316/10-configure-systemd-tmpfiles.yml b/roles/sap_general_preconfigure/tasks/sapnote/3108316/10-configure-systemd-tmpfiles.yml
new file mode 100644
index 000000000..984bc832e
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/3108316/10-configure-systemd-tmpfiles.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108316-10
+ ansible.builtin.debug:
+ msg: "SAP note 3108316 Step 10: Configure systemd-tmpfiles"
+
+- name: Import tasks from '../../RedHat/generic/configure-systemd-tmpfiles.yml'
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-systemd-tmpfiles.yml
diff --git a/roles/sap_general_preconfigure/tasks/sapnote/assert-3108316.yml b/roles/sap_general_preconfigure/tasks/sapnote/assert-3108316.yml
new file mode 100644
index 000000000..7fcddbfb4
--- /dev/null
+++ b/roles/sap_general_preconfigure/tasks/sapnote/assert-3108316.yml
@@ -0,0 +1,42 @@
+---
+
+- name: Assert - Display SAP note number 3108316 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3108316$') | first).number }}
+ (version {{ (__sap_general_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3108316$') | first).version }}): Configure RHEL 8"
+
+- name: Import tasks from '3108316/02-assert-selinux.yml'
+ ansible.builtin.import_tasks: 3108316/02-assert-selinux.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_02 | d(false)
+
+- name: Import tasks from '3108316/03-assert-hostname.yml'
+ ansible.builtin.import_tasks: 3108316/03-assert-hostname.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_03 | d(false)
+
+- name: Import tasks from '3108316/04-assert-network-time-and-date.yml'
+ ansible.builtin.import_tasks: 3108316/04-assert-network-time-and-date.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_04 | d(false)
+
+- name: Import tasks from '3108316/05-assert-firewall.yml'
+ ansible.builtin.import_tasks: 3108316/05-assert-firewall.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_05 | d(false)
+
+- name: Import tasks from '3108316/06-assert-uuidd.yml'
+ ansible.builtin.import_tasks: 3108316/06-assert-uuidd.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_06 | d(false)
+
+- name: Import tasks from '3108316/07-assert-tmpfs.yml'
+ ansible.builtin.import_tasks: 3108316/07-assert-tmpfs.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_07 | d(false)
+
+- name: Import tasks from '3108316/08-assert-linux-kernel-parameters.yml'
+ ansible.builtin.import_tasks: 3108316/08-assert-linux-kernel-parameters.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_08 | d(false)
+
+- name: Import tasks from '3108316/09-assert-process-resource-limits.yml'
+ ansible.builtin.import_tasks: 3108316/09-assert-process-resource-limits.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_09 | d(false)
+
+- name: Import tasks from '3108316/10-assert-systemd-tmpfiles.yml'
+ ansible.builtin.import_tasks: 3108316/10-assert-systemd-tmpfiles.yml
+ when: sap_general_preconfigure_config_all | d(true) or sap_general_preconfigure_3108316_10 | d(false)
diff --git a/roles/sap_general_preconfigure/vars/RedHat_9.yml b/roles/sap_general_preconfigure/vars/RedHat_9.yml
index 76da84a1d..1c1afd0e6 100644
--- a/roles/sap_general_preconfigure/vars/RedHat_9.yml
+++ b/roles/sap_general_preconfigure/vars/RedHat_9.yml
@@ -3,8 +3,7 @@
# vars file for sap_general_preconfigure
__sap_general_preconfigure_sapnotes_versions:
-# for the time being, use SAP note 2772999:
- - { number: '2772999', version: '24' }
+ - { number: '3108316', version: '2' }
- { number: '1771258', version: '6' }
__sap_general_preconfigure_max_repo_type_x86_64: 'e4s'
diff --git a/roles/sap_ha_pacemaker_cluster/README.md b/roles/sap_ha_pacemaker_cluster/README.md
index 7b11c5c06..88952e58f 100644
--- a/roles/sap_ha_pacemaker_cluster/README.md
+++ b/roles/sap_ha_pacemaker_cluster/README.md
@@ -38,8 +38,8 @@ _All of the following functionality is provided as **Technology Preview**._
| -------- | --------- |
| :heavy_check_mark: physical server | expected to work with any fencing method that is supported by the `ha_cluster` Linux System Role |
| :heavy_check_mark: OVirt VM | tested and working |
-| :heavy_check_mark: AWS EC2 | platform detection and awscli setup included, tested and expected to work |
-| IBM Cloud VPC | platform detection included, tested and working (unsupported at this point in time) |
+| :heavy_check_mark: AWS EC2 VS | platform detection and awscli setup included, tested and expected to work |
+| IBM Cloud VS | platform detection included, tested and working (unsupported at this point in time) |
@@ -58,7 +58,7 @@ On cloud platforms additional parameters are required:
- AWS: `sap_ha_pacemaker_cluster_aws_*` variables
- AWS: `sap_ha_pacemaker_cluster_vip_update_rt`
-- IBM Cloud VPC: `sap_ha_pacemaker_cluster_ibmcloud_*` variables
+- IBM Cloud: `sap_ha_pacemaker_cluster_ibmcloud_*` variables
---
@@ -155,7 +155,7 @@ WARNING! This report may include sensitive details like secrets required for cer
- _Type:_ `dict`
STONITH resource common parameters that apply to most fencing agents.
-These options are applied to fencing resources this role uses automatically for pre-defined platforms (like AWS EC2, IBM Cloud VPC).
+These options are applied to fencing resources this role uses automatically for pre-defined platforms (like AWS EC2 VS, IBM Cloud VS).
The listed options are set by default.
Additional options can be added by defining this parameter in dictionary format and adding the defaults plus any valid stonith resource key-value pair.
@@ -224,14 +224,14 @@ Customize the cluster resource name of the SAP HANA Topology resource.
- _Type:_ `str`
The API key is required to allow control of instances (for example for fencing operations).
-Required for cluster nodes setup in IBM Cloud VPC.
+Required for cluster nodes setup in IBM Cloud.
### sap_ha_pacemaker_cluster_ibmcloud_region
- _Type:_ `str`
The cloud region key in which the instances are running.
-Required for cluster nodes setup in IBM Cloud VPC.
+Required for cluster nodes setup in IBM Cloud.
### sap_ha_pacemaker_cluster_replication_type
diff --git a/roles/sap_ha_pacemaker_cluster/meta/argument_specs.yml b/roles/sap_ha_pacemaker_cluster/meta/argument_specs.yml
index 029ac1007..665579505 100644
--- a/roles/sap_ha_pacemaker_cluster/meta/argument_specs.yml
+++ b/roles/sap_ha_pacemaker_cluster/meta/argument_specs.yml
@@ -113,7 +113,7 @@ argument_specs:
sap_ha_pacemaker_cluster_fence_options:
description:
- STONITH resource common parameters that apply to most fencing agents.
- - These options are applied to fencing resources this role uses automatically for pre-defined platforms (like AWS EC2, IBM Cloud VPC).
+ - These options are applied to fencing resources this role uses automatically for pre-defined platforms (like AWS EC2 VS, IBM Cloud VS).
- The listed options are set by default.
- Additional options can be added by defining this parameter in dictionary format and adding the defaults plus any valid stonith resource key-value pair.
@@ -196,14 +196,14 @@ argument_specs:
sap_ha_pacemaker_cluster_ibmcloud_api_key:
description:
- The API key is required to allow control of instances (for example for fencing operations).
- - Required for cluster nodes setup in IBM Cloud VPC.
+ - Required for cluster nodes setup in IBM Cloud.
required: false
type: str
sap_ha_pacemaker_cluster_ibmcloud_region:
description:
- The cloud region key in which the instances are running.
- - Required for cluster nodes setup in IBM Cloud VPC.
+ - Required for cluster nodes setup in IBM Cloud.
required: false
type: str
diff --git a/roles/sap_ha_pacemaker_cluster/tasks/ascertain_platform_type.yml b/roles/sap_ha_pacemaker_cluster/tasks/ascertain_platform_type.yml
index ca95a85fc..98f6ad958 100644
--- a/roles/sap_ha_pacemaker_cluster/tasks/ascertain_platform_type.yml
+++ b/roles/sap_ha_pacemaker_cluster/tasks/ascertain_platform_type.yml
@@ -1,40 +1,79 @@
---
# Platform detection for cloud and other infrastructure platforms.
-### AWS facts already available in Ansible
+### Facts already available to Ansible
#
-# ansible_bios_vendor: "Amazon EC2"
-# ansible_bios_version: "1.0"
-# ansible_board_asset_tag: "i-043d3c1a889ed9016"
-# ansible_board_name: "NA"
-# ansible_board_serial: "NA"
-# ansible_board_vendor: "Amazon EC2"
-# ansible_board_version: "NA"
-# ansible_chassis_asset_tag: "Amazon EC2"
-# ansible_chassis_serial: "NA"
+### Amazon Web Services EC2 Virtual Server. Not applicable for AWS Classic.
+# ansible_chassis_asset_tag: "Amazon EC2" # SMBIOS Chassis Asset Tag
+# ansible_board_asset_tag: "i-043d3c1a889ed9016" # SMBIOS Baseboard Asset Tag
# ansible_chassis_vendor: "Amazon EC2"
-# ansible_chassis_version: "NA"
-# ansible_product_name: "r5.8xlarge"
+# ansible_product_name: "r5.8xlarge" # IaaS profile name
# ansible_system_vendor: "Amazon EC2"
#
-### IBM Cloud VPC facts
-# ansible_chassis_asset_tag: "ibmcloud"
-# ansible_chassis_vendor: "IBM:Cloud Compute Server 1.0:mx2-16x128"
+### Google Cloud Compute Engine Virtual Machine.
+# ansible_chassis_asset_tag: "NA" # SMBIOS Chassis Asset Tag
+# ansible_board_asset_tag: "9EAF3038-7EF5-3F1E-6620-FB3BDA7A3709" # SMBIOS Baseboard Asset Tag
+# ansible_chassis_vendor: "Google"
+# ansible_product_name: "Google Compute Engine"
+# ansible_system_vendor: "Google"
+#
+### IBM Cloud Virtual Server. Not applicable for IBM Cloud Classic Infrastructure.
+# ansible_chassis_asset_tag: "ibmcloud" # SMBIOS Chassis Asset Tag
+# ansible_board_asset_tag: "0c7d4459-xxxx-yyyy-zzzz-abcdefghijkl" # SMBIOS Baseboard Asset Tag
+# ansible_chassis_vendor: "IBM:Cloud Compute Server 1.0:mx2-16x128" # IaaS profile name
+# ansible_product_name: "Standard PC (i440FX + PIIX, 1996)"
+# ansible_system_vendor: "QEMU"
+#
+### Microsoft Azure Virtual Machine. Not applicable for MS Azure Classic/ASM.
+# ansible_chassis_asset_tag: "7783-xxxx-yyyy-zzzz-aaaa-bbbb-cc" # SMBIOS Chassis Asset Tag
+# ansible_board_asset_tag: "None" # SMBIOS Baseboard Asset Tag
+# ansible_chassis_vendor: "Virtual Machine"
+# ansible_product_name: "Microsoft Corporation"
+# ansible_system_vendor: "70f4a858-1eea-4c35-b9e1-e179c32fc6b5" # IaaS profile name
+#
+### VMware vSphere
+# ansible_product_name: "VMware7,1",
+# ansible_system_vendor: "VMware, Inc.",
+# ansible_virtualization_type: "VMware"
+#
+### End of comment
+
# TODO: detection based on multiple facts and providing one standard
# name for use as platform type in related include files
+# cloud_aliyun_ecs_vm, cloud_aws_ec2_vs, cloud_gcp_ce_vm, cloud_ibmcloud_powervs, cloud_ibmcloud_vs, cloud_msazure_vm, hyp_ibmpower_lpar, hyp_redhat_ocp_virt_vm, hyp_redhat_rhel_kvm_vm, hyp_vmware_vsphere_vm
-- name: "SAP HA Prepare Pacemaker - Check if platform is AWS EC2 VM"
+
+- name: "SAP HA Prepare Pacemaker - Check if platform is Amazon Web Services EC2 Virtual Server"
when:
- ansible_system_vendor == 'Amazon EC2'
ansible.builtin.set_fact:
- __sap_ha_pacemaker_cluster_platform: vm_aws_ec2
+ __sap_ha_pacemaker_cluster_platform: cloud_aws_ec2_vs
+
+#- name: "SAP HA Prepare Pacemaker - Check if platform is Google Cloud Compute Engine Virtual Machine"
+# when:
+# - ansible_product_name == 'Google Compute Engine'
+# ansible.builtin.set_fact:
+# __sap_ha_pacemaker_cluster_platform: cloud_gcp_ce_vm
-- name: "SAP HA Prepare Pacemaker - Check if platform is IBM VPC VM"
+- name: "SAP HA Prepare Pacemaker - Check if platform is IBM Cloud Virtual Server"
when:
- ansible_chassis_asset_tag == 'ibmcloud'
ansible.builtin.set_fact:
- __sap_ha_pacemaker_cluster_platform: vm_ibmcloud
+ __sap_ha_pacemaker_cluster_platform: cloud_ibmcloud_vs
+
+#- name: "SAP HA Prepare Pacemaker - Check if platform is Microsoft Azure Virtual Machine"
+# when:
+# - ansible_chassis_vendor == 'Virtual Machine'
+# - ansible_product_name == 'Microsoft Corporation'
+# ansible.builtin.set_fact:
+# __sap_ha_pacemaker_cluster_platform: cloud_msazure_vm
+
+#- name: "SAP HA Prepare Pacemaker - Check if platform is VMware vSphere"
+# when:
+# - ansible_virtualization_type == 'VMware'
+# ansible.builtin.set_fact:
+# __sap_ha_pacemaker_cluster_platform: vmware_vsphere_vm
# Call tasks to discover information that is needed as input for any further steps.
# Run this before including the platform vars in order to build vars based on the
diff --git a/roles/sap_ha_pacemaker_cluster/tasks/construct_vars_stonith.yml b/roles/sap_ha_pacemaker_cluster/tasks/construct_vars_stonith.yml
index f1f696e6f..62e4f2144 100644
--- a/roles/sap_ha_pacemaker_cluster/tasks/construct_vars_stonith.yml
+++ b/roles/sap_ha_pacemaker_cluster/tasks/construct_vars_stonith.yml
@@ -37,52 +37,56 @@
- sap_ha_pacemaker_cluster_stonith_default is defined
- sap_ha_pacemaker_cluster_stonith_custom is not defined
ansible.builtin.set_fact:
- __sap_ha_pacemaker_cluster_stonith_resource:
- - id: "res_{{ sap_ha_pacemaker_cluster_stonith_default.agent | split(':') | last }}"
- agent: "{{ sap_ha_pacemaker_cluster_stonith_default.agent }}"
- instance_attrs:
- - attrs: |-
- {% set attrs = [] -%}
- {% set map = attrs.extend([
+ __sap_ha_pacemaker_cluster_stonith_resource: "{{ __sap_ha_pacemaker_cluster_stonith_resource | default([]) + [__stonith_resource_element] }}"
+ vars:
+ __stonith_resource_element:
+ id: "res_{{ sap_ha_pacemaker_cluster_stonith_default.agent | split(':') | last }}"
+ agent: "{{ sap_ha_pacemaker_cluster_stonith_default.agent }}"
+ instance_attrs:
+ - attrs: |-
+ {% set attrs = [] -%}
+ {% set map = attrs.extend([
+ {
+ 'name': 'pcmk_host_map',
+ 'value': '"' + __sap_ha_pacemaker_cluster_pcmk_host_map + '"'
+ }]) -%}
+ {%- for agent_opt in (sap_ha_pacemaker_cluster_stonith_default.options | dict2items) -%}
+ {% set aopts = attrs.extend([
{
- 'name': 'pcmk_host_map',
- 'value': '"' + __sap_ha_pacemaker_cluster_pcmk_host_map + '"'
+ 'name': agent_opt.key,
+ 'value': agent_opt.value
}]) -%}
- {%- for agent_opt in (sap_ha_pacemaker_cluster_stonith_default.options | dict2items) -%}
- {% set aopts = attrs.extend([
- {
- 'name': agent_opt.key,
- 'value': agent_opt.value
- }]) -%}
- {%- endfor %}
- {%- for fence_opt in (sap_ha_pacemaker_cluster_fence_options | dict2items) -%}
- {% set fopts = attrs.extend([
- {
- 'name': fence_opt.key,
- 'value': fence_opt.value
- }]) -%}
- {%- endfor %}
- {{ attrs }}
+ {%- endfor %}
+ {%- for fence_opt in (sap_ha_pacemaker_cluster_fence_options | dict2items) -%}
+ {% set fopts = attrs.extend([
+ {
+ 'name': fence_opt.key,
+ 'value': fence_opt.value
+ }]) -%}
+ {%- endfor %}
+ {{ attrs }}
- name: "SAP HA Prepare Pacemaker - Assemble the stonith resources from custom definition"
when:
- sap_ha_pacemaker_cluster_stonith_custom is defined
ansible.builtin.set_fact:
- __sap_ha_pacemaker_cluster_stonith_resource:
- - id: "res_{{ item.name }}"
- agent: "{{ item.agent }}"
- instance_attrs:
- - attrs: |-
- {% set attrs = [] -%}
- {%- for option in (item.options | dict2items) -%}
- {% set aopts = attrs.extend([
- {
- 'name': option.key,
- 'value': option.value
- }
- ]) -%}
- {%- endfor %}
- {{ attrs }}
+ __sap_ha_pacemaker_cluster_stonith_resource: "{{ __sap_ha_pacemaker_cluster_stonith_resource | default([]) + [__stonith_resource_element] }}"
+ vars:
+ __stonith_resource_element:
+ id: "res_{{ item.name }}"
+ agent: "{{ item.agent }}"
+ instance_attrs:
+ - attrs: |-
+ {% set attrs = [] -%}
+ {%- for option in (item.options | dict2items) -%}
+ {% set aopts = attrs.extend([
+ {
+ 'name': option.key,
+ 'value': option.value
+ }
+ ]) -%}
+ {%- endfor %}
+ {{ attrs }}
loop: "{{ sap_ha_pacemaker_cluster_stonith_custom }}"
loop_control:
label: "{{ item.name }}"
diff --git a/roles/sap_ha_pacemaker_cluster/tasks/platform/construct_vars_vip_resources_vm_aws_ec2.yml b/roles/sap_ha_pacemaker_cluster/tasks/platform/construct_vars_vip_resources_cloud_aws_ec2_vs.yml
similarity index 100%
rename from roles/sap_ha_pacemaker_cluster/tasks/platform/construct_vars_vip_resources_vm_aws_ec2.yml
rename to roles/sap_ha_pacemaker_cluster/tasks/platform/construct_vars_vip_resources_cloud_aws_ec2_vs.yml
diff --git a/roles/sap_ha_pacemaker_cluster/tasks/platform/preconfigure_vm_aws_ec2.yml b/roles/sap_ha_pacemaker_cluster/tasks/platform/preconfigure_cloud_aws_ec2_vs.yml
similarity index 100%
rename from roles/sap_ha_pacemaker_cluster/tasks/platform/preconfigure_vm_aws_ec2.yml
rename to roles/sap_ha_pacemaker_cluster/tasks/platform/preconfigure_cloud_aws_ec2_vs.yml
diff --git a/roles/sap_ha_pacemaker_cluster/tasks/platform/register_sysinfo_vm_ibmcloud.yml b/roles/sap_ha_pacemaker_cluster/tasks/platform/register_sysinfo_cloud_ibmcloud_vs.yml
similarity index 100%
rename from roles/sap_ha_pacemaker_cluster/tasks/platform/register_sysinfo_vm_ibmcloud.yml
rename to roles/sap_ha_pacemaker_cluster/tasks/platform/register_sysinfo_cloud_ibmcloud_vs.yml
diff --git a/roles/sap_ha_pacemaker_cluster/vars/main.yml b/roles/sap_ha_pacemaker_cluster/vars/main.yml
index 9bd46cbac..cc3f505d3 100644
--- a/roles/sap_ha_pacemaker_cluster/vars/main.yml
+++ b/roles/sap_ha_pacemaker_cluster/vars/main.yml
@@ -45,7 +45,7 @@ __sap_ha_pacemaker_cluster_secondary_synonyms:
# (cloud) platform helper variable - leave empty for default = not cloud
__sap_ha_pacemaker_cluster_platform: ''
__sap_ha_pacemaker_cluster_supported_platforms:
- - vm_aws_ec2
+ - cloud_aws_ec2_vs
# ATTENTION:
# Any variables for 'ha_cluster' which this SAP role supports/inherits should also
diff --git a/roles/sap_ha_pacemaker_cluster/vars/platform_vm_aws_ec2.yml b/roles/sap_ha_pacemaker_cluster/vars/platform_cloud_aws_ec2_vs.yml
similarity index 97%
rename from roles/sap_ha_pacemaker_cluster/vars/platform_vm_aws_ec2.yml
rename to roles/sap_ha_pacemaker_cluster/vars/platform_cloud_aws_ec2_vs.yml
index 540ec53d1..85e59f461 100644
--- a/roles/sap_ha_pacemaker_cluster/vars/platform_vm_aws_ec2.yml
+++ b/roles/sap_ha_pacemaker_cluster/vars/platform_cloud_aws_ec2_vs.yml
@@ -1,5 +1,6 @@
---
-
+# Variables specific on AWS platform
+#
# TODO: make sure to first respect 'ha_cluster' native variables
sap_ha_pacemaker_cluster_fence_agent_packages:
diff --git a/roles/sap_ha_pacemaker_cluster/vars/platform_vm_ibmcloud.yml b/roles/sap_ha_pacemaker_cluster/vars/platform_cloud_ibmcloud_vs.yml
similarity index 92%
rename from roles/sap_ha_pacemaker_cluster/vars/platform_vm_ibmcloud.yml
rename to roles/sap_ha_pacemaker_cluster/vars/platform_cloud_ibmcloud_vs.yml
index b2672aced..6cadf3cfd 100644
--- a/roles/sap_ha_pacemaker_cluster/vars/platform_vm_ibmcloud.yml
+++ b/roles/sap_ha_pacemaker_cluster/vars/platform_cloud_ibmcloud_vs.yml
@@ -1,8 +1,8 @@
---
-# Variables specific on IBM VPC platforms
+# Variables specific on IBM Cloud platform
#
# TODO: make sure to first respect 'ha_cluster' native variables
-#
+
sap_ha_pacemaker_cluster_fence_agent_packages:
- fence-agents-ibm-vpc
diff --git a/roles/sap_ha_pacemaker_cluster/vars/platform_vm_ibmcloud_power.yml b/roles/sap_ha_pacemaker_cluster/vars/platform_hyp_ibmpower_lpar.yml
similarity index 82%
rename from roles/sap_ha_pacemaker_cluster/vars/platform_vm_ibmcloud_power.yml
rename to roles/sap_ha_pacemaker_cluster/vars/platform_hyp_ibmpower_lpar.yml
index 681078979..4b75948e9 100644
--- a/roles/sap_ha_pacemaker_cluster/vars/platform_vm_ibmcloud_power.yml
+++ b/roles/sap_ha_pacemaker_cluster/vars/platform_hyp_ibmpower_lpar.yml
@@ -1,5 +1,5 @@
---
-# Variables specific on IBM Power platforms
+# Variables specific on IBM Power hypervisor
# TODO: rename this file to match the actual "chassis_asset_tag" output
# TODO: make sure to first respect 'ha_cluster' native variables
sap_ha_pacemaker_cluster_fence_agent_packages:
diff --git a/roles/sap_hana_install/tasks/pre_install/hdblcm_configfile.yml b/roles/sap_hana_install/tasks/pre_install/hdblcm_configfile.yml
index 2c086030a..6e807c63a 100644
--- a/roles/sap_hana_install/tasks/pre_install/hdblcm_configfile.yml
+++ b/roles/sap_hana_install/tasks/pre_install/hdblcm_configfile.yml
@@ -40,6 +40,21 @@
ansible.builtin.debug:
msg: "Output of hdblcm command: {{ __sap_hana_install_register_hdblcm_output.stdout_lines }}"
+# The following task creates a Jinja2 template from the hdblcm configfile template. This Jinja2 template is later used to
+# create the final hdblcm configfile. The task below works as follows:
+# - At the beginning, some header lines are created so that it is easy to identify how the template, and later the hdblcm configfile,
+# had been created.
+# - Each line from the hdblcm configfile template not starting with [a-z], that is each empty line and each line starting with a comment,
+# is just put into the Jinja2 template unmodified.
+# - Each line from the hdblcm configfile template starting with [a-z], that is each line containing an hdblcm variable, is processed
+# as follows:
+# - The original hdblbm parameter is printed, followed by the string "={{ sap_hana_install_", followed by the hdblcm parameter again,
+# then followed by " | d('" (meaning the Jinja2 'default' filter), followed by any default which might be present in the
+# hdblcm configfile template, followed by "') }}". By this, we achieve the following:
+# 1) If a role variable for the hdblcm configfile is set in the playbook or inventory (e.g. "sap_hana_install_max_mem"), its value
+# will be used to override the corresponding hdblcm configfile parameter (e.g. "max_mem").
+# 2) If a role variable for the hdblcm configfile is not set in the playbook or inventory, either the default value which is set
+# in the hdblcm configfile template will be used, or an empty string.
- name: SAP HANA Pre Install - Create a Jinja2 template from the hdblcm configfile template
ansible.builtin.shell: |
set -o pipefail &&
diff --git a/roles/sap_hana_preconfigure/defaults/main.yml b/roles/sap_hana_preconfigure/defaults/main.yml
index d565184b5..64f2b172c 100644
--- a/roles/sap_hana_preconfigure/defaults/main.yml
+++ b/roles/sap_hana_preconfigure/defaults/main.yml
@@ -7,9 +7,9 @@
#debuglevel: 3
# For executing just some of the configuration steps,
-# 1 - set sap_hana_preconfigure_config_all to "no" (default is "yes"),
-# 2 - set sap_hana_preconfigure_installation or sap_hana_preconfigure_configuration, or both, to "yes" (default for both is "no")
-# 3 - and set one or more of the SAP notes related variables to "yes":
+# 1 - set sap_hana_preconfigure_config_all to `no` (default is `yes`),
+# 2 - set sap_hana_preconfigure_installation or sap_hana_preconfigure_configuration, or both, to `yes` (default for both is `no`)
+# 3 - and set one or more of the SAP notes related variables to `yes`:
#sap_hana_preconfigure_config_all: no
#sap_hana_preconfigure_installation: yes
#sap_hana_preconfigure_configuration: yes
@@ -30,10 +30,10 @@
# Perform an assertion run:
sap_hana_preconfigure_assert: no
-# In case of an assertion run, if set to "yes", the role will abort for any assertion error:
+# In case of an assertion run, if set to `yes`, the role will abort for any assertion error:
sap_hana_preconfigure_assert_ignore_errors: no
-# In case of an assertion run, if set to "yes", check all configuration steps no matter if tuned or static configuration has been selected:
+# In case of an assertion run, if set to `yes`, check all configuration steps no matter if tuned or static configuration has been selected:
sap_hana_preconfigure_assert_all_config: no
# Set which Ansible Collection to use for the Linux System Roles.
@@ -47,7 +47,7 @@ sap_hana_preconfigure_min_rhel_release_check: yes
# supported RHEL minor releases for SAP HANA:
sap_hana_preconfigure_supported_rhel_minor_releases: "{{ __sap_hana_preconfigure_supported_rhel_minor_releases }}"
-# Set to "yes" if you want the role to enable SAP HANA repos. The default is "no".
+# Set to `yes` if you want the role to enable SAP HANA repos. The default is `no`.
sap_hana_preconfigure_enable_sap_hana_repos: no
# Change one or more of the following in case you want different repos to be enabled than defined in vars.
@@ -58,7 +58,7 @@ sap_hana_preconfigure_req_repos_redhat_8_ppc64le: "{{ __sap_hana_preconfigure_re
sap_hana_preconfigure_req_repos_redhat_9_x86_64: "{{ __sap_hana_preconfigure_req_repos_redhat_9_x86_64 }}"
sap_hana_preconfigure_req_repos_redhat_9_ppc64le: "{{ __sap_hana_preconfigure_req_repos_redhat_9_ppc64le }}"
-# Set to "yes" if you want the role to set the RHEL minor release, which is required for SAP HANA. Default is "no".
+# Set to `yes` if you want the role to set the RHEL minor release, which is required for SAP HANA. Default is `no`.
sap_hana_preconfigure_set_minor_release: no
# Set to 'no' if you do not want the SAP HANA directories to be created by the role. Default is 'yes'.
@@ -95,13 +95,13 @@ sap_hana_preconfigure_packages: "{{ __sap_hana_preconfigure_packages }}"
# Set to no if you want to ignore these requirements.
sap_hana_preconfigure_min_package_check: yes
-# Set the following variable to "yes" if you want to run "yum update" during the installation part:
+# Set the following variable to `yes` if you want to run "yum update" during the installation part:
sap_hana_preconfigure_update: no
-# Set the following variable to "yes" if you want the role to reboot the server if necessary:
+# Set the following variable to `yes` if you want the role to reboot the server if necessary:
sap_hana_preconfigure_reboot_ok: no
-# Set the following variable to "no" if you want the role to not fail if a reboot is required:
+# Set the following variable to `no` if you want the role to not fail if a reboot is required:
sap_hana_preconfigure_fail_if_reboot_required: yes
###
@@ -130,9 +130,16 @@ sap_hana_preconfigure_use_netapp_settings_nfs: no
sap_hana_preconfigure_use_netapp_settings_nfsv3: no
+# Set the following variable to 'no' if you do not want to install the IBM Power Systems service and productivity tools:
+sap_hana_preconfigure_install_ibm_power_tools: yes
+
+# Set the following variable to 'no' if you do not want to add the IBM Power tools repository (e.g. because the packages
+# are already available on the local network). Note that the IBM Power Systems service and productivity tools will only
+# be installed if the variable sap_hana_preconfigure_install_ibm_power_tools is set to `yes`, which is the default.
sap_hana_preconfigure_add_ibm_power_repo: yes
# sap_hana_preconfigure_ibm_power_repo_url: 'http://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-3.0.0-19.noarch.rpm'
+# sap_hana_preconfigure_ibm_power_repo_url: 'https://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-latest.noarch.rpm'
sap_hana_preconfigure_ibm_power_repo_url: "{{ __sap_hana_preconfigure_ibm_power_repo_url }}"
#### The following parameters are for PPC LE only
diff --git a/roles/sap_hana_preconfigure/tasks/RedHat/installation.yml b/roles/sap_hana_preconfigure/tasks/RedHat/installation.yml
index 30ce97cc6..ca8ede591 100644
--- a/roles/sap_hana_preconfigure/tasks/RedHat/installation.yml
+++ b/roles/sap_hana_preconfigure/tasks/RedHat/installation.yml
@@ -78,12 +78,14 @@
disable_gpg_check: True
when:
- ansible_architecture == "ppc64le"
+ - sap_hana_preconfigure_install_ibm_power_tools | d(true)
- sap_hana_preconfigure_add_ibm_power_repo | d(true)
- name: Accept the license for the IBM Service and Productivity Tools
ansible.builtin.shell: LESS=+q /opt/ibm/lop/configure <<<'y'
when:
- ansible_architecture == "ppc64le"
+ - sap_hana_preconfigure_install_ibm_power_tools | d(true)
- sap_hana_preconfigure_add_ibm_power_repo | d(true)
# Reason for noqa: Both yum and dnf support "state: latest"
@@ -91,7 +93,9 @@
ansible.builtin.package:
state: latest
name: "{{ __sap_hana_preconfigure_required_ppc64le }}"
- when: ansible_architecture == "ppc64le"
+ when:
+ - ansible_architecture == "ppc64le"
+ - sap_hana_preconfigure_install_ibm_power_tools | d(true)
# The package module is sufficient to guarantee that the required packages are installed.
# So there is no need to display the installed packages.
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302.yml
new file mode 100644
index 000000000..984f8246d
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302.yml
@@ -0,0 +1,51 @@
+---
+- name: Configure - Display SAP note number 3108302 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_hana_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3108302$') | first).number }}
+ (version {{ (__sap_hana_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3108302$') | first).version }}): SAP HANA settings for RHEL 8"
+
+- name: Import tasks from '3108302/01-configure-selinux.yml'
+ ansible.builtin.import_tasks: 3108302/01-configure-selinux.yml
+ when:
+ - sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_01|d(false)
+ - sap_hana_preconfigure_modify_selinux_labels
+
+- name: Import tasks from '3108302/02-configure-tuned.yml'
+ ansible.builtin.import_tasks: 3108302/02-configure-tuned.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_02|d(false)
+
+- name: Import tasks from '3108302/03-disable-abrt-coredumps-kdump.yml'
+ ansible.builtin.import_tasks: 3108302/03-disable-abrt-coredumps-kdump.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_03|d(false)
+
+- name: Import tasks from '3108302/04-turn-off-auto-numa-balancing.yml'
+ ansible.builtin.import_tasks: 3108302/04-turn-off-auto-numa-balancing.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_04|d(false)
+
+- name: Import tasks from '3108302/05-disable-thp.yml'
+ ansible.builtin.import_tasks: 3108302/05-disable-thp.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_05|d(false)
+
+- name: Import tasks from '3108302/06-configure-c-states-for-lower-latency.yml'
+ ansible.builtin.import_tasks: 3108302/06-configure-c-states-for-lower-latency.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_06|d(false)
+
+- name: Import tasks from '3108302/07-configure-cpu-governor.yml'
+ ansible.builtin.import_tasks: 3108302/07-configure-cpu-governor.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_07|d(false)
+
+- name: Import tasks from '3108302/08-configure-epb.yml'
+ ansible.builtin.import_tasks: 3108302/08-configure-epb.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_08|d(false)
+
+- name: Import tasks from '3108302/09-disable-ksm.yml'
+ ansible.builtin.import_tasks: 3108302/09-disable-ksm.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_09|d(false)
+
+- name: Import tasks from '3108302/10-increase-pidmax.yml'
+ ansible.builtin.import_tasks: 3108302/10-increase-pidmax.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_10|d(false)
+
+- name: Import tasks from '3108302/11-enable-tsx.yml'
+ ansible.builtin.import_tasks: 3108302/11-enable-tsx.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_11|d(false)
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/01-assert-selinux.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/01-assert-selinux.yml
new file mode 100644
index 000000000..7113eef72
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/01-assert-selinux.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108302-1
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 1: Configure SELinux"
+
+- name: Import ../../RedHat/generic/assert-selinux.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-selinux.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/01-configure-selinux.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/01-configure-selinux.yml
new file mode 100644
index 000000000..ec9812923
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/01-configure-selinux.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108302-1
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 1: Configure SELinux"
+
+- name: Import ../../RedHat/generic/configure-selinux.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-selinux.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/02-assert-tuned.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/02-assert-tuned.yml
new file mode 100644
index 000000000..ba912890c
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/02-assert-tuned.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108302-2
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 2: Configure tuned to use profile sap-hana"
+
+- name: Import ../../RedHat/generic/assert-tuned.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-tuned.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/02-configure-tuned.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/02-configure-tuned.yml
new file mode 100644
index 000000000..e766b63bd
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/02-configure-tuned.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108302-2
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 2: Configure tuned to use profile for SAP HANA"
+
+- name: Import ../../RedHat/generic/configure-tuned.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-tuned.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/03-assert-abrt-coredumps-kdump.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/03-assert-abrt-coredumps-kdump.yml
new file mode 100644
index 000000000..86ba78076
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/03-assert-abrt-coredumps-kdump.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108302-3
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 3: Disable kdump"
+
+- name: Import ../../RedHat/generic/assert-kdump.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-kdump.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/03-disable-abrt-coredumps-kdump.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/03-disable-abrt-coredumps-kdump.yml
new file mode 100644
index 000000000..228a32783
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/03-disable-abrt-coredumps-kdump.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108302-3
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 3: Disable kdump"
+
+- name: Import ../../RedHat/generic/disable-kdump.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/disable-kdump.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/04-assert-auto-numa-balancing.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/04-assert-auto-numa-balancing.yml
new file mode 100644
index 000000000..d3abd862e
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/04-assert-auto-numa-balancing.yml
@@ -0,0 +1,9 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "kernel.numa_balancing = 0"
+- name: Assert 3108302-4
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 4: Turn off auto-numa balancing"
+
+- name: Import ../../RedHat/generic/assert-auto-numa-balancing.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-auto-numa-balancing.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/04-turn-off-auto-numa-balancing.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/04-turn-off-auto-numa-balancing.yml
new file mode 100644
index 000000000..3250fa04f
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/04-turn-off-auto-numa-balancing.yml
@@ -0,0 +1,9 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "kernel.numa_balancing = 0"
+- name: Configure 3108302-4
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 4: Turn off auto-numa balancing"
+
+- name: Import ../../RedHat/generic/turn-off-auto-numa-balancing.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/turn-off-auto-numa-balancing.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/05-assert-thp.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/05-assert-thp.yml
new file mode 100644
index 000000000..a2d0f88b9
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/05-assert-thp.yml
@@ -0,0 +1,9 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "transparent_hugepages=never"
+- name: Assert 3108302-5
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 5: Disable Transparent Hugepages (THP)"
+
+- name: Import ../../RedHat/generic/assert-thp.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-thp.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/05-disable-thp.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/05-disable-thp.yml
new file mode 100644
index 000000000..d280bacc0
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/05-disable-thp.yml
@@ -0,0 +1,9 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "transparent_hugepages=never"
+- name: Configure 3108302-5
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 5: Disable Transparent Hugepages (THP)"
+
+- name: Import ../../RedHat/generic/disable-thp.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/disable-thp.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/06-assert-c-states-for-lower-latency.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/06-assert-c-states-for-lower-latency.yml
new file mode 100644
index 000000000..fd9171ffc
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/06-assert-c-states-for-lower-latency.yml
@@ -0,0 +1,9 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "force_latency=70"
+- name: Assert 3108302-6
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 6: Configure C-States for lower latency (x86_64 platform only)"
+
+- name: Import ../../RedHat/generic/assert-c-states-for-lower-latency.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-c-states-for-lower-latency.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/06-configure-c-states-for-lower-latency.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/06-configure-c-states-for-lower-latency.yml
new file mode 100644
index 000000000..53de721d0
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/06-configure-c-states-for-lower-latency.yml
@@ -0,0 +1,9 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "force_latency=70"
+- name: Configure 3108302-6
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 6: Configure C-States for lower latency (x86_64 platform only)"
+
+- name: Import ../../RedHat/generic/configure-c-states-for-lower-latency.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-c-states-for-lower-latency.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/07-assert-cpu-governor.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/07-assert-cpu-governor.yml
new file mode 100644
index 000000000..5e1c131f1
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/07-assert-cpu-governor.yml
@@ -0,0 +1,10 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "governor=performance"
+# in included tuned profile throughput-performance
+- name: Assert 3108302-7
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 7: Configure CPU Governor for performance (x86_64 platform only)"
+
+- name: Import ../../RedHat/generic/assert-cpu-governor-for-performance.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-cpu-governor-for-performance.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/07-configure-cpu-governor.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/07-configure-cpu-governor.yml
new file mode 100644
index 000000000..ad1fddfbf
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/07-configure-cpu-governor.yml
@@ -0,0 +1,10 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "governor=performance"
+# in included tuned profile throughput-performance
+- name: Configure 3108302-7
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 7: Configure CPU Governor for performance (x86_64 platform only)"
+
+- name: Import ../../RedHat/generic/configure-cpu-governor-for-performance.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-cpu-governor-for-performance.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/08-assert-epb.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/08-assert-epb.yml
new file mode 100644
index 000000000..92636137d
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/08-assert-epb.yml
@@ -0,0 +1,10 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "energy_perf_bias=performance"
+# in included tuned profile throughput-performance
+- name: Assert 3108302-8
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 8: Configure Energy Performance Bias (EPB, x86_64 platform only)"
+
+- name: Import ../../RedHat/generic/assert-epb.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-epb.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/08-configure-epb.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/08-configure-epb.yml
new file mode 100644
index 000000000..cfad92ada
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/08-configure-epb.yml
@@ -0,0 +1,10 @@
+---
+
+# can be configured by tuned profile sap-hana, entry "energy_perf_bias=performance"
+# in included tuned profile throughput-performance
+- name: Configure 3108302-8
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 8: Configure Energy Performance Bias (EPB, x86_64 platform only)"
+
+- name: Import ../../RedHat/generic/configure-epb.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/configure-epb.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/09-assert-ksm.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/09-assert-ksm.yml
new file mode 100644
index 000000000..114b551ed
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/09-assert-ksm.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108302-9
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 9: Disable Kernel samepage merging (KSM)"
+
+- name: Import ../../RedHat/generic/assert-ksm.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-ksm.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/09-disable-ksm.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/09-disable-ksm.yml
new file mode 100644
index 000000000..a8416b8a8
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/09-disable-ksm.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108302-9
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 9: Disable Kernel samepage merging (KSM)"
+
+- name: Import ../../RedHat/generic/disable-ksm.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/disable-ksm.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/10-assert-pidmax.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/10-assert-pidmax.yml
new file mode 100644
index 000000000..6fa9f56c0
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/10-assert-pidmax.yml
@@ -0,0 +1,9 @@
+---
+
+- name: Assert 3108302-10
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 10: Increase kernel.pidmax"
+
+- name: Notify about where 'kernel.pidmax' is asserted
+ ansible.builtin.debug:
+ msg: "INFO: Kernel parameter 'kernel.pid_max' is already asserted by role 'sap_general_preconfigure' if necessary."
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/10-increase-pidmax.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/10-increase-pidmax.yml
new file mode 100644
index 000000000..d4962aeb2
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/10-increase-pidmax.yml
@@ -0,0 +1,9 @@
+---
+
+- name: Configure 3108302-10
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 10: Increase kernel.pidmax"
+
+- name: Notify about where 'kernel.pid_max' is set
+ ansible.builtin.debug:
+ msg: "Kernel parameter 'kernel.pid_max' is already set by role 'sap_general_preconfigure' if necessary."
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/11-assert-tsx.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/11-assert-tsx.yml
new file mode 100644
index 000000000..2210cc460
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/11-assert-tsx.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Assert 3108302-11
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 11: Enable TSX (Intel Transactional Synchronization Extensions)"
+
+- name: Import ../../RedHat/generic/assert-tsx.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/assert-tsx.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/3108302/11-enable-tsx.yml b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/11-enable-tsx.yml
new file mode 100644
index 000000000..55ec8538a
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/3108302/11-enable-tsx.yml
@@ -0,0 +1,8 @@
+---
+
+- name: Configure 3108302-11
+ ansible.builtin.debug:
+ msg: "SAP note 3108302 Step 11: Enable TSX (Intel Transactional Synchronization Extensions)"
+
+- name: Import ../../RedHat/generic/enable-tsx.yml
+ ansible.builtin.import_tasks: ../../RedHat/generic/enable-tsx.yml
diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/assert-3108302.yml b/roles/sap_hana_preconfigure/tasks/sapnote/assert-3108302.yml
new file mode 100644
index 000000000..1727a0c5b
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tasks/sapnote/assert-3108302.yml
@@ -0,0 +1,51 @@
+---
+- name: Assert - Display SAP note number 3108302 and its version
+ ansible.builtin.debug:
+ msg: "SAP note {{ (__sap_hana_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3108302$') | first).number }}
+ (version {{ (__sap_hana_preconfigure_sapnotes_versions | selectattr('number', 'match', '^3108302$') | first).version }}): SAP HANA settings for RHEL 8"
+
+- name: Import tasks from '3108302/01-assert-selinux.yml'
+ ansible.builtin.import_tasks: 3108302/01-assert-selinux.yml
+ when:
+ - sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_01|d(false)
+ - sap_hana_preconfigure_modify_selinux_labels
+
+- name: Import tasks from '3108302/02-assert-tuned.yml'
+ ansible.builtin.import_tasks: 3108302/02-assert-tuned.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_02|d(false)
+
+- name: Import tasks from '3108302/03-assert-abrt-coredumps-kdump.yml'
+ ansible.builtin.import_tasks: 3108302/03-assert-abrt-coredumps-kdump.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_03|d(false)
+
+- name: Import tasks from '3108302/04-assert-auto-numa-balancing.yml'
+ ansible.builtin.import_tasks: 3108302/04-assert-auto-numa-balancing.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_04|d(false)
+
+- name: Import tasks from '3108302/05-assert-thp.yml'
+ ansible.builtin.import_tasks: 3108302/05-assert-thp.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_05|d(false)
+
+- name: Import tasks from '3108302/06-assert-c-states-for-lower-latency.yml'
+ ansible.builtin.import_tasks: 3108302/06-assert-c-states-for-lower-latency.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_06|d(false)
+
+- name: Import tasks from '3108302/07-assert-cpu-governor.yml'
+ ansible.builtin.import_tasks: 3108302/07-assert-cpu-governor.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_07|d(false)
+
+- name: Import tasks from '3108302/08-assert-epb.yml'
+ ansible.builtin.import_tasks: 3108302/08-assert-epb.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_08|d(false)
+
+- name: Import tasks from '3108302/09-assert-ksm.yml'
+ ansible.builtin.import_tasks: 3108302/09-assert-ksm.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_09|d(false)
+
+- name: Import tasks from '3108302/10-assert-pidmax.yml'
+ ansible.builtin.import_tasks: 3108302/10-assert-pidmax.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_10|d(false)
+
+- name: Import tasks from '3108302/11-assert-tsx.yml'
+ ansible.builtin.import_tasks: 3108302/11-assert-tsx.yml
+ when: sap_hana_preconfigure_config_all|d(true) or sap_hana_preconfigure_3108302_11|d(false)
diff --git a/roles/sap_hana_preconfigure/vars/RedHat_7.yml b/roles/sap_hana_preconfigure/vars/RedHat_7.yml
index c84870649..182813add 100644
--- a/roles/sap_hana_preconfigure/vars/RedHat_7.yml
+++ b/roles/sap_hana_preconfigure/vars/RedHat_7.yml
@@ -161,7 +161,8 @@ __sap_hana_preconfigure_packages:
# libtool-ltdl: See https://answers.sap.com/questions/476177/hana-db-installation-ended-with-exit-code-127.html
# This is required since HANA 2 SPS 03, and so we always install it.
-__sap_hana_preconfigure_ibm_power_repo_url: 'http://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-latest.noarch.rpm'
+# URL for the IBM Power Systems service and productivity tools, see https://www.ibm.com/support/pages/service-and-productivity-tools
+__sap_hana_preconfigure_ibm_power_repo_url: 'https://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-latest.noarch.rpm'
# As per https://www14.software.ibm.com/support/customercare/sas/f/lopdiags/home.html :
__sap_hana_preconfigure_required_ppc64le:
diff --git a/roles/sap_hana_preconfigure/vars/RedHat_8.yml b/roles/sap_hana_preconfigure/vars/RedHat_8.yml
index 2f925ca95..0c14deb62 100644
--- a/roles/sap_hana_preconfigure/vars/RedHat_8.yml
+++ b/roles/sap_hana_preconfigure/vars/RedHat_8.yml
@@ -121,13 +121,13 @@ __sap_hana_preconfigure_req_repos_redhat_8_10_ppc64le:
# required SAP notes for RHEL 8:
__sap_hana_preconfigure_sapnotes_versions_x86_64:
- - { number: '2777782', version: '33' }
+ - { number: '2777782', version: '40' }
- { number: '2382421', version: '40' }
- { number: '3024346', version: '3' }
__sap_hana_preconfigure_sapnotes_versions_ppc64le:
- { number: '2055470', version: '87' }
- - { number: '2777782', version: '33' }
+ - { number: '2777782', version: '40' }
- { number: '2382421', version: '40' }
- { number: '3024346', version: '3' }
@@ -145,7 +145,6 @@ __sap_hana_preconfigure_min_packages_8_0_x86_64:
__sap_hana_preconfigure_min_packages_8_0_ppc64le:
- [ 'kernel', '4.18.0-80.15.1.el8_0' ]
-# Minimum required package levels for RHEL 8.1:
__sap_hana_preconfigure_min_packages_8_1_x86_64:
- [ 'kernel', '4.18.0-147.5.1.el8_1' ]
@@ -265,12 +264,8 @@ __sap_hana_preconfigure_packages_min_install:
# SAP NOTE 2777782:
- tuned-profiles-sap-hana
-# The packages for RHEL8 are almost the same as for RHEL7.
-# IBM publishes the packages as a repository here:
-# https://public.dhe.ibm.com/software/server/POWER/Linux/yum/OSS/RHEL/8/ppc64le/
-# To install the packages, you need to create an appropriate repofile
-# or clone this repository (e.g. with Satellite product)
-__sap_hana_preconfigure_ibm_power_repo_url: 'http://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-latest.noarch.rpm'
+# URL for the IBM Power Systems service and productivity tools, see https://www.ibm.com/support/pages/service-and-productivity-tools
+__sap_hana_preconfigure_ibm_power_repo_url: 'https://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-latest.noarch.rpm'
__sap_hana_preconfigure_required_ppc64le:
- librtas
@@ -294,9 +289,8 @@ __sap_hana_preconfigure_required_ppc64le:
- libservicelog
- servicelog
- powerpc-utils
-# - powerpc-utils-python # this package is no longer available for RHEL 8
- ppc64-diag
-# - IBMinvscout # this package is no longer available for RHEL 8
+ - IBMinvscout
# Network related kernel parameters as set in SAP Note 2382421:
__sap_hana_preconfigure_kernel_parameters_default:
diff --git a/roles/sap_hana_preconfigure/vars/RedHat_9.yml b/roles/sap_hana_preconfigure/vars/RedHat_9.yml
index 2679c1da5..342913caa 100644
--- a/roles/sap_hana_preconfigure/vars/RedHat_9.yml
+++ b/roles/sap_hana_preconfigure/vars/RedHat_9.yml
@@ -117,13 +117,13 @@ __sap_hana_preconfigure_req_repos_redhat_9_10_ppc64le:
# required SAP notes for RHEL 9:
__sap_hana_preconfigure_sapnotes_versions_x86_64:
- - { number: '2777782', version: '33' }
+ - { number: '3108302', version: '3' }
- { number: '2382421', version: '40' }
- { number: '3024346', version: '3' }
__sap_hana_preconfigure_sapnotes_versions_ppc64le:
- { number: '2055470', version: '87' }
- - { number: '2777782', version: '33' }
+ - { number: '3108302', version: '3' }
- { number: '2382421', version: '40' }
- { number: '3024346', version: '3' }
@@ -136,10 +136,11 @@ __sap_hana_preconfigure_sapnotes_versions: "{{ lookup('vars', '__sap_hana_precon
# Minimum required package levels for RHEL 9.0:
__sap_hana_preconfigure_min_packages_9_0_x86_64:
- - [ 'kernel', '5.14.0-70.13.1.el9_0' ]
+ - [ 'kernel', '5.14.0-70.22.1.el9_0' ]
__sap_hana_preconfigure_min_packages_9_0_ppc64le:
- - [ 'kernel', '5.14.0-70.13.1.el9_0' ]
+ - [ 'kernel', '5.14.0-70.43.1.el9_0' ]
+ - [ 'glibc', '2.34-28.el9_0.3' ]
__sap_hana_preconfigure_min_packages_9_1_x86_64:
@@ -176,93 +177,65 @@ __sap_hana_preconfigure_min_packages_9_8_ppc64le:
__sap_hana_preconfigure_min_pkgs: "{{ lookup('vars', '__sap_hana_preconfigure_min_packages_' + ansible_distribution_version | string | replace(\".\", \"_\") + '_' + ansible_architecture) }}"
__sap_hana_preconfigure_packages:
-# SAP NOTE 2772999:
-# package chkconfig: chkconfig command needed by the SAP HANA installer
- - chkconfig
+# SAP NOTE 3108316:
- expect
+# package gtk2: only needed if the SAP HANA installation tools hdblcmgui and hdbsetup are used
+ - gtk2
+ - krb5-workstation
+ - libatomic
+ - libcanberra-gtk2
+ - libtool-ltdl
+ - numactl
+ - PackageKit-gtk3-module
+ - xorg-x11-xauth
+# package chkconfig: needed by hdblcm to be able to access /etc/init.d
+ - chkconfig
+# package compat-openssl11: needed for HANA scale-out and when configuring HANA backup on Azure
+ - compat-openssl11
+# required for SAP HANA on RHEL 9:
+ - libxcrypt-compat
+# For support purposes:
# package graphwiz: graph visualization toos, for supportability)
- graphviz
# package iptraf-ng: TCP/IP network monitor, for supportability)
- iptraf-ng
- - krb5-workstation
- - libatomic
- - libcanberra-gtk2
- - libibverbs
- - libicu
-# package libpng12: only needed by the SAP HANA 1 installer
-# - libpng12
# package lm-sensors: TCP/IP network monitor, for supportability)
- lm_sensors
# package nfs-utils: support utilities for NFS, for supportability)
- nfs-utils
+# SAP NOTE 3108302:
+ - tuned-profiles-sap-hana
+
+__sap_hana_preconfigure_packages_min_install:
+# SAP NOTE 3108316:
+ - expect
+# package gtk2: only needed if the SAP HANA installation tools hdblcmgui and hdbsetup are used
+# - gtk2
+ - krb5-workstation
+ - libatomic
+ - libcanberra-gtk2
+ - libtool-ltdl
- numactl
- PackageKit-gtk3-module
- xorg-x11-xauth
- - bind-utils
- - cairo
- - libaio
- - krb5-libs
-# package net-tools: contains deprecated command line network interface management tools
- - net-tools
- - openssl
- - rsyslog
- - sudo
- - xfsprogs
-# package gtk2: only needed if the SAP HANA installation tools hdblcmgui and hdbsetup are used
- - gtk2
- - libtool-ltdl
-# SAP NOTE 2777782:
- - tuned-profiles-sap-hana
+# package compat-openssl11: needed for HANA scale-out and when configuring HANA backup on Azure
+ - compat-openssl11
# required for SAP HANA on RHEL 9:
- libxcrypt-compat
-
-__sap_hana_preconfigure_packages_min_install:
-# SAP NOTE 2772999:
-# package chkconfig: chkconfig command needed by the SAP HANA installer
- - chkconfig
- - expect
+# For support purposes:
# package graphwiz: graph visualization toos, for supportability)
# - graphviz
# package iptraf-ng: TCP/IP network monitor, for supportability)
# - iptraf-ng
- - krb5-workstation
- - libatomic
- - libcanberra-gtk2
- - libibverbs
- - libicu
-# package libpng12: only needed by the SAP HANA 1 installer
-# - libpng12
# package lm-sensors: TCP/IP network monitor, for supportability)
# - lm_sensors
# package nfs-utils: support utilities for NFS, for supportability)
# - nfs-utils
- - numactl
- - PackageKit-gtk3-module
- - xorg-x11-xauth
- - bind-utils
- - cairo
- - libaio
- - krb5-libs
-# package net-tools: contains deprecated command line network interface management tools
-# - net-tools
- - openssl
- - rsyslog
- - sudo
- - xfsprogs
-# package gtk2: only needed if the SAP HANA installation tools hdblcmgui and hdbsetup are used
-# - gtk2
- - libtool-ltdl
-# SAP NOTE 2777782:
+# SAP NOTE 3108302:
- tuned-profiles-sap-hana
-# required for SAP HANA on RHEL 9:
- - libxcrypt-compat
-# The packages for RHEL8 are almost the same as for RHEL7.
-# IBM publishes the packages as a repository here:
-# https://public.dhe.ibm.com/software/server/POWER/Linux/yum/OSS/RHEL/8/ppc64le/
-# To install the packages, you need to create an appropriate repofile
-# or clone this repository (e.g. with Satellite product)
-__sap_hana_preconfigure_ibm_power_repo_url: 'http://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-latest.noarch.rpm'
+# URL for the IBM Power Systems service and productivity tools, see https://www.ibm.com/support/pages/service-and-productivity-tools
+__sap_hana_preconfigure_ibm_power_repo_url: 'https://public.dhe.ibm.com/software/server/POWER/Linux/yum/download/ibm-power-repo-latest.noarch.rpm'
__sap_hana_preconfigure_required_ppc64le:
- librtas
@@ -286,9 +259,8 @@ __sap_hana_preconfigure_required_ppc64le:
- libservicelog
- servicelog
- powerpc-utils
-# - powerpc-utils-python # this package is no longer available for RHEL 9
- ppc64-diag
-# - IBMinvscout # this package is no longer available for RHEL 9
+ - IBMinvscout
# Network related kernel parameters as set in SAP Note 2382421:
__sap_hana_preconfigure_kernel_parameters_default:
diff --git a/roles/sap_install_media_detect/tasks/detect_export_sapsolman_abap.yml b/roles/sap_install_media_detect/tasks/detect_export_sapsolman_abap.yml
new file mode 100644
index 000000000..6cb9514fc
--- /dev/null
+++ b/roles/sap_install_media_detect/tasks/detect_export_sapsolman_abap.yml
@@ -0,0 +1,94 @@
+---
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - Create Directories
+ ansible.builtin.file:
+ path: "{{ item }}"
+ state: directory
+ mode: '0755'
+ owner: root
+ group: root
+ with_items:
+ - "{{ sap_install_media_detect_directory }}/sapnwas_abap_export/"
+ - "{{ sap_install_media_detect_directory }}/sapsolman_abap_export_extracted/"
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - List files in directory
+ ansible.builtin.shell: ls -1
+ register: detect_directory_files
+ args:
+ chdir: "{{ sap_install_media_detect_directory }}"
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - Detect ZIP files (including no file extensions), ignore errors
+ ansible.builtin.shell: if [ ! -z "$(file {{ item }} | grep 'Zip archive data')" ]; then echo {{ item }}; fi
+ register: detect_directory_files_zip
+# changed_when: "item.stdout | length > 0"
+ with_items:
+ - "{{ detect_directory_files.stdout_lines }}"
+ args:
+ chdir: "{{ sap_install_media_detect_directory }}"
+ ignore_errors: true
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - Identify EXPORT files
+ ansible.builtin.shell: |
+ if [ ! -z "$(file {{ item }} | grep 'Zip archive data')" ]; then if zipinfo -1 {{ item }} | grep -q 'DATA_UNITS/EXP' ; then echo '{{ item }}' ; fi ; fi
+ register: detect_directory_files_nwas_abap_export
+ changed_when: "item | length > 0"
+ with_items:
+ - "{{ detect_directory_files_zip.results | map(attribute='stdout') | select() }}"
+ args:
+ chdir: "{{ sap_install_media_detect_directory }}"
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - If any ZIP, then extract the SAP NetWeaver (ABAP) Installation Export file (unzip)
+ ansible.builtin.shell: if [ ! -z "$(file {{ item }} | grep 'Zip archive data')" ]; then unzip {{ item }} -d ./sapsolman_abap_export_extracted/{{ item }} ; fi
+ with_items:
+ - "{{ detect_directory_files_nwas_abap_export.results | map(attribute='stdout') | select() }}"
+ args:
+ chdir: "{{ sap_install_media_detect_directory }}"
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - Identify EXPORT extracted
+ ansible.builtin.find:
+ paths: "{{ sap_install_media_detect_directory }}/sapsolman_abap_export_extracted"
+ recurse: yes
+ file_type: directory
+# contains: "DATA_UNITS"
+ patterns: '.*DATA_UNITS.*'
+ use_regex: yes
+ register: detect_directory_export_extracted
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - Local Directory source - re-list files in directory
+ ansible.builtin.shell: ls -1
+ register: detect_directory_files
+ args:
+ chdir: "{{ sap_install_media_detect_directory }}"
+ when:
+ - sap_install_media_detect_source == "local_dir"
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - Local Directory source - re-detect ZIP files (including no file extensions), ignore errors
+ ansible.builtin.shell: if [ ! -z "$(file {{ item }} | grep 'Zip archive data')" ]; then echo {{ item }}; fi
+ register: detect_directory_files_zip_repeated
+# changed_when: "item.stdout | length > 0"
+ with_items:
+ - "{{ detect_directory_files.stdout_lines }}"
+ args:
+ chdir: "{{ sap_install_media_detect_directory }}"
+ ignore_errors: true
+ when:
+ - sap_install_media_detect_source == "local_dir"
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - Local Directory source - re-identify EXPORT files
+ ansible.builtin.shell: |
+ if [ ! -z "$(file {{ item }} | grep 'Zip archive data')" ]; then if zipinfo -1 {{ item }} | grep -q 'DATA_UNITS/EXP' ; then echo '{{ item }}' ; fi ; fi
+ register: detect_directory_files_nwas_abap_export_repeated
+ changed_when: "item | length > 0"
+ with_items:
+ - "{{ detect_directory_files_zip_repeated.results | map(attribute='stdout') | select() }}"
+ args:
+ chdir: "{{ sap_install_media_detect_directory }}"
+ when:
+ - sap_install_media_detect_source == "local_dir"
+
+- name: SAP Install Media Detect - SAP Solution Manager (ABAP) EXPORT - Local Directory source - move EXPORT compressed archive files
+ command: mv "{{ sap_install_media_detect_directory }}/{{ item }}" "{{ sap_install_media_detect_directory }}/sapnwas_abap_export/{{ item }}"
+ with_items:
+ - "{{ detect_directory_files_nwas_abap_export_repeated.results | map(attribute='stdout') | select() }}"
+ when:
+ - sap_install_media_detect_source == "local_dir"
diff --git a/roles/sap_install_media_detect/tasks/main.yml b/roles/sap_install_media_detect/tasks/main.yml
index 9d36ede2a..a177dc461 100644
--- a/roles/sap_install_media_detect/tasks/main.yml
+++ b/roles/sap_install_media_detect/tasks/main.yml
@@ -96,6 +96,11 @@
when:
- sap_install_media_detect_export == "sapnwas_java"
+- name: SAP Install Media Detect - EXPORT files for SAP Solution Manager (ABAP)
+ include_tasks: "detect_export_sapsolman_abap.yml"
+ when:
+ - sap_install_media_detect_export == "sapsolman_abap"
+
- name: SAP Install Media Detection Completed - set global vars for subsequent Ansible Tasks
include_tasks: "set_global_vars.yml"
diff --git a/roles/sap_install_media_detect/tasks/set_global_vars.yml b/roles/sap_install_media_detect/tasks/set_global_vars.yml
index a9c592c48..2448fc580 100644
--- a/roles/sap_install_media_detect/tasks/set_global_vars.yml
+++ b/roles/sap_install_media_detect/tasks/set_global_vars.yml
@@ -46,7 +46,16 @@
sap_swpm_cd_export_path: "{{ detect_directory_export_extracted.files[0].path }}" # for sap_swpm Ansible Role
ignore_errors: true
when:
- - sap_install_media_detect_export == "sapecc" or sap_install_media_detect_export == "sapecc_ides"
+ - sap_install_media_detect_export == "sapecc"
+
+- name: SAP Install Media Detection Completed - set facts for Export of SAP ECC IDES
+ ansible.builtin.set_fact:
+ sap_swpm_cd_export_path: "{{ detect_directory_export_extracted.files[0].path | dirname | dirname }}" # for sap_swpm Ansible Role
+ sap_swpm_cd_export_pt1_path: "{{ (detect_directory_export_extracted.files | map(attribute='path') | map('dirname') | list | select() | unique)[0] }}" # for sap_swpm Ansible Role
+ sap_swpm_cd_export_pt2_path: "{{ (detect_directory_export_extracted.files | map(attribute='path') | map('dirname') | list | select() | unique)[1] }}" # for sap_swpm Ansible Role
+ ignore_errors: true
+ when:
+ - sap_install_media_detect_export == "sapecc_ides"
- name: SAP Install Media Detection Completed - set facts for Export of SAP S/4HANA
ansible.builtin.set_fact:
@@ -76,6 +85,15 @@
when:
- sap_install_media_detect_export == "sapnwas_java"
+- name: SAP Install Media Detection Completed - set facts for Export of SAP Solution Manager (ABAP)
+ ansible.builtin.set_fact:
+ sap_swpm_cd_export_path: "{{ detect_directory_export_extracted.files[0].path | dirname | dirname }}" # for sap_swpm Ansible Role
+ sap_swpm_cd_export_pt1_path: "{{ detect_directory_export_extracted.files[0].path }}" # for sap_swpm Ansible Role
+ sap_swpm_cd_export_pt2_path: "{{ detect_directory_export_extracted.files[1].path }}" # for sap_swpm Ansible Role
+ ignore_errors: true
+ when:
+ - sap_install_media_detect_export == "sapsolman_abap"
+
- name: SAP Install Media Detection Completed - set facts for SAP SWPM
ansible.builtin.set_fact:
sap_swpm_sapcar_path: "{{ sap_install_media_detect_directory }}/sap_swpm" # for sap_swpm Ansible Role
diff --git a/roles/sap_netweaver_preconfigure/README.md b/roles/sap_netweaver_preconfigure/README.md
index 32992c8c0..d0ad2b26c 100644
--- a/roles/sap_netweaver_preconfigure/README.md
+++ b/roles/sap_netweaver_preconfigure/README.md
@@ -25,70 +25,97 @@ Please check the SAP NetWeaver installation guide for swap space requirements.
Do not run this role against an SAP NetWeaver or other production system. The role will enforce a certain configuration on the managed
node(s), which might not be intended.
-## Role Variables
+
+## Role Input Parameters
-### Execute only certain steps of SAP notes (RHEL only)
-If the following variable is set to `no`, only the installation or configuration steps of SAP notes will be executed or checked. If this variable is undefined or set to `yes`, all installation and configuration steps of applicable SAP notes will be executed.
-```yaml
-sap_netweaver_preconfigure_config_all
-```
+Minimum required parameters:
+This role does not require any parameter to be set in the playbook or inventory.
-### Perform installation or configuration steps, or both
-If you have set `sap_netweaver_preconfigure_config_all` (see above) to `no`, you can limit the scope of the role to only execute the installation or the configuration steps. For this purpose, set one of the following variables, or both, to `yes`. The default for both is `no`.
-```yaml
-sap_netweaver_preconfigure_installation
-sap_netweaver_preconfigure_configuration
-```
-### Install required packages for Adobe Document Services (RHEL Only)
-If the following variable is set to `yes`, required packages for Adobe Document Services according to SAP note 2135057 (RHEL 7) or 2920407 (RHEL 8) will be installed. Default is `no`.
-```yaml
-sap_netweaver_preconfigure_use_adobe_doc_services
-```
+### sap_netweaver_preconfigure_config_all
+- _Type:_ `bool`
+- _Default:_ `true`
-### Run the role in assert mode
-If the following variable is set to `yes`, the role will only check if the configuration of the managed node(s) is according to the applicable SAP notes. Default is `no`.
-```yaml
-sap_netweaver_preconfigure_assert
-```
+If set to `false`, the role will only execute or verify the installation or configuration steps of SAP notes.
+Default is to perform installation and configuration steps.
-### Behavior of the role in assert mode
-If the role is run in assert mode (see above) and the following variable is set to `yes`, assertion errors will not cause the role to fail. This can be useful for creating reports.
-Default is `no`, meaning that the role will fail for any assertion error which is discovered. This variable has no meaning if the role is not run in assert mode.
-```yaml
-sap_netweaver_preconfigure_assert_ignore_errors
-```
+### sap_netweaver_preconfigure_installation
+- _Type:_ `bool`
+- _Default:_ `false`
-### Swap space for SAP NetWeaver
-When installing SAP NetWeaver, the prerequisite checker verifies if enough swap space is configured. By default, the role checks is there is at least 20480 MB of swap space available.
-This variable can be used set to the swap space limit to any other value.
-```yaml
-sap_netweaver_preconfigure_min_swap_space_mb
-```
+If `sap_netweaver_preconfigure_config_all` is set to `false`, set this variable to `true` to perform only the
+installation steps of SAP notes.
-### Fail if there is less than 20480 MB of swap space configured
-If the following variable is set to `no`, the role will not fail if less than 20480 MB of swap space is configured. Default is `yes`.
-```yaml
-sap_netweaver_preconfigure_fail_if_not_enough_swap_space_configured
-```
+### sap_netweaver_preconfigure_configuration
+- _Type:_ `bool`
+- _Default:_ `false`
-## Select saptune solution (SLES only)
-You can specify the saptune solution you want to implement. For Netweaver, there are a number of possible solutions depending on the deployment:
+If `sap_netweaver_preconfigure_config_all` is set to `false`, set this variable to `true` to perform only the
+configuration steps of SAP notes.
-* NETWEAVER
-* NETWEAVER+HANA
-* S4HANA-APP+DB
-* S4HANA-APPSERVER
-* S4HANA-DBSERVER
-The default vaule is NETWEAVER
+### sap_netweaver_preconfigure_assert
+- _Type:_ `bool`
+- _Default:_ `false`
-sap_netweaver_preconfigure_saptune_solution: NETWEAVER
+If set to `true`, the role will run in assertion mode instead of the default configuration mode.
-The default is `NETWEAVER`
+### sap_netweaver_preconfigure_assert_ignore_errors
+- _Type:_ `bool`
+- _Default:_ `false`
-```yaml
-sap_hana_preconfigure_saptune_solution
-```
+In assertion mode, the role will abort when encountering any assertion error.
+If this parameter is set to `false`, the role will *not* abort when encountering an assertion error.
+This is useful if the role is used for reporting a system's SAP notes compliance.
+
+### sap_netweaver_preconfigure_min_swap_space_mb
+- _Type:_ `str`
+- _Default:_ `20480`
+
+Specifies the minimum amount of swap space on the system required by SAP NetWeaver.
+If this requirement is not met, the role will abort.
+Set your own value to override the default of `20480`.
+
+### sap_netweaver_preconfigure_fail_if_not_enough_swap_space_configured
+- _Type:_ `bool`
+- _Default:_ `true`
+
+If the system does not have the minimum amount of swap space configured as defined
+in parameter `sap_netweaver_preconfigure_min_swap_space_mb`, the role will abort.
+By setting this parameter to `false`, the role will not abort in such cases.
+
+### sap_netweaver_preconfigure_rpath
+- _Type:_ `str`
+- _Default:_ `/usr/sap/lib`
+
+Specifies the SAP kernel's `RPATH`. This is where the SAP kernel is searching for libraries, and where the role
+is creating a link named `libstdc++.so.6` pointing to `/opt/rh/SAP/lib64/compat-sap-c++-10.so`,
+so that newer SAP kernels which are built with GCC10 can find the required symbols.
+
+### sap_netweaver_preconfigure_use_adobe_doc_services
+- _Type:_ `bool`
+- _Default:_ `false`
+
+Set this parameter to `true` when using Adobe Document Services, to ensure all required packages are installed.
+
+### sap_netweaver_preconfigure_saptune_version
+- _Type:_ `str`
+- _Default:_ `3.0.2`
+
+On SLES systems, specifies the saptune version
+
+### sap_netweaver_preconfigure_saptune_solution
+- _Type:_ `str`
+- _Default:_ `NETWEAVER`
+- _Possible Values:_
+ - `NETWEAVER`
+ - `NETWEAVER+HANA`
+ - `S4HANA-APP+DB`
+ - `S4HANA-APPSERVER`
+ - `S4HANA-DBSERVER`
+
+On SLES systems, specifies the saptune solution to apply.
+
+
## Example Playbook
diff --git a/roles/sap_netweaver_preconfigure/defaults/main.yml b/roles/sap_netweaver_preconfigure/defaults/main.yml
index 1ae9603d5..dbd6bf16c 100644
--- a/roles/sap_netweaver_preconfigure/defaults/main.yml
+++ b/roles/sap_netweaver_preconfigure/defaults/main.yml
@@ -7,7 +7,7 @@ sap_netweaver_preconfigure_assert: no
# In case of an assertion run, if set to "yes", the role will abort for any assertion error:
sap_netweaver_preconfigure_assert_ignore_errors: no
-sap_netweaver_preconfigure_min_swap_space_mb: "{{ __sap_netweaver_preconfigure_min_swap_space_mb }}"
+sap_netweaver_preconfigure_min_swap_space_mb: '20480'
sap_netweaver_preconfigure_fail_if_not_enough_swap_space_configured: yes
@@ -16,7 +16,7 @@ sap_netweaver_preconfigure_rpath: '/usr/sap/lib'
sap_netweaver_preconfigure_use_adobe_doc_services: no
#SLES Only
-sap_netweaver_preconfigure_saptune_version: 3.0.2
+sap_netweaver_preconfigure_saptune_version: '3.0.2'
## The following variables control aspects of saptune and are only relevant for SLES for SAP Application
@@ -28,4 +28,4 @@ sap_netweaver_preconfigure_saptune_version: 3.0.2
#S4HANA-DBSERVER
# The default vaule is NETWEAVER
-sap_netweaver_preconfigure_saptune_solution: NETWEAVER
+sap_netweaver_preconfigure_saptune_solution: 'NETWEAVER'
diff --git a/roles/sap_netweaver_preconfigure/meta/argument_specs.yml b/roles/sap_netweaver_preconfigure/meta/argument_specs.yml
new file mode 100644
index 000000000..595c9e090
--- /dev/null
+++ b/roles/sap_netweaver_preconfigure/meta/argument_specs.yml
@@ -0,0 +1,115 @@
+---
+# Requires: ansible 2.11
+# Argument specifications in this separate file maintain backwards compatibility.
+argument_specs:
+
+ main:
+ short_description: Variables for SAP NetWeaver preconfiguration
+ options:
+
+# sap_netweaver_preconfigure_...
+# default:
+# description:
+# -
+# example:
+#
+# required: false
+# type:
+# options: # additional options for lists and dicts
+# :
+# description:
+# ...
+
+ sap_netweaver_preconfigure_config_all:
+ default: true
+ description:
+ - If set to `false`, the role will only execute or verify the installation or configuration steps of SAP notes.
+ - Default is to perform installation and configuration steps.
+ required: false
+ type: bool
+
+ sap_netweaver_preconfigure_installation:
+ default: false
+ description:
+ - If `sap_netweaver_preconfigure_config_all` is set to `false`, set this variable to `true` to perform only the
+ - installation steps of SAP notes.
+ required: false
+ type: bool
+
+ sap_netweaver_preconfigure_configuration:
+ default: false
+ description:
+ - If `sap_netweaver_preconfigure_config_all` is set to `false`, set this variable to `true` to perform only the
+ - configuration steps of SAP notes.
+ required: false
+ type: bool
+
+ sap_netweaver_preconfigure_assert:
+ default: false
+ description:
+ - If set to `true`, the role will run in assertion mode instead of the default configuration mode.
+ required: false
+ type: bool
+
+ sap_netweaver_preconfigure_assert_ignore_errors:
+ default: false
+ description:
+ - In assertion mode, the role will abort when encountering any assertion error.
+ - If this parameter is set to `false`, the role will *not* abort when encountering an assertion error.
+ - This is useful if the role is used for reporting a system's SAP notes compliance.
+ required: false
+ type: bool
+
+ sap_netweaver_preconfigure_min_swap_space_mb:
+ default: '20480'
+ description:
+ - Specifies the minimum amount of swap space on the system required by SAP NetWeaver.
+ - If this requirement is not met, the role will abort.
+ - Set your own value to override the default of `20480`.
+ required: false
+ type: str
+
+ sap_netweaver_preconfigure_fail_if_not_enough_swap_space_configured:
+ default: true
+ description:
+ - If the system does not have the minimum amount of swap space configured as defined
+ - in parameter `sap_netweaver_preconfigure_min_swap_space_mb`, the role will abort.
+ - By setting this parameter to `false`, the role will not abort in such cases.
+ required: false
+ type: bool
+
+ sap_netweaver_preconfigure_rpath:
+ default: '/usr/sap/lib'
+ description:
+ - Specifies the SAP kernel's `RPATH`. This is where the SAP kernel is searching for libraries, and where the role
+ - is creating a link named `libstdc++.so.6` pointing to `/opt/rh/SAP/lib64/compat-sap-c++-10.so`,
+ - so that newer SAP kernels which are built with GCC10 can find the required symbols.
+ required: false
+ type: str
+
+ sap_netweaver_preconfigure_use_adobe_doc_services:
+ default: false
+ description:
+ - Set this parameter to `true` when using Adobe Document Services, to ensure all required packages are installed.
+ required: false
+ type: bool
+
+ sap_netweaver_preconfigure_saptune_version:
+ default: '3.0.2'
+ description:
+ - On SLES systems, specifies the saptune version
+ required: false
+ type: str
+
+ sap_netweaver_preconfigure_saptune_solution:
+ default: 'NETWEAVER'
+ description:
+ - On SLES systems, specifies the saptune solution to apply.
+ choices:
+ - 'NETWEAVER'
+ - 'NETWEAVER+HANA'
+ - 'S4HANA-APP+DB'
+ - 'S4HANA-APPSERVER'
+ - 'S4HANA-DBSERVER'
+ required: false
+ type: str
diff --git a/roles/sap_netweaver_preconfigure/vars/RedHat_7.yml b/roles/sap_netweaver_preconfigure/vars/RedHat_7.yml
index 7f808df8b..551082a14 100644
--- a/roles/sap_netweaver_preconfigure/vars/RedHat_7.yml
+++ b/roles/sap_netweaver_preconfigure/vars/RedHat_7.yml
@@ -11,8 +11,6 @@ __sap_netweaver_preconfigure_sapnotes_versions:
__sap_netweaver_preconfigure_packages:
- tuned-profiles-sap
-__sap_netweaver_preconfigure_min_swap_space_mb: '20480'
-
__sap_netweaver_preconfigure_adobe_doc_services_packages:
- autoconf.noarch
- automake.noarch
diff --git a/roles/sap_netweaver_preconfigure/vars/RedHat_8.yml b/roles/sap_netweaver_preconfigure/vars/RedHat_8.yml
index 49c674eea..89f297948 100644
--- a/roles/sap_netweaver_preconfigure/vars/RedHat_8.yml
+++ b/roles/sap_netweaver_preconfigure/vars/RedHat_8.yml
@@ -13,8 +13,6 @@ __sap_netweaver_preconfigure_sapnotes_versions:
__sap_netweaver_preconfigure_packages:
- tuned-profiles-sap
-__sap_netweaver_preconfigure_min_swap_space_mb: '20480'
-
__sap_netweaver_preconfigure_adobe_doc_services_packages:
- autoconf.noarch
- automake.noarch
diff --git a/roles/sap_netweaver_preconfigure/vars/RedHat_9.yml b/roles/sap_netweaver_preconfigure/vars/RedHat_9.yml
index c9b5dbef1..6fccccd37 100644
--- a/roles/sap_netweaver_preconfigure/vars/RedHat_9.yml
+++ b/roles/sap_netweaver_preconfigure/vars/RedHat_9.yml
@@ -11,8 +11,6 @@ __sap_netweaver_preconfigure_sapnotes_versions:
__sap_netweaver_preconfigure_packages:
- tuned-profiles-sap
-__sap_netweaver_preconfigure_min_swap_space_mb: '20480'
-
__sap_netweaver_preconfigure_adobe_doc_services_packages:
- autoconf.noarch
- automake.noarch
diff --git a/roles/sap_netweaver_preconfigure/vars/SLES_15.yml b/roles/sap_netweaver_preconfigure/vars/SLES_15.yml
index 25a93524d..ee37ca633 100644
--- a/roles/sap_netweaver_preconfigure/vars/SLES_15.yml
+++ b/roles/sap_netweaver_preconfigure/vars/SLES_15.yml
@@ -27,5 +27,3 @@ __sap_netweaver_preconfigure_packages:
- yast2-vpn
- tcsh
- acl
-
-__sap_netweaver_preconfigure_min_swap_space_mb: "20480"
diff --git a/roles/sap_swpm/defaults/main.yml b/roles/sap_swpm/defaults/main.yml
index 4af5ed421..b205b6a4e 100644
--- a/roles/sap_swpm/defaults/main.yml
+++ b/roles/sap_swpm/defaults/main.yml
@@ -96,6 +96,8 @@ sap_swpm_inifile_list:
## Not in use
# - swpm_installation_media_download_service
+# - solman_credentials_swpm1
+# - solman_abap_swpm1
# - solman_daa_swpm1
@@ -200,8 +202,6 @@ sap_swpm_virtual_hostname: "initial"
sap_swpm_java_template_id_selected_list:
- java_engine_ee
- - java_nwas_as
- - java_adobe_document_services
sap_swpm_java_template_id_lookup_dictionary:
java_nwas_as:
@@ -210,7 +210,7 @@ sap_swpm_java_template_id_lookup_dictionary:
java_engine_se:
- 01200615324800000125 # Adapter Engine (Java SE)
java_engine_ee:
- - 01200615324800000165 # Adapter Engine (Java EE)
+ - 01200615324800000165 # Adapter Engine (Java EE), includes java_nwas_as (01200615324800000135)
java_nwdi:
- 01200615324800000129 # Development Infrastructure
- 01200615324800003960 # Developer Studio
@@ -225,7 +225,7 @@ sap_swpm_java_template_id_lookup_dictionary:
- 01200615324800002887 # Enterprise Services Repository
- 01200615324800000149 # ESR Content
java_adobe_document_services:
- - 01200615324800000128 # Adobe Document Services
+ - 01200615324800000128 # Adobe Document Services, includes java_nwas_as (01200615324800000135) and java_engine_ee (01200615324800000125)
- 01200314694800005225 # PDF Export
java_pi_aex:
- 01200615324800003841 # Advanced Adapter Engine Extnd
@@ -235,7 +235,7 @@ sap_swpm_java_template_id_lookup_dictionary:
java_scheduling_cps:
- 01200615324800000153 # Central Process Scheduling
java_solman:
- - 01200615324800001035 # Solution Manager
+ - 01200615324800001035 # Solution Manager, includes java_nwas_as (01200615324800000135) and java_engine_ee (01200615324800000125)
java_demo:
- 01200615324800002898 # Demo Applications
@@ -313,7 +313,9 @@ sap_swpm_wd_backend_ms_http_port:
sap_swpm_wd_backend_ms_host:
sap_swpm_wd_backend_rfc_host:
sap_swpm_wd_backend_rfc_instance_nr:
-sap_swpm_wd_backend_rfc_ddic_000_password:
+sap_swpm_wd_backend_rfc_client_nr: # 000 default
+sap_swpm_wd_backend_rfc_user: # DDIC default
+sap_swpm_wd_backend_rfc_user_password:
sap_swpm_wd_backend_scenario_size:
sap_swpm_wd_virtual_host:
@@ -345,6 +347,7 @@ sap_swpm_diagnostics_agent_password:
## --- Individual Software Paths --- ##
# will follow sap_swpm_software_path
+# alternatively, can be detected and set with sap_install_media_detect Ansible Role
sap_swpm_igs_path:
sap_swpm_igs_file_name:
diff --git a/roles/sap_swpm/templates/configfile.j2 b/roles/sap_swpm/templates/configfile.j2
index 02916f996..e58f36d34 100644
--- a/roles/sap_swpm/templates/configfile.j2
+++ b/roles/sap_swpm/templates/configfile.j2
@@ -381,15 +381,18 @@ SYB.NW_DB.initializeDefaultSystemEncryptionPassword = false
SYB.NW_DB.maxIndexParallelDegree = 10
SYB.NW_DB.maxQueryParallelDegree = 10
SYB.NW_DB.numberWorkerProcesses = 50
-SYB.NW_DB.portBackupServer = 4902
-SYB.NW_DB.portDatabaseServer = 4901
-SYB.NW_DB.portJobScheduler = 4903
-SYB.NW_DB.portXPServer = 4904
SYB.NW_DB.sqlServerConnections = 200
SYB.NW_DB.sqlServerHostname = {{ sap_swpm_db_host }}
SYB.NW_DB.sybmgmtdbDataDeviceFolder = /sybase/{{ sap_swpm_sid | upper }}/sybsystem
SYB.NW_DB.sybmgmtdbLogDeviceFolder = /sybase/{{ sap_swpm_sid | upper }}/sybsystem
SYB.NW_DB.userstore_hostname = {{ sap_swpm_ascs_instance_hostname }}
+
+# To avoid conflicts, leave all Ports blank and SAP SWPM will auto-assign
+# Ports by default are in order 4901, 4902, 4903, 4904. For each new ASE DB Server instance on the host, each port number is incremented by 4
+SYB.NW_DB.portDatabaseServer =
+SYB.NW_DB.portBackupServer =
+SYB.NW_DB.portJobScheduler =
+SYB.NW_DB.portXPServer =
{% endif %}
{% if 'db_config_anydb_sapmaxdb' in sap_swpm_inifile_list %}
@@ -411,10 +414,11 @@ SdbInstanceDialogs.saplogFolder = saplog
######
NW_HDB_getDBInfo.dbhost = {{ sap_swpm_db_host }}
NW_HDB_getDBInfo.dbsid = {{ sap_swpm_db_sid }}
-NW_HDB_getDBInfo.systemid = {{ sap_swpm_db_sid }}
NW_HDB_getDBInfo.instanceNumber = {{ sap_swpm_db_instance_nr }}
-NW_HDB_getDBInfo.systemDbPassword = {{ sap_swpm_db_systemdb_password }}
+NW_HDB_getDBInfo.systemid = {{ sap_swpm_db_sid }}
NW_HDB_getDBInfo.systemPassword = {{ sap_swpm_db_system_password }}
+# NW_HDB_getDBInfo.systemDbSid = SystemDB
+NW_HDB_getDBInfo.systemDbPassword = {{ sap_swpm_db_systemdb_password }}
NW_HDB_DB.abapSchemaName = {{ sap_swpm_db_schema_abap }}
NW_HDB_DB.abapSchemaPassword = {{ sap_swpm_db_schema_abap_password }}
NW_HDB_DB.javaSchemaName = {{ sap_swpm_db_schema_java }}
@@ -573,6 +577,7 @@ NW_DI_Instance.virtualHostname = {{ ansible_hostname }}
######
nw_instance_ers.ersVirtualHostname = {{ sap_swpm_ers_instance_hostname }}
nw_instance_ers.ersInstanceNumber = {{ sap_swpm_ers_instance_nr }}
+# nw_instance_ers.restartSCS = true
{% endif %}
{% if 'nw_config_ports' in sap_swpm_inifile_list %}
@@ -621,7 +626,7 @@ Select_PPMS_Instances.ListOfSelectedInstances = {% set selected_ids = [] %}{%- f
{%- endfor %}{{ selected_ids | flatten | join(',') }}
## If use PV = false [LEGACY for before NWAS JAVA 7.40]
-## Comma-separated value list containing which product instances (former usage types) are installed. Used for handling product instances in unattended mode.
+## Comma-separated value list containing which product instances (formerly known as usage types) are installed. Used for handling product instances in unattended mode.
## SAP_Software_Features_Select.selectedInstancesForInstallation = AS,AAS,BASIC,NW-MODEL,ESR,PI,PI-AF
{%- endif %}
@@ -645,9 +650,9 @@ NW_webdispatcher_Instance.scenarioSize = {{ sap_swpm_wd_backend_scenario_size }}
NW_webdispatcher_Instance.activateICF = {{ sap_swpm_wd_activate_icf | lower }}
NW_webdispatcher_Instance.rfcHost = {{ sap_swpm_wd_backend_rfc_host }}
NW_webdispatcher_Instance.rfcInstance = {{ sap_swpm_wd_backend_rfc_instance_nr }}
-NW_webdispatcher_Instance.rfcPassword = {{ sap_swpm_wd_backend_rfc_ddic_000_password }}
-# NW_webdispatcher_Instance.rfcClient = 000
-# NW_webdispatcher_Instance.rfcUser = DDIC
+NW_webdispatcher_Instance.rfcClient = {{ sap_swpm_wd_backend_rfc_client_nr }}
+NW_webdispatcher_Instance.rfcUser = {{ sap_swpm_wd_backend_rfc_user }}
+NW_webdispatcher_Instance.rfcPassword = {{ sap_swpm_wd_backend_rfc_user_password }}
{% endif %}
{% if 'nw_config_webdisp_gateway' in sap_swpm_inifile_list %}
@@ -655,10 +660,12 @@ NW_webdispatcher_Instance.rfcPassword = {{ sap_swpm_wd_backend_rfc_ddic_000_pass
# nw_config_webdisp_gateway
#
# It is recommended to install gateway as part of ASCS
-# It is NOT recommended to install webdispatcher as part of ASCS. A separate Web Dispatcher instance must be installed
+# It is NOT recommended to install webdispatcher as part of ASCS. A separate Web Dispatcher instance should be installed (SAP Note 908097)
######
NW_CI_Instance.ascsInstallGateway = {{ sap_swpm_ascs_install_gateway | lower }}
# NW_SCS_Instance.ascsInstallGateway = {{ sap_swpm_ascs_install_gateway | lower }}
+
+# Embedded SAP Web Dispatcher
# NW_CI_Instance.ascsInstallWebDispatcher = false
# NW_SCS_Instance.ascsInstallWebDispatcher = false
{% endif %}
@@ -759,6 +766,25 @@ nwUsers.sidAdmUID = {{ sap_swpm_sidadm_uid }}
# DownloadService.planNumber =
{% endif %}
+
+{% if 'solman_credentials_swpm1' in sap_swpm_inifile_list %}
+######
+# solman_credentials_swpm1
+# Not in use by sap_swpm Ansible Role
+######
+NW_IcmAuth.webadmPassword = {{ sap_swpm_ume_j2ee_admin_password }}
+{% endif %}
+
+
+{% if 'solman_abap_swpm1' in sap_swpm_inifile_list %}
+######
+# solman_abap_swpm1
+# Not in use by sap_swpm Ansible Role
+######
+InitDeclusteringForImport.decluster = false
+{% endif %}
+
+
{% if 'solman_daa_swpm1' in sap_swpm_inifile_list %}
######
# solman_daa_swpm1
diff --git a/roles/sap_vm_preconfigure/defaults/main.yml b/roles/sap_vm_preconfigure/defaults/main.yml
index c91a392cb..5fe1d5936 100644
--- a/roles/sap_vm_preconfigure/defaults/main.yml
+++ b/roles/sap_vm_preconfigure/defaults/main.yml
@@ -6,5 +6,5 @@ sap_vm_platform_detect: false
# For re-use of this Ansible Role to establish which platform, without running any of the preconfigure Ansible Tasks for that platform
sap_vm_platform_detect_only: false
-# cloud_aliyun_ecs_vm, cloud_aws_ec2_vs, cloud_gcp_ce_vm, cloud_ibmcloud_powervs, cloud_ibmcloud_vs, cloud_msazure_vm, ibmpower_lpar, redhat_ocp_virt_vm, redhat_rhel_kvm_vm, vmware_vsphere_vm
+# cloud_aliyun_ecs_vm, cloud_aws_ec2_vs, cloud_gcp_ce_vm, cloud_ibmcloud_powervs, cloud_ibmcloud_vs, cloud_msazure_vm, hyp_ibmpower_lpar, hyp_redhat_ocp_virt_vm, hyp_redhat_rhel_kvm_vm, hyp_vmware_vsphere_vm
sap_vm_platform:
diff --git a/roles/sap_vm_preconfigure/tasks/detect_platform/main.yml b/roles/sap_vm_preconfigure/tasks/detect_platform/main.yml
index c92653310..96fb74b74 100644
--- a/roles/sap_vm_preconfigure/tasks/detect_platform/main.yml
+++ b/roles/sap_vm_preconfigure/tasks/detect_platform/main.yml
@@ -24,7 +24,7 @@
- name: SAP virtual machine detect platform - decision set fact
set_fact:
sap_vm_platform: "{{ sap_vm_platform_detection_decision }}"
- # cloud_aliyun_ecs_vm, cloud_aws_ec2_vs, cloud_gcp_ce_vm, cloud_ibmcloud_powervs, cloud_ibmcloud_vs, cloud_msazure_vm, ibmpower_lpar, redhat_ocp_virt_vm, redhat_rhel_kvm_vm, vmware_vsphere_vm
+ # cloud_aliyun_ecs_vm, cloud_aws_ec2_vs, cloud_gcp_ce_vm, cloud_ibmcloud_powervs, cloud_ibmcloud_vs, cloud_msazure_vm, hyp_ibmpower_lpar, hyp_redhat_ocp_virt_vm, hyp_redhat_rhel_kvm_vm, hyp_vmware_vsphere_vm
- name: SAP virtual machine detect platform - confirm AWS EC2 Virtual Server
@@ -60,7 +60,7 @@
- not detect_cloud_provider_aws_ami_id.failed
-- name: SAP virtual machine detect platform - confirm MicrosofT Azure Virtual Machine
+- name: SAP virtual machine detect platform - confirm Microsoft Azure Virtual Machine
when: sap_vm_platform == cloud_msazure_vm
block: