deploy/ansible/roles-sap/5.6-scsers-pacemaker/tasks/5.6.4.1-scsersprofile.yaml (201 lines of code) (raw):

# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. --- ############################################################################################### # Enqueue Server 2 Information # # SAP introduced support for enqueue server 2, including replication, as of SAP NW 7.52. # # Starting with ABAP Platform 1809, enqueue server 2 is installed by default. # # See SAP note 2630416 for enqueue server 2 support. # ############################################################################################### - name: "5.6 SCSERS - Add the user '{{ sap_sid | lower }}adm' to haclient group" become: true ansible.builtin.user: append: true name: "{{ sap_sid | lower }}adm" comment: "{{ sap_sid | lower }}adm User account" groups: haclient # For systemd services the SAP ASCS/SCS and ERS resources are created as systemd services # the path for the service file is /etc/systemd/system/SAP<SID>_<InstanceNumber>.service - name: "5.6 SCSERS - check if the SAP ASCS/SCS and ERS resources are created as systemd services" ansible.builtin.stat: path: "/etc/systemd/system/SAP{{ sap_sid | upper }}_{{ sap_instance_number }}.service" register: systemd_service_file_path loop: - "{{ scs_instance_number }}" - "{{ ers_instance_number }}" loop_control: loop_var: sap_instance_number - name: "5.6 SCSERS - Set fact for the systemd services existance" ansible.builtin.debug: var: systemd_service_file_path verbosity: 2 - name: "5.6 SCSERS - Set fact for the systemd services existance" ansible.builtin.set_fact: systemd_service_names: "{{ systemd_service_file_path.results | selectattr('stat.exists', 'equalto', true) | map(attribute='stat.path') | regex_replace('/etc/systemd/system/', '') }}" - name: "5.6 SCSERS - SUSE - Add the ASCS and ERS service definitions from sapservices file" ansible.builtin.lineinfile: backup: true path: /usr/sap/sapservices regexp: "{{ item.regexp }}" line: "{{ item.lif }}" state: present loop: - {regexp: "LD_LIBRARY_PATH=/usr/sap/{{ sap_sid | upper }}/{{ instance_type | upper }}{{ scs_instance_number }}/exe", lif: "LD_LIBRARY_PATH=/usr/sap/{{ sap_sid | upper }}/{{ instance_type | upper }}{{ scs_instance_number }}/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/{{ sap_sid | upper }}/{{ instance_type | upper }}{{ scs_instance_number }}/exe/sapstartsrv pf=/usr/sap/{{ sap_sid }}/SYS/profile/{{ sap_sid }}_{{ instance_type | upper }}{{ scs_instance_number }}_{{ scs_virtual_hostname }} -D -u {{ sap_sid | lower }}adm" } - {regexp: "LD_LIBRARY_PATH=/usr/sap/{{ sap_sid | upper }}/ERS{{ ers_instance_number }}/exe", lif: "LD_LIBRARY_PATH=/usr/sap/{{ sap_sid | upper }}/ERS{{ ers_instance_number }}/exe:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; /usr/sap/{{ sap_sid | upper }}/ERS{{ ers_instance_number }}/exe/sapstartsrv pf=/usr/sap/{{ sap_sid }}/SYS/profile/{{ sap_sid }}_ERS{{ ers_instance_number }}_{{ ers_virtual_hostname }} -D -u {{ sap_sid | lower }}adm" } when: - ansible_os_family | upper == "SUSE" - not systemd_service_names is defined - systemd_service_names | length > 0 - name: "5.6 SCSERS - SUSE - Add the ASCS and ERS systemd service definitions from sapservices file" ansible.builtin.lineinfile: backup: true path: /usr/sap/sapservices regexp: "{{ item.regexp }}" line: "{{ item.lif }}" state: present loop: - {regexp: "systemctl --no-ask-password start SAP{{ sap_sid | upper }}_{{ scs_instance_number }}", lif: "systemctl --no-ask-password start SAP{{ sap_sid | upper }}_{{ scs_instance_number }} # sapstartsrv pf=/usr/sap/{{ sap_sid | upper }}/SYS/profile/{{ sap_sid | upper }}_{{ instance_type | upper }}{{ scs_instance_number }}_{{ scs_virtual_hostname }}" } - {regexp: "systemctl --no-ask-password start SAP{{ sap_sid | upper }}_{{ ers_instance_number }}", lif: "systemctl --no-ask-password start SAP{{ sap_sid | upper }}_{{ ers_instance_number }} # sapstartsrv pf=/usr/sap/{{ sap_sid | upper }}/SYS/profile/{{ sap_sid | upper }}_ERS{{ ers_instance_number }}_{{ ers_virtual_hostname }}" } when: - ansible_os_family | upper == "SUSE" - hostvars[primary_instance_name]['ensa2'] | default(false) - systemd_service_names is defined - systemd_service_names | length > 0 - name: "5.6 SCSERS - REDHAT - Comment the ASCS and ERS service definitions from sapservices file" ansible.builtin.replace: backup: true path: /usr/sap/sapservices regexp: '^(?!#)(.*{{ sapservice }}.*)$' replace: '# \1' loop: - "{{ sap_sid | upper }}_{{ instance_type | upper }}{{ scs_instance_number }}_{{ scs_virtual_hostname }}" - "{{ sap_sid | upper }}_ERS{{ ers_instance_number }}_{{ ers_virtual_hostname }}" loop_control: label: "{{ sapservice }}" loop_var: sapservice when: - ansible_os_family | upper == "REDHAT" - name: "5.6 SCSERS - Calculate instance profile paths" ansible.builtin.set_fact: scs_instance_profile_path: "/sapmnt/{{ sap_sid | upper }}/profile/{{ sap_sid | upper }}_{{ instance_type | upper }}{{ scs_instance_number }}_{{ scs_virtual_hostname }}" ers_instance_profile_path: "/sapmnt/{{ sap_sid | upper }}/profile/{{ sap_sid | upper }}_ERS{{ ers_instance_number }}_{{ ers_virtual_hostname }}" - name: "5.6 SCSERS - ASCS, ERS profile changes" become: true when: - ansible_os_family | upper == "SUSE" - inventory_hostname == primary_instance_name block: - name: "5.6 SCSERS - ASCS Profile - add service/halib" ansible.builtin.blockinfile: path: '{{ scs_instance_profile_path }}' block: | service/halib = $(DIR_CT_RUN)/saphascriptco.so service/halib_cluster_connector = /usr/bin/sap_suse_cluster_connector register: scsservicehalib - name: "5.6 SCSERS - ERS Profile - add service/halib" ansible.builtin.blockinfile: path: '{{ ers_instance_profile_path }}' block: | service/halib = $(DIR_CT_RUN)/saphascriptco.so service/halib_cluster_connector = /usr/bin/sap_suse_cluster_connector register: ersservicehalib - name: "5.6 SCSERS - ASCS, ERS profile changes" become: true when: - ansible_os_family | upper == "REDHAT" - inventory_hostname == primary_instance_name block: - name: "5.6 SCSERS - ASCS Profile - add service/halib" ansible.builtin.blockinfile: path: '{{ scs_instance_profile_path }}' block: | service/halib = $(DIR_CT_RUN)/saphascriptco.so service/halib_cluster_connector = /usr/bin/sap_cluster_connector register: scsservicehalib - name: "5.6 SCSERS - ERS Profile - add service/halib" ansible.builtin.blockinfile: path: '{{ ers_instance_profile_path }}' block: | service/halib = $(DIR_CT_RUN)/saphascriptco.so service/halib_cluster_connector = /usr/bin/sap_cluster_connector register: ersservicehalib - name: "5.6 SCSERS - ASCS, ERS profile changes" become: true when: - inventory_hostname == primary_instance_name block: # SAP introduced support for enqueue server 2, including replication, as of SAP NW 7.52. # Starting with ABAP Platform 1809, enqueue server 2 is installed by default - name: "5.6 SCSERS - ASCS Profile - Comment Restart_Program_01" ansible.builtin.replace: path: '{{ scs_instance_profile_path }}' backup: true regexp: '^Restart_Program_01' replace: 'Start_Program_01' tags: - ascscomment - name: "5.6 SCSERS - ERS Profile - Comment Restart_Program_00 in ERS Profile" ansible.builtin.replace: path: '{{ ers_instance_profile_path }}' backup: true regexp: '^Restart_Program_00' replace: 'Start_Program_00' tags: - erscomment - name: "5.6 SCSERS - ERS Profile - Remove Autostart from ERS profile" ansible.builtin.replace: path: '{{ ers_instance_profile_path }}' regexp: '^Autostart' replace: '# Autostart' tags: - ersautostart # Following are the changes in ASCS/ERS profiles based if ENSA1 is applicable - name: "5.6 SCSERS - Add the keep alive parameter, if using ENSA1" ansible.builtin.lineinfile: path: '{{ scs_instance_profile_path }}' line: enque/encni/set_so_keepalive = TRUE tags: - keepalive when: - inventory_hostname == primary_instance_name - ensa1 | default(false) ################################################################################################################# # Profile changes for DB2 Installations # # To connect to the primary instance of the HADR configuration, the SAP application layer needs to use the # # virtual IP address that you defined and configured for the Azure Load Balancer # ################################################################################################################# - name: "Backward Compatibility - Check required Database HA variables" ansible.builtin.set_fact: database_high_availability: "{{ db_high_availability | default(false) }}" when: - db_high_availability is defined - database_high_availability is not defined - name: "5.6 - SCS / ASCS profile changes - DB2 Installations" become: true block: # execute the following tasks only when using ENSA1 # SAP introduced support for enqueue server 2, including replication, as of SAP NW 7.52. # Starting with ABAP Platform 1809, enqueue server 2 is installed by default - name: "5.6 SCSERS - Calculate instance profile paths" ansible.builtin.set_fact: scs_instance_profile_path: "/sapmnt/{{ sap_sid | upper }}/profile/{{ sap_sid | upper }}_{{ instance_type | upper }}{{ scs_instance_number }}_{{ scs_virtual_hostname }}" ers_instance_profile_path: "/sapmnt/{{ sap_sid | upper }}/profile/{{ sap_sid | upper }}_ERS{{ ers_instance_number }}_{{ ers_virtual_hostname }}" - name: "5.6 SCSERS - ASCS Profile - Comment Restart_Program_01 If Using ENSA1" ansible.builtin.replace: path: '{{ scs_instance_profile_path }}' backup: true regexp: '^Restart_Program_01' replace: 'Start_Program_01' tags: - ascscomment - name: "5.6 SCSERS - ERS Profile - Comment Restart_Program_00 in ERS Profile if using ENSA1" ansible.builtin.replace: path: '{{ ers_instance_profile_path }}' backup: true regexp: '^Restart_Program_00' replace: 'Start_Program_00' tags: - erscomment - name: "5.6 SCSERS - ERS Profile - Remove Autostart from ERS profile if using ENSA1" ansible.builtin.replace: path: '{{ ers_instance_profile_path }}' regexp: '^Autostart' replace: '# Autostart' tags: - ersautostart - name: "5.6 SCSERS - Add the keep alive parameter, if using ENSA1" ansible.builtin.lineinfile: path: '{{ scs_instance_profile_path }}' line: enque/encni/set_so_keepalive = TRUE tags: - keepalive when: - inventory_hostname == primary_instance_name - platform == 'DB2' - database_high_availability - ensa1 | default(false) ...