--- schemaVersion: "2.2" description: "Execute installation" parameters: DbProductId: type: String description: "(Required) The id of the product to be installed" default: '' PasProductId: type: String description: "(Required) The id of the product to be installed" default: '' Sid: type: String description: "(Required) The system id of SAP system" default: '' Hostname: type: String description: '(Required) The Hostname of the instance' default: '' MasterPassword: type: String description: '(Required) SAP NetWeaver Master Password' default: '' PasIniFile: type: String description: '(Required) Path to INI file' default: '/sapmnt/software/pas.params' DbIniFile: type: String description: '(Required) Path to INI file' default: '/sapmnt/software/db.params' DbHostname: type: String description: '(Required) The hostname of HANA DB Host' default: '' DbPrivateIp: type: String description: '(Required) The IP of HANA DB Host' default: '' AscsHostname: type: String description: '(Required) The hostname of HANA DB Host' default: '' DnsPrivateZoneName: type: String description: "(Optional) DNS Zone name to specify FQDN in hosts" default: '${DNSPrivateZoneName}' mainSteps: - action: "aws:runShellScript" name: "Set_services_file" inputs: runCommand: - #!/bin/bash - cat /sapmnt/services >> /etc/services - action: "aws:runShellScript" name: "Prepare_db_ini" inputs: runCommand: - #!/bin/bash - DB_INI_FILE={{ DbIniFile }} - SID=`echo {{ Sid }} | tr '[:lower:]' '[:upper:]'}` - sid=`echo {{ Sid }} | tr '[:upper:]' '[:lower:]'}` - SIDadmUID=1003 - SAPsysGID=1004 - SW_TARGET=/sapmnt/software - SAPInstanceNum=00 - HOSTED_ZONE={{ DnsPrivateZoneName }} - SIDADM=$${sid}adm - SAP_SCHEMA_NAME=SAPHANADB - sed -i "/NW_HDB_getDBInfo.dbhost/ c\NW_HDB_getDBInfo.dbhost = {{ DbHostname }}" $DB_INI_FILE - #set the password from the SSM parameter store - sed -i "/NW_HDB_getDBInfo.systemPassword/ c\NW_HDB_getDBInfo.systemPassword = {{ MasterPassword }}" $DB_INI_FILE - sed -i "/storageBasedCopy.hdb.systemPassword/ c\storageBasedCopy.hdb.systemPassword = {{ MasterPassword }}" $DB_INI_FILE - sed -i "/HDB_Schema_Check_Dialogs.schemaPassword/ c\HDB_Schema_Check_Dialogs.schemaPassword = {{ MasterPassword }}" $DB_INI_FILE - sed -i "/NW_GetMasterPassword.masterPwd/ c\NW_GetMasterPassword.masterPwd = {{ MasterPassword }}" $DB_INI_FILE - sed -i "/NW_HDB_DB.abapSchemaPassword/ c\NW_HDB_DB.abapSchemaPassword = {{ MasterPassword }}" $DB_INI_FILE - sed -i "/NW_HDB_getDBInfo.systemDbPassword/ c\NW_HDB_getDBInfo.systemDbPassword = {{ MasterPassword }}" $DB_INI_FILE - sed -i "/NW_Recovery_Install_HDB.sidAdmPassword/ c\NW_Recovery_Install_HDB.sidAdmPassword = {{ MasterPassword }}" $DB_INI_FILE - #set the SID and Schema - sed -i "/NW_HDB_getDBInfo.dbsid/ c\NW_HDB_getDBInfo.dbsid = $${SID}" $DB_INI_FILE - sed -i "/NW_readProfileDir.profileDir/ c\NW_readProfileDir.profileDir = /sapmnt/$${SID}/profile" $DB_INI_FILE - sed -i "/NW_HDB_DB.abapSchemaName/ c\NW_HDB_DB.abapSchemaName = $${SAP_SCHEMA_NAME}" $DB_INI_FILE - sed -i "/NW_Recovery_Install_HDB.sidAdmName/ c\NW_Recovery_Install_HDB.sidAdmName = $${SIDADM}" $DB_INI_FILE - sed -i "/NW_HDB_getDBInfo.instanceNumber/ c\NW_HDB_getDBInfo.instanceNumber = $${SAPInstanceNum}" $DB_INI_FILE - sed -i "/storageBasedCopy.hdb.instanceNumber/ c\storageBasedCopy.hdb.instanceNumber = $${SAPInstanceNum}" $DB_INI_FILE - #set the UID and GID - sed -i "/nwUsers.sidAdmUID/ c\nwUsers.sidAdmUID = $${SIDadmUID}" $DB_INI_FILE - sed -i "/nwUsers.sapsysGID/ c\nwUsers.sapsysGID = $${SAPsysGID}" $DB_INI_FILE # - #set the CD location based on $SW_TARGET - sed -i "/archives.downloadBasket/ c\archives.downloadBasket = $${SW_TARGET}/S4H1909" $DB_INI_FILE - sed -i "/NW_Recovery_Install_HDB.extractLocation/ c\NW_Recovery_Install_HDB.extractLocation = /backup/data/$${SID}" $DB_INI_FILE - action: "aws:runShellScript" name: "Prepare_pas_ini" inputs: runCommand: - #!/bin/bash - PAS_INI_FILE={{ PasIniFile }} - SIDadmUID=1003 - SAPsysGID=1004 - SW_TARGET=/sapmnt/software - SAPInstanceNum=00 - HOSTED_ZONE={{ DnsPrivateZoneName }} - LHOSTNAME=`hostname` - FQDN=$${LHOSTNAME}.$${HOSTED_ZONE} - ASCS_HOSTNAME={{ AscsHostname }} - SAPMasterPassword={{ MasterPassword }} - SID=`echo {{ Sid }} | tr '[:lower:]' '[:upper:]'}` - SAP_SCHEMA_NAME=SAPHANADB - #set the password from the SSM parameter store - sed -i "/NW_GetMasterPassword.masterPwd/ c\NW_GetMasterPassword.masterPwd = {{ MasterPassword }}" $PAS_INI_FILE - sed -i "/storageBasedCopy.hdb.systemPassword/ c\storageBasedCopy.hdb.systemPassword = {{ MasterPassword }}" $PAS_INI_FILE - sed -i "/storageBasedCopy.abapSchemaPassword/ c\storageBasedCopy.abapSchemaPassword = {{ MasterPassword }}" $PAS_INI_FILE - sed -i "/HDB_Schema_Check_Dialogs.schemaPassword/ c\HDB_Schema_Check_Dialogs.schemaPassword = {{ MasterPassword }}" $PAS_INI_FILE - sed -i "/NW_HDB_getDBInfo.systemDbPassword/ c\NW_HDB_getDBInfo.systemDbPassword = {{ MasterPassword }}" $PAS_INI_FILE - sed -i "/nwUsers.sidadmPasswod/ c\nwUsers.sidadmPassword = {{ MasterPassword }}" $PAS_INI_FILE - sed -i "/hostAgent.sapAdmPassword/ c\hostAgent.sapAdmPassword = {{ MasterPassword }}" $PAS_INI_FILE - sed -i "/NW_HDB_DB.abapSchemaPassword/ c\NW_HDB_DB.abapSchemaPassword = {{ MasterPassword }}" $PAS_INI_FILE - #set the profile directory - sed -i "/NW_readProfileDir.profileDir/ c\NW_readProfileDir.profileDir = /sapmnt/$${SID}/profile" $PAS_INI_FILE - #set the SID and Schema - sed -i "/NW_HDB_DB.abapSchemaName/ c\NW_HDB_DB.abapSchemaName = $${SAP_SCHEMA_NAME}" >> $PAS_INI_FILE - sed -i "/storageBasedCopy.hdb.instanceNumber/ c\storageBasedCopy.hdb.instanceNumber = $${SAPInstanceNum}" $PAS_INI_FILE - sed -i "/NW_CI_Instance.ascsInstanceNumber/ c\NW_CI_Instance.ascsInstanceNumber = $${SAPInstanceNum}" $PAS_INI_FILE - sed -i "/NW_CI_Instance.ciInstanceNumber/ c\NW_CI_Instance.ciInstanceNumber = $${SAPInstanceNum}" $PAS_INI_FILE - #set the UID and GID - sed -i "/nwUsers.sidAdmUID/ c\nwUsers.sidAdmUID = $${SIDadmUID}" $PAS_INI_FILE - sed -i "/nwUsers.sapsysGID/ c\nwUsers.sapsysGID = $${SAPsysGID}" $PAS_INI_FILE - #set the CD location based on $SW_TARGET - sed -i "/archives.downloadBasket/ c\archives.downloadBasket = $${SW_TARGET}/S4H1909" $PAS_INI_FILE - sed -i "/NW_getFQDN.FQDN/ c\NW_getFQDN.FQDN = $${HOSTED_ZONE}" $PAS_INI_FILE - sed -i "/NW_CI_Instance.ciVirtualHostname/ c\NW_CI_Instance.ciVirtualHostname = $${HOSTNAME}" $PAS_INI_FILE - sed -i "/NW_CI_Instance.ascsVirtualHostname/ c\NW_CI_Instance.ascsVirtualHostname = $${ASCS_HOSTNAME}" $PAS_INI_FILE - action: "aws:runShellScript" name: "Execute_installation_of_db_instance" inputs: runCommand: - #!/bin/bash - echo '`date` Starting the Installation process of DB instance...' | tee -a $SSM_LOG_FILE - SWPMFILE=`find /sapmnt/software/SWPM-SUM/ -name SWPM*SAR` - chmod 775 /sapmnt/software/utils/sapcar - /sapmnt/software/utils/sapcar -xvf $SWPMFILE -R /sapmnt/software/SWPM - SAPAliasName=`hostname` - chmod 755 /sapmnt/software/SWPM/sapinst - cd /sapmnt/software/SWPM - ./sapinst SAPINST_INPUT_PARAMETERS_URL=/sapmnt/software/db.params SAPINST_EXECUTE_PRODUCT_ID={{DbProductId}} SAPINST_USE_HOSTNAME=$${SAPAliasName} SAPINST_SKIP_DIALOGS="true" SAPINST_START_GUISERVER=false | tee -a $SSM_LOG_FILE - action: "aws:runShellScript" name: "Execute_installation_of_pas_instance" inputs: runCommand: - #!/bin/bash - echo '`date` Starting the Installation process...' | tee -a $SSM_LOG_FILE - SAPAliasName=`hostname` - chmod 755 /sapmnt/software/SWPM/sapinst - cd /sapmnt/software/SWPM - ./sapinst SAPINST_INPUT_PARAMETERS_URL=/sapmnt/software/pas.params SAPINST_EXECUTE_PRODUCT_ID={{PasProductId}} SAPINST_USE_HOSTNAME=$${SAPAliasName} SAPINST_SKIP_DIALOGS="true" SAPINST_START_GUISERVER=false | tee -a $SSM_LOG_FILE - action: "aws:runShellScript" name: "Validate_Installation" inputs: runCommand: - #!/bin/bash - sid=`echo {{ Sid }} | tr '[:upper:]' '[:lower:]'}` - SID=`echo {{ Sid }} | tr '[:lower:]' '[:upper:]'}` - HOSTNAME=`hostname` - SIDADM=$${sid}adm - chown -R $${SIDADM}:sapsys /usr/sap/trans - su - $SIDADM -c "stopsap $HOSTNAME" | tee -a $SSM_LOG_FILE - su - $SIDADM -c "startsap $HOSTNAME" | tee -a $SSM_LOG_FILE - sleep 15 - _SAP_UP=$(netstat -an | grep 3200 | grep tcp | grep LISTEN | wc -l ) - echo "This is the value of SAP_UP - $_SAP_UP" | tee -a $SSM_LOG_FILE - if [ "$_SAP_UP" -eq 1 ] - then - echo "$(date) __ done installing PAS." | tee -a $SSM_LOG_FILE - exit 0 - else - echo "$(date) __ PAS could not be installed successfully. Fix the issue and rerun the automation" | tee -a $SSM_LOG_FILE - exit 1 - fi