Example Azure Sfengine Script
The following is an example of an Sfengine script for Azure
#!/bin/bash ### BEGIN INIT INFO # Provides: dsengine # Required-Start: $network nfs syslog network-remotefs # Required-Stop: # Default-Start: 3 4 5 # Default-Stop: 1 2 # Short-Description: engine daemon makes this host part of Tibco Silver private cloud # Description: The engine daemon logs into a Tibco Silver broker # and makes this host part of broker engine inventory. ### END INIT INFO /bin/rm /var/log/sfengine.log echo "$0 $1" >> /var/log/sfengine.log CUSTOM_DATA=$(cat /var/lib/cloud/instance/user-data.txt) echo "Custom Data : $CUSTOM_DATA" >> /var/log/sfengine.log ASSET_MANAGER_ID=$(echo $CUSTOM_DATA | awk -F';' '{print $1}') PUBLIC_HOSTNAME=$(echo $CUSTOM_DATA | awk -F';' '{print $2}') INSTANCE_TYPE=$(echo $CUSTOM_DATA | awk -F';' '{print $3}') LOCATION=$(echo $CUSTOM_DATA | awk -F';' '{print $4}') VNET_NAME=$(echo $CUSTOM_DATA | awk -F';' '{print $5}') SUBNET_NAME=$(echo $CUSTOM_DATA | awk -F';' '{print $6}') GROUP=$(echo $CUSTOM_DATA | awk -F';' '{print $7}') HOSTNAME=${PUBLIC_HOSTNAME} export HOSTNAME hostname $HOSTNAME BROKER_OPTIONS=$(echo $CUSTOM_DATA | awk -F';' '{print $8}') echo "Broker options: $BROKER_OPTIONS " >> /var/log/sfengine.log RESOURCES_NFS_OPTIONS=$(echo $CUSTOM_DATA | awk -F';' '{print $9}') echo "Resources nfs mount options: $RESOURCES_NFS_OPTIONS " >> /var/log/sfengine.log RESOURCES_NFS_MOUNT=$(echo $CUSTOM_DATA | awk -F';' '{print $10}') echo "Resources nfs local mount point: $RESOURCES_NFS_MOUNT " >> /var/log/sfengine.log DATA_NFS_OPTIONS=$(echo $CUSTOM_DATA | awk -F';' '{print $11}') echo "Data nfs options: $DATA_NFS_OPTIONS " >> /var/log/sfengine.log DATA_NFS_MOUNT=$(echo $CUSTOM_DATA | awk -F';' '{print $12}') echo "Data nfs mount: $DATA_NFS_MOUNT " >> /var/log/sfengine.log RESOURCES2_NFS_OPTIONS=$(echo $CUSTOM_DATA | awk -F';' '{print $13}') echo "Resources2 nfs options: $RESOURCES2_NFS_OPTIONS " >> /var/log/sfengine.log RESOURCES2_NFS_MOUNT=$(echo $CUSTOM_DATA | awk -F';' '{print $14}') echo "Resources2 nfs mount: $RESOURCES2_NFS_MOUNT " >> /var/log/sfengine.log GROUP=$(echo $CUSTOM_DATA | awk -F';' '{print $15}') echo "Group: $GROUP " >> /var/log/sfengine.log DSENGINE=/opt/DSEngine echo "DSEngine install dir is $DSENGINE " >> /var/log/sfengine.log cd $DSENGINE # Check for missing shell script ENGINE_SH=engine.sh test -x $ENGINE_SH || { echo "$ENGINE_SH not installed"; if [ "$1" = "stop" ]; then exit 0; else exit 5; fi; } # Check for existence of needed config file ENGINE_CONFIG=configure.sh test -x $ENGINE_CONFIG || { echo "$ENGINE_CONFIG not existing"; if [ "$1" = "stop" ]; then exit 0; else exit 6; fi; } if [ "$1" == "start" -o "$1" == "restart" ] then if [ "${BROKER_OPTIONS}" != "" ] then ## Configure engine echo "configuring engine" >> /var/log/sfengine.log sudo -u fabric ./$ENGINE_CONFIG ${BROKER_OPTIONS} >> /var/log/sfengine.log else echo "Error: no broker options found" >> /var/log/sfengine.log exit 6 fi fi # init status of this service rc=0 case "$1" in start) echo "Starting engine " >> /var/log/sfengine.log # mount resources directory if [ "${RESOURCES_NFS_OPTIONS}" != "" ] then TEST_NFS=`service nfs status | grep -i warning` while [ "$TEST_NFS" != "" ] do sleep 5 TEST_NFS=`service nfs status | grep -i warning` done service nfs status >> /var/log/sfengine.log ## NFS resources directory if [ "${RESOURCES_NFS_MOUNT}" != "" ] then echo "Mounting ${RESOURCES_NFS_OPTIONS} " >> /var/log/sfengine.log mkdir -p $RESOURCES_NFS_MOUNT chown -R fabric $RESOURCES_NFS_MOUNT chgrp -R fabric $RESOURCES_NFS_MOUNT mount -t nfs ${RESOURCES_NFS_OPTIONS} ${RESOURCES_NFS_MOUNT} fi else ## local resources directory mkdir -p /mnt/resources chown -R fabric /mnt/resources chgrp -R fabric /mnt/resources rm -rf ./resources ln -s /mnt/resources ./resources fi if [ "${DATA_NFS_OPTIONS}" != "" ] then ## NFS resources directory if [ "${DATA_NFS_MOUNT}" != "" ] then mkdir -p $DATA_NFS_MOUNT chown -R fabric $DATA_NFS_MOUNT chgrp -R fabric $DATA_NFS_MOUNT echo "Mounting ${DATA_NFS_OPTIONS} " >> /var/log/sfengine.log mount -t nfs ${DATA_NFS_OPTIONS} ${DATA_NFS_MOUNT} fi fi if [ "${RESOURCES2_NFS_OPTIONS}" != "" ] then ## NFS resources directory if [ "${RESOURCES2_NFS_MOUNT}" != "" ] then mkdir -p $RESOURCES2_NFS_MOUNT chown -R fabric $RESOURCES2_NFS_MOUNT chgrp -R fabric $RESOURCES2_NFS_MOUNT echo "Mounting ${RESOURCES2_NFS_OPTIONS} " >> /var/log/sfengine.log mount -t nfs ${RESOURCES2_NFS_OPTIONS} ${RESOURCES2_NFS_MOUNT} fi fi ## cleanup /bin/rm -rf work data profiles boot.log .#dsDirID ## setup engine session properties rm -rf ./engine-session.properties echo "azureLocation=$LOCATION" >> ./engine-session.properties echo "azureVmType=$INSTANCE_TYPE" >> ./engine-session.properties echo "azureVmName=$PUBLIC_HOSTNAME" >> ./engine-session.properties echo "azureVnetName=$VNET_NAME" >> ./engine-session.properties echo "azureSubnetName=$SUBNET_NAME" >> ./engine-session.properties echo "AssetManagerId=$ASSET_MANAGER_ID" >> ./engine-session.properties echo "alternateRoutingAddress=$PUBLIC_HOSTNAME" >> ./engine-session.properties echo "alternateRedirectAddress=$PUBLIC_HOSTNAME" >> ./engine-session.properties if [ "$GROUP" != "" ] then echo "Group=$GROUP" >> ./engine-session.properties fi ## Start engine sudo -u fabric ./$ENGINE_SH start >> /var/log/sfengine.log [ $? -ne 0 ] && rc=1 while [ ! -f profiles/${HOSTNAME}/pid.${HOSTNAME} ] do sleep 1 done cp "profiles/${HOSTNAME}/pid.${HOSTNAME}" /opt/sfengine.pid ;; stop) echo "Stopping engine " >> /var/log/sfengine.log ## Stop engine sudo -u fabric ./$ENGINE_SH stop # umount nfs directories if [ "$RESOURCES_NFS_MOUNT" != "" ] then umount $RESOURCES_NFS_MOUNT fi if [ "$DATA_NFS_MOUNT" != "" ] then umount $DATA_NFS_MOUNT fi if [ "$RESOURCES2_NFS_MOUNT" != "" ] then umount $RESOURCES2_NFS_MOUNT fi # Remember status and be verbose [ $? -ne 0 ] && rc=1 rm -f /opt/sfengine.pid ;; restart) ## Stop the service and regardless of whether it was ## running or not, start it again. $0 stop $0 start # Remember status and be quiet [ $? -ne 0 ] && rc=1 ;; reload) ## does not support reload: rc=3 ;; status) echo "Checking for service engine " >> /var/log/sfengine.log ## Check status with checkproc(8), if process is running ## checkproc will return with exit status 0. # Return value is slightly different for the status command: # 0 - service up and running # 1 - service dead, but /var/run/ pid file exists # 2 - service dead, but /var/lock/ lock file exists # 3 - service not running (unused) # 4 - service status unknown :-( # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.) # NOTE: checkproc returns LSB compliant status values. checkproc engine # NOTE: rc_status knows that we called this init script with # "status" option and adapts its messages accordingly. [ $? -ne 0 ] && rc=1 ;; *) ## If no parameters are given, print which are avaiable. echo "Usage: $0 {start|stop|status|restart|reload}" rc=1 ;; esac exit $rc
Copyright © Cloud Software Group, Inc. All rights reserved.