diff --git a/b1.gen.sh b/b1.gen.sh new file mode 100644 index 0000000..e17d0e1 --- /dev/null +++ b/b1.gen.sh @@ -0,0 +1,182 @@ +#!/bin/bash + +# ============================================================================== +# SAP Business One for HANA Silent Installation Configurator +# ============================================================================== +# This script interactively collects necessary details to customize the +# silent installation properties file for SAP Business One on HANA. +# It provides sensible defaults and generates the final 'install.properties'. +# ============================================================================== + +# --- Function to display a welcome header --- +print_header() { + echo "======================================================" + echo " SAP Business One for HANA Installation Configurator " + echo "======================================================" + echo "Please provide the following details. Defaults are in [brackets]." + echo "" +} + +# --- Function to read password securely --- +read_password() { + local prompt_text=$1 + local -n pass_var=$2 # Use a nameref to pass the variable name + local pass_verify + + # Loop until the entered passwords match and are not empty + while true; do + read -s -p "$prompt_text: " pass_var + echo + if [ -z "$pass_var" ]; then + echo "Password cannot be empty. Please try again." + continue + fi + + read -s -p "Confirm password: " pass_verify + echo + + if [ "$pass_var" == "$pass_verify" ]; then + break + else + echo "Passwords do not match. Please try again." + echo "" + fi + done +} + +# --- Main configuration logic --- + +# 1. Get Hostname/IP Details +# Default to the current machine's hostname. +DEFAULT_HOSTNAME=$(hostname) +read -p "Enter HANA Database Server Hostname or IP [${DEFAULT_HOSTNAME}]: " HANA_DATABASE_SERVERS +HANA_DATABASE_SERVERS=${HANA_DATABASE_SERVERS:-$DEFAULT_HOSTNAME} + +# 2. Get HANA Instance Details +read -p "Enter HANA Database Instance Number [00]: " HANA_DATABASE_INSTANCE +HANA_DATABASE_INSTANCE=${HANA_DATABASE_INSTANCE:-00} + +# 3. Get HANA SID to construct the admin user +read -p "Enter HANA SID (Tenant Name) [NDB]: " HANA_SID +HANA_SID=${HANA_SID:-NDB} +# Convert SID to lowercase and append 'adm' +HANA_DATABASE_ADMIN_ID=$(echo "${HANA_SID}" | tr '[:upper:]' '[:lower:]')adm + +# 4. Get Passwords +echo "" +echo "--- Secure Password Entry ---" +read_password "Enter password for HANA Admin ('${HANA_DATABASE_ADMIN_ID}')" HANA_DATABASE_ADMIN_PASSWD + +# 5. Get HANA Database User +read -p "Enter HANA Database User ID [SYSTEM]: " HANA_DATABASE_USER_ID +HANA_DATABASE_USER_ID=${HANA_DATABASE_USER_ID:-SYSTEM} + +# 6. Get HANA User Password +read_password "Enter password for HANA User ('${HANA_DATABASE_USER_ID}')" HANA_DATABASE_USER_PASSWORD + +# 7. Get SLD and Site User Details +echo "" +echo "--- System Landscape Directory (SLD) & Service Layer ---" +read -p "Enter SLD Service Port [40000]: " SERVICE_PORT +SERVICE_PORT=${SERVICE_PORT:-40000} + +read -p "Enter SLD Site User ID [B1SiteUser]: " SITE_USER_ID +SITE_USER_ID=${SITE_USER_ID:-B1SiteUser} + +read_password "Enter password for Site User ('${SITE_USER_ID}')" SITE_USER_PASSWORD + +# 10. & 11. Get Service Layer Load Balancer Details +read -p "Enter Service Layer Load Balancer Port [50000]: " SL_LB_PORT +SL_LB_PORT=${SL_LB_PORT:-50000} + +read -p "How many Service Layer member nodes should be configured? [2]: " SL_MEMBER_COUNT +SL_MEMBER_COUNT=${SL_MEMBER_COUNT:-2} + +# Generate the SL_LB_MEMBERS string +SL_LB_MEMBERS="" +for (( i=1; i<=SL_MEMBER_COUNT; i++ )); do + port=$((50000 + i)) + member="${HANA_DATABASE_SERVERS}:${port}" + if [ -z "$SL_LB_MEMBERS" ]; then + SL_LB_MEMBERS="$member" + else + SL_LB_MEMBERS="$SL_LB_MEMBERS,$member" + fi +done + +# 12. Display Summary and Ask for Confirmation +clear +echo "======================================================" +echo " Configuration Summary" +echo "======================================================" +echo "" +echo " --- Installation & System Details ---" +echo " INSTALLATION_FOLDER=/usr/sap/SAPBusinessOne" +echo "" +echo " --- SAP HANA Database Server Details ---" +echo " HANA_DATABASE_SERVERS=${HANA_DATABASE_SERVERS}" +echo " HANA_DATABASE_INSTANCE=${HANA_DATABASE_INSTANCE}" +echo " HANA_DATABASE_ADMIN_ID=${HANA_DATABASE_ADMIN_ID}" +echo " HANA_DATABASE_ADMIN_PASSWD=[hidden]" +echo "" +echo " --- SAP HANA Database User ---" +echo " HANA_DATABASE_USER_ID=${HANA_DATABASE_USER_ID}" +echo " HANA_DATABASE_USER_PASSWORD=[hidden]" +echo "" +echo " --- System Landscape Directory (SLD) Details ---" +echo " SERVICE_PORT=${SERVICE_PORT}" +echo " SITE_USER_ID=${SITE_USER_ID}" +echo " SITE_USER_PASSWORD=[hidden]" +echo "" +echo " --- Service Layer ---" +echo " SL_LB_PORT=${SL_LB_PORT}" +echo " SL_LB_MEMBERS=${SL_LB_MEMBERS}" +echo "" +echo "======================================================" +read -p "Save this configuration to 'install.properties'? [y/N]: " confirm +echo "" + +if [[ ! "$confirm" =~ ^[yY]$ ]]; then + echo "Configuration cancelled by user." + exit 1 +fi + +# --- Write the final install.properties file --- +# Using a HEREDOC to write the configuration file with the variables collected. +cat > install.properties << EOL +# SAP Business One for HANA Silent Installation Properties +# Generated by configuration script on $(date) + +INSTALLATION_FOLDER=/usr/sap/SAPBusinessOne + +HANA_DATABASE_SERVERS=${HANA_DATABASE_SERVERS} +HANA_DATABASE_INSTANCE=${HANA_DATABASE_INSTANCE} +HANA_DATABASE_ADMIN_ID=${HANA_DATABASE_ADMIN_ID} +HANA_DATABASE_ADMIN_PASSWD=${HANA_DATABASE_ADMIN_PASSWD} + +HANA_DATABASE_USER_ID=${HANA_DATABASE_USER_ID} +HANA_DATABASE_USER_PASSWORD=${HANA_DATABASE_USER_PASSWORD} + +SERVICE_PORT=${SERVICE_PORT} +SLD_DATABASE_NAME=SLDDATA +SLD_CERTIFICATE_ACTION=self +CONNECTION_SSL_CERTIFICATE_VERIFICATION=false +SLD_DATABASE_ACTION=create +SLD_SERVER_PROTOCOL=https +SITE_USER_ID=${SITE_USER_ID} +SITE_USER_PASSWORD=${SITE_USER_PASSWORD} + +SL_LB_MEMBER_ONLY=false +SL_LB_PORT=${SL_LB_PORT} +SL_LB_MEMBERS=${SL_LB_MEMBERS} +SL_THREAD_PER_SERVER=10 + +SELECTED_FEATURES=B1ServerTools,B1ServerToolsLandscape,B1ServerToolsSLD,B1ServerToolsLicense,B1ServerToolsJobService,B1ServerToolsXApp,B1SLDAgent,B1BackupService,B1Server,B1ServerSHR,B1ServerHelp,B1AnalyticsPlatform,B1ServerCommonDB,B1ServiceLayerComponent + +B1S_SAMBA_AUTOSTART=true +B1S_SHARED_FOLDER_OVERWRITE=true +LANDSCAPE_INSTALL_ACTION=create +EOL + +echo "Success! The configuration file 'install.properties' has been created in the current directory." +exit 0 \ No newline at end of file