deploy/ansible/roles-sap/5.0.2-ers-ha-install/tasks/main.yaml (195 lines of code) (raw):
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# /*---------------------------------------------------------------------------8
# | |
# | SAP: Register BOM |
# | SAP SCS: deploy SCS Parameter file install template |
# | SAP SCS: Install |
# | |
# +------------------------------------4--------------------------------------*/
---
- name: "ERS Install: Set BOM facts"
ansible.builtin.set_fact:
sap_inifile: "{{ bom_base_name }}-ers-{{ ansible_hostname }}.params"
sap_inifile_template: "ers-inifile-param.j2"
dir_params: "{{ tmp_directory }}/.{{ sid_to_be_deployed.sid | lower }}-params"
# 0x) Create hidden directory for parameter files
- name: "ERS Install: Create directories"
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
mode: '{{ item.mode }}'
loop:
- { mode: '0755', path: '{{ dir_params }}' }
- { mode: '0755', path: '{{ tmp_directory }}/{{ sid_to_be_deployed.sid | upper }}' }
- { mode: '0755', path: '/etc/sap_deployment_automation/{{ sid_to_be_deployed.sid | upper }}' }
# Returns bom object
- name: "ERS Install: Register BoM"
ansible.builtin.include_role:
name: roles-sap/3.3.1-bom-utility
tasks_from: bom-register
vars:
bom_name: "{{ bom_base_name }}"
task_prefix: "ERS Install: "
sa_enabled: true
- name: "ERS Install: register variables"
ansible.builtin.set_fact:
ers_bom_id: "{{ bom.product_ids.ers_ha }}"
ers_bom_instance_type: "{% if bom.InstanceType is defined %}{{ bom.InstanceType }}{% else %}ABAP{% endif %}"
- name: "SCS Install: register additional variables"
ansible.builtin.set_fact:
installGateway: "{% if ers_bom_instance_type == 'ABAP' %}true{% else %}false{% endif %}"
- name: "ERS Install: reset"
ansible.builtin.file:
path: "/etc/sap_deployment_automation/{{ sid_to_be_deployed.sid | upper }}/sap_deployment_ers.txt"
state: absent
when: reinstall
- name: "ERS Install: check if installed"
ansible.builtin.stat:
path: "/etc/sap_deployment_automation/{{ sid_to_be_deployed.sid | upper }}/sap_deployment_ers.txt"
register: ers_installed
when: node_tier == 'ers'
- name: "ERS Install"
block:
- name: "ERS Install: check media exists"
ansible.builtin.stat:
path: "{{ target_media_location }}/SWPM/sapinst"
register: sapinst_found
- name: "ErrorHandling"
ansible.builtin.fail:
msg: "INSTALL:0004:Unable to find sapinst, please check that the installation media is mounted"
when: not sapinst_found.stat.exists
- name: "ERS Install: Template processing - Create ini file {{ sap_inifile }} from {{ sap_inifile_template }}"
ansible.builtin.template:
src: "{{ sap_inifile_template }}"
dest: "{{ dir_params }}/{{ sap_inifile }}"
mode: 0644
force: true
vars:
sap_profile_dir: "/sapmnt/{{ sid_to_be_deployed.sid | upper }}/profile"
sap_scs_hostname: "{{ scs_virtual_hostname }}"
param_directory: "{{ dir_params }}"
set_ascsInstallGateway: "{{ installGateway | bool | lower }}"
set_ascsInstallWebDispatcher: "{{ ascsInstallWebDispatcher | default(false) | bool | lower }}"
- name: "ERS Install: check if installed"
ansible.builtin.debug:
msg: "ERS Install flag: {{ ers_installed }}"
verbosity: 2
- name: "ERS Install: install variables"
ansible.builtin.debug:
msg:
- "INIFILE: {{ sap_inifile }}"
- "PRODUCT ID: {{ bom.product_ids.ers_ha }}"
verbosity: 2
- name: "ERS Install: Assign ownership"
ansible.builtin.file:
path: "{{ item.path }}"
owner: "{{ sid_to_be_deployed.sid | lower }}adm"
group: sapsys
recurse: true
state: directory
loop:
- { path: '/sapmnt/{{ sid_to_be_deployed.sid | upper }}' }
- { path: '/usr/sap/{{ sid_to_be_deployed.sid | upper }}/SYS' }
- { path: '/usr/sap/{{ sid_to_be_deployed.sid | upper }}/ERS{{ ers_instance_number }}' }
# *====================================4=======================================8
# SAP ERS: Install
# 2230669 - System Provisioning Using a Parameter Input File
#
# *====================================4=======================================8
- name: "ERS Install: Create temp directory for sid"
ansible.builtin.file:
path: "{{ tmp_directory }}/{{ sid_to_be_deployed.sid | upper }}"
state: directory
mode: 0755
- name: "ERS Installation Block"
block:
- name: "ERS Install: Create Symlink"
ansible.builtin.import_tasks: ../../../roles-sap-os/2.10-sap-notes/tasks/2.10.3119751.yaml
when:
- ansible_os_family == 'RedHat'
- name: "ERS Install: Status"
ansible.builtin.debug:
msg: "Starting sapinst for {{ sid_to_be_deployed.sid | upper }}. Please wait"
- name: "ERS Install: SAPInst"
ansible.builtin.shell: |
umask {{ custom_umask | default('022') }} ;
./sapinst SAPINST_INPUT_PARAMETERS_URL={{ dir_params }}/{{ sap_inifile }} \
SAPINST_EXECUTE_PRODUCT_ID={{ bom.product_ids.ers_ha }} \
SAPINST_SKIP_DIALOGS=true \
SAPINST_START_GUISERVER=false \
SAPINST_USE_HOSTNAME={{ ers_virtual_hostname }} \
IS_HOST_LOCAL_USING_STRING_COMPARE=true
args:
chdir: "{{ target_media_location }}/SWPM"
creates: "/etc/sap_deployment_automation/{{ sid_to_be_deployed.sid | upper }}/sap_deployment_ers.txt"
environment:
SAPSYSTEMNAME: "{{ sid_to_be_deployed.sid | upper }}"
TMPDIR: "{{ tmp_directory }}/{{ sid_to_be_deployed.sid | upper }}"
register: ers_installation
failed_when: ers_installation.rc > 0
rescue:
- name: "RESCUE - ERS Install: Check '/usr/sap/<SAPSID>/SYS/exe/uc/linuxx86_64' exists"
ansible.builtin.stat:
path: '/usr/sap/{{ sid_to_be_deployed.sid | upper }}/SYS/exe/uc/linuxx86_64'
register: stat_sys_exe_uc
when: node_tier == 'ers'
- name: "RESCUE - ERS Install: Assign ownership"
ansible.builtin.file:
path: "{{ item.path }}"
owner: "{{ sid_to_be_deployed.sid | lower }}adm"
group: sapsys
recurse: true
state: directory
loop:
- { path: '/sapmnt/{{ sid_to_be_deployed.sid | upper }}' }
- { path: '/usr/sap/{{ sid_to_be_deployed.sid | upper }}/SYS' }
- { path: '/usr/sap/{{ sid_to_be_deployed.sid | upper }}/ERS{{ ers_instance_number }}' }
# Add IS_HOST_LOCAL_USING_STRING_COMPARE=true to fix The host with the
# name <host> is not a valid virtual host on the local host
# SAP Note# 2279110
- name: "RESCUE - ERS Install: SAPInst"
ansible.builtin.shell: |
umask {{ custom_umask | default('022') }} ;
./sapinst SAPINST_INPUT_PARAMETERS_URL={{ dir_params }}/{{ sap_inifile }} \
SAPINST_EXECUTE_PRODUCT_ID={{ bom.product_ids.ers_ha }} \
SAPINST_SKIP_DIALOGS=true \
SAPINST_START_GUISERVER=false \
SAPINST_USE_HOSTNAME={{ ers_virtual_hostname }} \
IS_HOST_LOCAL_USING_STRING_COMPARE=true
args:
chdir: "{{ target_media_location }}/SWPM"
creates: "/etc/sap_deployment_automation/{{ sid_to_be_deployed.sid | upper }}/sap_deployment_ers.txt"
environment:
SAPSYSTEMNAME: "{{ sid_to_be_deployed.sid | upper }}"
TMPDIR: "{{ tmp_directory }}/{{ sid_to_be_deployed.sid | upper }}"
register: ers_installation
failed_when: ers_installation.rc > 0
- name: "ERS Install: Installation results"
block:
- name: "ERS Install: Installation results (debug)"
ansible.builtin.debug:
var: ers_installation
verbosity: 2
- name: "ERS Install: Save installation results"
ansible.builtin.set_fact:
ers_installation_succeeded: false
- name: "ERS Install: Installation results"
ansible.builtin.fail:
msg: ERS installation failed"
when: ers_installation.rc > 0
- name: "ERS Install: Cleanup ini file {{ ansible_hostname }}"
ansible.builtin.file:
path: "{{ dir_params }}/{{ sap_inifile }}"
state: absent
- name: "ERS Install: Installation results"
ansible.builtin.debug:
var: ers_installation
when: ers_installation.rc > 0
- name: "ERS Install: Installation results"
ansible.builtin.debug:
msg: "ERS Installation succeeded"
when: ers_installation.rc == 0
- name: "ERS Install: Save installation results"
ansible.builtin.set_fact:
ers_installation_succeeded: true
when: ers_installation.rc == 0
- name: "ERS Install: flag"
ansible.builtin.file:
path: "/etc/sap_deployment_automation/{{ sid_to_be_deployed.sid | upper }}/sap_deployment_ers.txt"
state: touch
mode: 0755
when:
- node_tier == 'ers'
- not ers_installed.stat.exists
- name: "ERS Install status"
block:
- name: "ERS Install status"
ansible.builtin.debug:
msg: "ERS is already installed"
- name: "ERS: - return value"
ansible.builtin.set_fact:
ers_already_installed: true
when:
- "'ers' in supported_tiers"
- ers_installed.stat.exists
# *====================================4=======================================8
...
# /*---------------------------------------------------------------------------8
# | END |
# +------------------------------------4--------------------------------------*/