diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 18d417464..018496019 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,6 +6,16 @@ community.sap_install Release Notes +v1.2.2 +====== + +Release Summary +--------------- + +| Release Date: 2022-02-01 +| Fix for sap_hana_preconfigure on SLES when tuned is not installed + + v1.2.1 ====== diff --git a/galaxy.yml b/galaxy.yml index ed8fc8a63..cccb9e482 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.1 +version: 1.2.2 # The path to the Markdown (.md) readme file. This path is relative to the root of the collection readme: README.md @@ -23,6 +23,7 @@ authors: - Markus Koch - Markus Moster - Janine Fuchs + - Steven Stringer ### OPTIONAL but strongly recommended # A short summary description of the collection diff --git a/roles/sap_hana_preconfigure/tasks/SLES/assert-configuration.yml b/roles/sap_hana_preconfigure/tasks/SLES/assert-configuration.yml index 25b5fe6d8..34fd6f217 100644 --- a/roles/sap_hana_preconfigure/tasks/SLES/assert-configuration.yml +++ b/roles/sap_hana_preconfigure/tasks/SLES/assert-configuration.yml @@ -7,17 +7,6 @@ - name: Populate service facts ansible.builtin.service_facts: -- name: Assert that saptune conflicting services are stopped - ansible.builtin.assert: - that: - - "ansible_facts.services['{{ service }}.service'].state == 'inactive' or ansible_facts.services['{{ service }}.service'].state == 'stopped'" - - "ansible_facts.services['{{ service }}.service'].status == 'disabled'" - fail_msg: "FAIL: the service '{{ service }}' is not configured as expected" - success_msg: "PASS: the service '{{ service }}' is configured as expected" - loop: "{{ __sap_hana_preconfigure_saptune_conflicting_services }}" - loop_control: - loop_var: service - - name: Assert that saptune is running and enabled ansible.builtin.assert: that: diff --git a/roles/sap_hana_preconfigure/tasks/SLES/configuration.yml b/roles/sap_hana_preconfigure/tasks/SLES/configuration.yml index 0cd8a35bc..0e084615e 100644 --- a/roles/sap_hana_preconfigure/tasks/SLES/configuration.yml +++ b/roles/sap_hana_preconfigure/tasks/SLES/configuration.yml @@ -4,15 +4,6 @@ # debug: # verbosity: "{{ debuglevel }}" # -- name: Ensure conflicting services are stopped and disabled - ansible.builtin.systemd: - name: "{{ service }}" - state: stopped - enabled: no - loop: "{{ __sap_hana_preconfigure_saptune_conflicting_services }}" - loop_control: - loop_var: service - - name: Ensure saptune is running and enabled ansible.builtin.systemd: name: saptune @@ -76,3 +67,8 @@ - name: Ensure solution was successful ansible.builtin.command: "saptune solution verify {{ sap_hana_preconfigure_saptune_solution }}" changed_when: no # We're only checking, not changing! + +- name: Make sure that sapconf and tuned are stopped and disabled + ansible.builtin.command: "saptune service takeover" + register: __sap_saptune_takeover + changed_when: __sap_saptune_takeover.rc == 0 diff --git a/roles/sap_hana_preconfigure/tasks/sapnote/1275776/installation.yml b/roles/sap_hana_preconfigure/tasks/sapnote/1275776/installation.yml index 81a739119..4a6ef5ba6 100644 --- a/roles/sap_hana_preconfigure/tasks/sapnote/1275776/installation.yml +++ b/roles/sap_hana_preconfigure/tasks/sapnote/1275776/installation.yml @@ -1,9 +1,4 @@ --- - -- name: 1275776 - Installation sapconf - ansible.builtin.package: - name: "sapconf" - - name: 1275776 - Installation saptune ansible.builtin.package: name: "saptune" diff --git a/roles/sap_hana_preconfigure/vars/SLES_15.yml b/roles/sap_hana_preconfigure/vars/SLES_15.yml index 8ffe3f9c0..a69c294bd 100644 --- a/roles/sap_hana_preconfigure/vars/SLES_15.yml +++ b/roles/sap_hana_preconfigure/vars/SLES_15.yml @@ -24,8 +24,3 @@ __sap_hana_preconfigure_packages: # __sap_hana_preconfigure_grub_file: /tmp/grub - -# Services that conflict with saptune -__sap_hana_preconfigure_saptune_conflicting_services: - - sapconf - - tuned diff --git a/roles/sap_netweaver_preconfigure/tasks/SLES/assert-configuration.yml b/roles/sap_netweaver_preconfigure/tasks/SLES/assert-configuration.yml index 26dce663a..3360e8232 100644 --- a/roles/sap_netweaver_preconfigure/tasks/SLES/assert-configuration.yml +++ b/roles/sap_netweaver_preconfigure/tasks/SLES/assert-configuration.yml @@ -2,17 +2,6 @@ - name: Populate service facts ansible.builtin.service_facts: -- name: Assert that saptune conflicting services are stopped - ansible.builtin.assert: - that: - - "ansible_facts.services['{{ service }}.service'].state == 'inactive' or ansible_facts.services['{{ service }}.service'].state == 'stopped'" - - "ansible_facts.services['{{ service }}.service'].status == 'disabled'" - fail_msg: "FAIL: the service '{{ service }}' is not configured as expected" - success_msg: "PASS: the service '{{ service }}' is configured as expected" - loop: "{{ __sap_netweaver_preconfigure_saptune_conflicting_services }}" - loop_control: - loop_var: service - - name: Assert that saptune is running and enabled ansible.builtin.assert: that: diff --git a/roles/sap_netweaver_preconfigure/tasks/SLES/configuration.yml b/roles/sap_netweaver_preconfigure/tasks/SLES/configuration.yml index 3d9d90bc6..b5a608c4e 100644 --- a/roles/sap_netweaver_preconfigure/tasks/SLES/configuration.yml +++ b/roles/sap_netweaver_preconfigure/tasks/SLES/configuration.yml @@ -1,13 +1,4 @@ --- -- name: Ensure conflicting services are stopped and disabled - ansible.builtin.systemd: - name: "{{ service }}" - state: stopped - enabled: no - loop: "{{ __sap_netweaver_preconfigure_saptune_conflicting_services }}" - loop_control: - loop_var: service - - name: Ensure saptune is running and enabled ansible.builtin.systemd: name: saptune @@ -23,6 +14,11 @@ register: __sap_netweaver_preconfigure_register_saptune_status changed_when: no +- name: Make sure that sapconf and tuned are stopped and disabled + ansible.builtin.command: "saptune service takeover" + register: __sap_saptune_takeover + changed_when: __sap_saptune_takeover.rc == 0 + - name: Set fact for active solution ansible.builtin.set_fact: __sap_netweaver_preconfigure_fact_solution_configured: "{{ (__sap_netweaver_preconfigure_register_saptune_status.stdout | regex_search('(\\S+)', '\\1'))[0] | default('NONE') }}" # Capture the first block on none whitespace diff --git a/roles/sap_netweaver_preconfigure/tasks/sapnote/1275776/installation.yml b/roles/sap_netweaver_preconfigure/tasks/sapnote/1275776/installation.yml index 81a739119..f149aca40 100644 --- a/roles/sap_netweaver_preconfigure/tasks/sapnote/1275776/installation.yml +++ b/roles/sap_netweaver_preconfigure/tasks/sapnote/1275776/installation.yml @@ -1,9 +1,5 @@ --- -- name: 1275776 - Installation sapconf - ansible.builtin.package: - name: "sapconf" - - name: 1275776 - Installation saptune ansible.builtin.package: name: "saptune" diff --git a/roles/sap_netweaver_preconfigure/vars/SLES_15.yml b/roles/sap_netweaver_preconfigure/vars/SLES_15.yml index 64e117388..25a93524d 100644 --- a/roles/sap_netweaver_preconfigure/vars/SLES_15.yml +++ b/roles/sap_netweaver_preconfigure/vars/SLES_15.yml @@ -1,5 +1,4 @@ --- - # required SAP Notes for SLES 15 __sap_netweaver_preconfigure_sapnotes: @@ -29,8 +28,4 @@ __sap_netweaver_preconfigure_packages: - tcsh - acl -__sap_netweaver_preconfigure_min_swap_space_mb: '20480' - -__sap_netweaver_preconfigure_saptune_conflicting_services: - - sapconf - - tuned +__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 f0d7a758f..4af5ed421 100644 --- a/roles/sap_swpm/defaults/main.yml +++ b/roles/sap_swpm/defaults/main.yml @@ -60,6 +60,7 @@ sap_swpm_inifile_list: # - credentials_anydb_sapase # - credentials_anydb_sapmaxdb # - credentials_nwas_ssfs +# - credentials_hdbuserstore - db_config_hana # - db_config_anydb_all # - db_config_anydb_ibmdb2 @@ -79,7 +80,7 @@ sap_swpm_inifile_list: - nw_config_central_services_abap # - nw_config_central_services_java - nw_config_primary_application_server_instance - - nw_config_additional_application_server_instance +# - nw_config_additional_application_server_instance # - nw_config_ers - nw_config_ports # - nw_config_java_ume diff --git a/roles/sap_swpm/templates/configfile.j2 b/roles/sap_swpm/templates/configfile.j2 index f20c2d14c..02916f996 100644 --- a/roles/sap_swpm/templates/configfile.j2 +++ b/roles/sap_swpm/templates/configfile.j2 @@ -209,11 +209,11 @@ ora.SystemPassword = {{ sap_swpm_db_system_password }} # credentials_anydb_sapase ###### nwUsers.syb.sybsidPassword = {{ sap_swpm_sap_sidadm_password }} -# SYB.NW_DB.encryptionMasterKeyPassword = SYB.NW_DB.sa_pass = {{ sap_swpm_master_password }} SYB.NW_DB.sapsa_pass = {{ sap_swpm_master_password }} SYB.NW_DB.sapsr3_pass = {{ sap_swpm_master_password }} SYB.NW_DB.sapsr3db_pass = {{ sap_swpm_db_system_password }} +# SYB.NW_DB.encryptionMasterKeyPassword = # SYB.NW_DB.sapsso_pass = # SYB.NW_DB.sslPassword = {% endif %} @@ -234,8 +234,20 @@ Sdb_Schema_Dialogs.dbSchemaPassword = {{ sap_swpm_db_schema_password }} ###### # credentials_nwas_ssfs ###### +HDB_Userstore.useABAPSSFS = true # NW_ABAP_SSFS_CustomKey.ssfsKeyInputFile = -# HDB_Userstore.useABAPSSFS = false +{% endif %} + +{% if 'credentials_hdbuserstore' in sap_swpm_inifile_list %} +###### +# credentials_hdbuserstore +###### +HDB_Userstore.useABAPSSFS = false +# HDB_Userstore.doNotResolveHostnames = +# HDB_Userstore.HDB_USE_IDENT = +# HDB_Userstore.systemDBPort = +# NW_HDB_DBClient.checkCreateUserstore = true +# NW_HDB_DBClient.clientPathStrategy = LOCAL {% endif %} {% if 'db_config_hana' in sap_swpm_inifile_list %} @@ -243,14 +255,16 @@ Sdb_Schema_Dialogs.dbSchemaPassword = {{ sap_swpm_db_schema_password }} # db_config_hana ###### storageBasedCopy.hdb.instanceNumber = {{ sap_swpm_db_instance_nr }} -# HDB_Schema_Check_Dialogs.dropSchema = false HDB_Schema_Check_Dialogs.schemaName = {{ sap_swpm_db_schema }} + +{% if 'nw_config_additional_application_server_instance' in sap_swpm_inifile_list %} +HDB_Schema_Check_Dialogs.validateSchemaName = true +{% else %} HDB_Schema_Check_Dialogs.validateSchemaName = false -# HDB_Userstore.doNotResolveHostnames = -# NW_HDB_DBClient.checkCreateUserstore = true +{% endif %} + +# HDB_Schema_Check_Dialogs.dropSchema = false # hdb.create.dbacockpit.user = false -# HDB_Userstore.systemDBPort = -# HDB_Userstore.HDB_USE_IDENT = {% endif %} {% if 'db_config_anydb_all' in sap_swpm_inifile_list %} @@ -297,13 +311,13 @@ storageBasedCopy.ora.listenerName = SAPORALISTENER # storageBasedCopy.ora.listenerPort = storageBasedCopy.ora.ABAPSchema = {{ sap_swpm_db_schema_abap }} # storageBasedCopy.ora.JavaSchema = {{ sap_swpm_db_schema_java }} +# storageBasedCopy.ora.swowner = oracle +ora.createStatisticsCodeABAP = SKIP +ora.createStatisticsCodeJAVA = SKIP ora.multitenant.pdbsid = {{ sap_swpm_sid | upper }} ora.whatInstallation = isSingle # ora.IgnoreClientVersion = false # ora.maxDatafileSize = 2000 -# storageBasedCopy.ora.swowner = oracle -ora.createStatisticsCodeABAP = SKIP -ora.createStatisticsCodeJAVA = SKIP #### Oracle Multitenant Pluggable DB: #### #### a single Oracle Container Database (CDB) can host multiple Oracle Pluggable Databases (PDB) #### @@ -413,7 +427,6 @@ NW_Recovery_Install_HDB.sidAdmPassword = {{ sap_swpm_db_sidadm_password }} # NW_HDB_getDBInfo.tenantOsGroup = {{ sap_swpm_db_sid | lower }}grp # NW_HDB_getDBInfo.tenantOsUser = {{ sap_swpm_db_sid | lower }}usr # NW_HDB_getDBInfo.tenantPort = -# NW_HDB_DBClient.clientPathStrategy = LOCAL {% endif %} {% if 'db_connection_nw_anydb_ibmdb2' in sap_swpm_inifile_list %} @@ -453,15 +466,15 @@ HDB_Recovery_Dialogs.sapControlWsdlUrl = http://{{ sap_swpm_db_host }}:5{{ sap_s HDB_Recovery_Dialogs.sidAdmName = {{ sap_swpm_db_sid | lower }}adm HDB_Recovery_Dialogs.sidAdmPassword = {{ sap_swpm_db_sidadm_password }} # HDB_Recovery_Dialogs.backupDestinationType = File -# HDB_System_Check_Dialogs.initTopology = false +# HDB_Recovery_Dialogs.licenseFile = # HDB_Recovery_Dialogs.skipExistenceCheck = false # HDB_Recovery_Dialogs.sourceDatabaseSid = # HDB_Recovery_Dialogs.useLicenseFile = false -# HDB_Recovery_Dialogs.licenseFile = # NW_Recovery_Install_HDB.checkIntegrity = false # NW_Recovery_Install_HDB.backupLocationHANA = # NW_Recovery_Install_HDB.backupLocationSAP = # NW_Recovery_Install_HDB.loadOrMount = load +# HDB_System_Check_Dialogs.initTopology = false # NW_CreateDBandLoad.movePVCforUsagePiAndDi = {% endif %} @@ -482,16 +495,17 @@ NW_CI_Instance_ABAP_Reports.executeReportsForDepooling = false NW_getFQDN.FQDN = {{ sap_swpm_fqdn }} NW_getFQDN.setFQDN = {{ sap_swpm_set_fqdn | lower }} # NW_getFQDN.resolve = true -NW_getLoadType.loadType = {{ sap_swpm_load_type }} -# NW_getUnicode.isUnicode = +NW_GetSidNoProfiles.sid = {{ sap_swpm_sid }} +# NW_GetSidNoProfiles.sapmnt = /sapmnt +# NW_GetSidNoProfiles.strictSidCheck = true +# NW_GetSidNoProfiles.unicode = true NW_readProfileDir.profileDir = /sapmnt/{{ sap_swpm_sid | upper }}/profile # NW_readProfileDir.profilesAvailable = +NW_getLoadType.loadType = {{ sap_swpm_load_type }} +# NW_getUnicode.isUnicode = # MessageServer.configureAclInfo = false # NW_Exit_Before_Systemstart.exit = false # NW_adaptProfile.skipSecurityProfileSettings = false -NW_GetSidNoProfiles.sid = {{ sap_swpm_sid }} -# NW_GetSidNoProfiles.strictSidCheck = true -# NW_GetSidNoProfiles.unicode = true # OS4.DestinationASP = {% endif %} @@ -528,10 +542,10 @@ NW_JAVA_Export.keyPhrase = {{ sap_swpm_master_password }} ###### NW_CI_Instance.ciVirtualHostname = {{ sap_swpm_pas_instance_hostname }} NW_CI_Instance.ciInstanceNumber = {{ sap_swpm_pas_instance_nr }} -# NW_WPConfiguration.ciBtcWPNumber = 6 -# NW_WPConfiguration.ciDialogWPNumber = 10 # NW_CI_Instance.nodesNum = # NW_CI_Instance.nodesNumber = defNodes +# NW_WPConfiguration.ciBtcWPNumber = 6 +# NW_WPConfiguration.ciDialogWPNumber = 10 {% endif %} {% if 'nw_config_additional_application_server_instance' in sap_swpm_inifile_list %} @@ -568,11 +582,11 @@ nw_instance_ers.ersInstanceNumber = {{ sap_swpm_ers_instance_nr }} NW_CI_Instance.ciMSPort = 36{{ sap_swpm_ascs_instance_nr }} NW_checkMsgServer.abapMSPort = 36{{ sap_swpm_ascs_instance_nr }} # NW_CI_Instance.ciMSPortInternal = -# NW_SCS_Instance.scsMSPort = -# NW_CI_Instance.scsMSPortInternal = # NW_CI_Instance.createGlobalProxyInfoFile = false -# NW_SCS_Instance.createGlobalProxyInfoFile = false # NW_CI_Instance.createGlobalRegInfoFile = false +# NW_CI_Instance.scsMSPortInternal = +# NW_SCS_Instance.scsMSPort = +# NW_SCS_Instance.createGlobalProxyInfoFile = false # NW_SCS_Instance.createGlobalRegInfoFile = false {% endif %} @@ -583,12 +597,12 @@ NW_checkMsgServer.abapMSPort = 36{{ sap_swpm_ascs_instance_nr }} UmeConfiguration.adminName = J2EE_ADM_{{ sap_swpm_sid }} UmeConfiguration.adminPassword = {{ sap_swpm_ume_j2ee_admin_password }} UmeConfiguration.guestName = J2EE_GST_{{ sap_swpm_sid }} -# UmeConfiguration.sapjsfName = SAPJSF UmeConfiguration.sapjsfPassword = {{ sap_swpm_ume_sapjsf_password }} UmeConfiguration.umeClient = {{ sap_swpm_ume_client_nr }} UmeConfiguration.umeHost = {{ sap_swpm_pas_instance_hostname }} UmeConfiguration.umeInstance = {{ sap_swpm_ume_instance_nr }} UmeConfiguration.umeType = {{ sap_swpm_ume_type }} +# UmeConfiguration.sapjsfName = SAPJSF {% endif %} {% if 'nw_config_java_feature_template_ids' in sap_swpm_inifile_list %} @@ -727,7 +741,6 @@ NW_Language_Inst_Dialogs.languages = AR,BG,CA,CS,DA,EL,ES,ET,FI,FR,HE,HI,HR,HU,I nwUsers.sapadmUID = {{ sap_swpm_sapadm_uid }} nwUsers.sapsysGID = {{ sap_swpm_sapsys_gid }} nwUsers.sidAdmUID = {{ sap_swpm_sidadm_uid }} -# NW_GetSidNoProfiles.sapmnt = /sapmnt {% endif %} {% if 'swpm_installation_media_download_service' in sap_swpm_inifile_list %} @@ -752,23 +765,23 @@ nwUsers.sidAdmUID = {{ sap_swpm_sidadm_uid }} # Not in use by sap_swpm Ansible Role ###### # DiagnosticsAgent.dasidAdmPassword = {{ sap_swpm_diagnostics_agent_password }} +# DiagnosticsAgent.installSAPHostAgent # DiagnosticsAgent.InstanceNumber # DiagnosticsAgent.LogicalHostName # DiagnosticsAgent.SAPJVMVersion +# DiagnosticsAgent.SAProuter.Password +# DiagnosticsAgent.SAProuter.RouteString # DiagnosticsAgent.SID -# DiagnosticsAgent.installSAPHostAgent -# DiagnosticsAgent.SolMan.HostName -# DiagnosticsAgent.SolMan.PortNumber -# DiagnosticsAgent.SolMan.UserName -# DiagnosticsAgent.SolMan.Password -# DiagnosticsAgent.SolMan.UseSSL # DiagnosticsAgent.SLD.Connection -# DiagnosticsAgent.SolMan.Connection # DiagnosticsAgent.SLD.HostName -# DiagnosticsAgent.SLD.PortNumber -# DiagnosticsAgent.SLD.UserName # DiagnosticsAgent.SLD.Password +# DiagnosticsAgent.SLD.PortNumber # DiagnosticsAgent.SLD.UseHTTPS -# DiagnosticsAgent.SAProuter.RouteString -# DiagnosticsAgent.SAProuter.Password +# DiagnosticsAgent.SLD.UserName +# DiagnosticsAgent.SolMan.Connection +# DiagnosticsAgent.SolMan.HostName +# DiagnosticsAgent.SolMan.Password +# DiagnosticsAgent.SolMan.PortNumber +# DiagnosticsAgent.SolMan.UserName +# DiagnosticsAgent.SolMan.UseSSL {% endif %}