Skip to content
Snippets Groups Projects
Commit 2f38c230 authored by sveseli's avatar sveseli
Browse files

add deployment scripts for proc web service

parent 9fb46676
No related branches found
No related tags found
No related merge requests found
#!/bin/sh
#
# Script used for deploying DM PROC web service
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME]
#
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
# Use first argument as db name, if provided
DM_DB_NAME=${DM_DB_NAME:=dm}
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
echo "Using DB name: $DM_DB_NAME"
# Look for deployment file in etc directory, and use it to override
# default entries
deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
if [ -f $deployConfigFile ]; then
echo "Using deployment config file: $deployConfigFile"
. $deployConfigFile
else
echo "Deployment config file $deployConfigFile not found, using defaults"
fi
DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
DM_DATE=`date +%Y.%m.%d`
DM_HOSTNAME=`hostname -f`
DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
if [ -d $DM_INSTALL_DIR ]; then
cd $DM_INSTALL_DIR && DM_INSTALL_DIR=`pwd` || exit 1
fi
DM_ETC_DIR=${DM_INSTALL_DIR}/etc
DM_SSL_DIR=${DM_ETC_DIR}/ssl
DM_LOG_DIR=${DM_INSTALL_DIR}/var/log
DM_CA_DIR=${DM_ETC_DIR}/CA
DM_CA_CERT_FILE=${DM_SSL_DIR}/dm-ca-cert.pem
DM_WEB_SERVICE_DAEMON=proc-web-service
DM_WEB_SERVICE_CERT_FILE=${DM_SSL_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.crt
DM_WEB_SERVICE_KEY_FILE=${DM_SSL_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.key
DM_WEB_SERVICE_CONFIG_FILE=${DM_ETC_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.conf
DM_WEB_SERVICE_LOG_FILE=${DM_LOG_DIR}/$DM_DB_NAME.$DM_WEB_SERVICE_DAEMON.log
DM_WEB_SERVICE_INIT_CMD=${DM_ROOT_DIR}/etc/init.d/dm-$DM_WEB_SERVICE_DAEMON
DM_DB_PASSWORD_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.db.passwd
DM_SYSTEM_PASSWORD_FILE=${DM_INSTALL_DIR}/etc/${DM_SYSTEM_USER}.system.passwd
DM_USER_SETUP_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.setup.sh
DM_MONGODB_SERVICE_INIT_CMD=${DM_ROOT_DIR}/etc/init.d/dm-mongodb
DM_STATION_NAME=${DM_STATION_NAME:=TEST}
cmd="echo $DM_PROC_WEB_SERVICE_HOST | sed 's?DM_HOSTNAME?$DM_HOSTNAME?'"
DM_WEB_SERVICE_HOST=`eval $cmd`
DM_PROC_WEB_SERVICE_HOST=$DM_WEB_SERVICE_HOST
DM_WEB_SERVICE_PORT=$DM_PROC_WEB_SERVICE_PORT
if [ -z "$DM_DS_WEB_SERVICE_HOST" -o "$DM_DS_WEB_SERVICE_HOST" = "DM_HOSTNAME" ]; then
read -p "Enter DM DS Web Service Host: " DM_DS_WEB_SERVICE_HOST
fi
if [ -z "$DM_DS_WEB_SERVICE_HOST" ]; then
DM_DS_WEB_SERVICE_HOST=$DM_HOSTNAME
fi
read -p "Enter DM DS Web Service Installation Directory [$DM_INSTALL_DIR]: " DM_DS_INSTALL_DIR
if [ -z "$DM_DS_INSTALL_DIR" ]; then
DM_DS_INSTALL_DIR=$DM_INSTALL_DIR
fi
read -p "Enter DM DAQ station name [$DM_STATION_NAME]: " DM_PROC_STATION_NAME
if [ -z "$DM_PROC_STATION_NAME" ]; then
DM_PROC_STATION_NAME=$DM_STATION_NAME
fi
echo "DM PROC web service host: $DM_PROC_WEB_SERVICE_HOST"
echo "DM PROC web service install directory: $DM_INSTALL_DIR"
echo "DM PROC station name: $DM_PROC_STATION_NAME"
echo "DM DS web service host: $DM_DS_WEB_SERVICE_HOST"
echo "DM DS web service install directory: $DM_DS_INSTALL_DIR"
mkdir -p $DM_ETC_DIR
mkdir -p $DM_SSL_DIR
mkdir -p $DM_LOG_DIR
chmod 700 $DM_SSL_DIR
echo "Stopping web service for $DM_DB_NAME"
$DM_WEB_SERVICE_INIT_CMD stop $DM_DB_NAME
echo "Checking CA certificate"
if [ ! -f $DM_CA_CERT_FILE ]; then
echo "Copying DM CA cert"
rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_CA_CERT_FILE $DM_SSL_DIR
else
echo "DM CA certificate exists"
fi
echo "Checking service certificates"
if [ ! -f $DM_WEB_SERVICE_CERT_FILE -o ! -f $DM_WEB_SERVICE_KEY_FILE ]; then
if [ ! -f $DM_CA_DIR/certs/$DM_WEB_SERVICE_HOST.crt ]; then
echo "Attempting to create DM $DM_WEB_SERVICE_DAEMON certificate"
ssh $DM_DS_WEB_SERVICE_HOST "$DM_DS_INSTALL_DIR/current/sbin/dm_create_server_cert.sh $DM_WEB_SERVICE_HOST $DM_WEB_SERVICE_HOST dm@aps.anl.gov"
fi
echo "Copying DM $DM_WEB_SERVICE_DAEMON certificate"
rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_DS_INSTALL_DIR/etc/CA/certs/$DM_WEB_SERVICE_HOST.crt $DM_WEB_SERVICE_CERT_FILE || exit 1
rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_DS_INSTALL_DIR/etc/CA/certs/$DM_WEB_SERVICE_HOST.key $DM_WEB_SERVICE_KEY_FILE || exit 1
else
echo "DM service certificate exists"
fi
echo "Checking service configuration file"
if [ ! -f $DM_WEB_SERVICE_CONFIG_FILE ]; then
echo "Generating service config file"
cmd="cat $DM_ROOT_DIR/etc/$DM_WEB_SERVICE_DAEMON.conf.template \
| sed 's?servicePort=.*?servicePort=$DM_WEB_SERVICE_PORT?g' \
| sed 's?sslCaCertFile=.*?sslCaCertFile=$DM_CA_CERT_FILE?g' \
| sed 's?sslCertFile=.*?sslCertFile=$DM_WEB_SERVICE_CERT_FILE?g' \
| sed 's?sslKeyFile=.*?sslKeyFile=$DM_WEB_SERVICE_KEY_FILE?g' \
| sed 's?handler=TimedRotatingFileLoggingHandler.*?handler=TimedRotatingFileLoggingHandler(\"$DM_WEB_SERVICE_LOG_FILE\")?g' \
| sed 's?DM_INSTALL_DIR?$DM_INSTALL_DIR?g' \
| sed 's?DM_SYSTEM_USER?$DM_SYSTEM_USER?g' \
| sed 's?DM_DS_WEB_SERVICE_HOST?$DM_DS_WEB_SERVICE_HOST?g' \
| sed 's?DM_DS_WEB_SERVICE_PORT?$DM_DS_WEB_SERVICE_PORT?g' \
| sed 's?DM_WEB_SERVICE_PROTOCOL?$DM_WEB_SERVICE_PROTOCOL?g' \
| sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
| sed 's?DM_DB_NAME?$DM_DB_NAME?g' \
| sed 's?DM_STATION_NAME?$DM_PROC_STATION_NAME?g' \
> $DM_WEB_SERVICE_CONFIG_FILE"
eval $cmd || exit 1
else
echo "Service config file exists"
fi
# Modify version
echo "Modifying python module version"
versionFile=$DM_ROOT_DIR/src/python/dm/__init__.py
cmd="cat $versionFile | sed 's?__version__ =.*?__version__ = \"${DM_SOFTWARE_VERSION}\"?g' | sed 's?DM_DATE?$DM_DATE?g' > $versionFile.2
&& mv $versionFile.2 $versionFile"
eval $cmd
# Check system account password
if [ ! -f $DM_SYSTEM_PASSWORD_FILE ]; then
echo "Copying system account password file $DM_SYSTEM_PASSWORD_FILE"
rsync -ar $DM_DS_WEB_SERVICE_HOST:$DM_SYSTEM_PASSWORD_FILE $DM_SYSTEM_PASSWORD_FILE || exit 1
fi
# Prepare setup file
if [ ! -f $DM_USER_SETUP_FILE ]; then
echo "Copying template for user setup file $DM_USER_SETUP_FILE"
rsync -ar $DM_ROOT_DIR/etc/setup.sh.template $DM_USER_SETUP_FILE || exit 1
fi
# Prepare setup file
echo "Preparing setup file"
cmd="cat $DM_USER_SETUP_FILE \
| sed 's?DM_ROOT_DIR=.*?DM_ROOT_DIR=$DM_ROOT_DIR?g' \
| sed 's?DM_DS_WEB_SERVICE_HOST=.*?DM_DS_WEB_SERVICE_HOST=$DM_DS_WEB_SERVICE_HOST?g' \
| sed 's?DM_DS_WEB_SERVICE_PORT=.*?DM_DS_WEB_SERVICE_PORT=$DM_DS_WEB_SERVICE_PORT?g' \
| sed 's?DM_PROC_WEB_SERVICE_HOST=.*?DM_PROC_WEB_SERVICE_HOST=$DM_PROC_WEB_SERVICE_HOST?g' \
| sed 's?DM_PROC_WEB_SERVICE_PORT=.*?DM_PROC_WEB_SERVICE_PORT=$DM_PROC_WEB_SERVICE_PORT?g' \
| sed 's?DM_HOSTNAME?$DM_HOSTNAME?g' \
| sed 's?DM_STATION_NAME=.*?DM_STATION_NAME=$DM_PROC_STATION_NAME?g' \
> $DM_USER_SETUP_FILE.2 && mv $DM_USER_SETUP_FILE.2 $DM_USER_SETUP_FILE"
eval $cmd || exit 1
echo "Starting mongodb service"
$DM_MONGODB_SERVICE_INIT_CMD restart
echo "Starting proc web service for $DM_DB_NAME"
$DM_WEB_SERVICE_INIT_CMD start $DM_DB_NAME
echo "Done deploying $DM_WEB_SERVICE_DAEMON for $DM_DB_NAME"
#!/bin/sh
#
# Script used for undeploying DM PROC web service
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME]
#
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
# Use first argument as db name, if provided
DM_DB_NAME=${DM_DB_NAME:=dm}
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
echo "Using DB name: $DM_DB_NAME"
# Look for deployment file in etc directory, and use it to override
# default entries
deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
if [ -f $deployConfigFile ]; then
echo "Using deployment config file: $deployConfigFile"
. $deployConfigFile
else
echo "Deployment config file $deployConfigFile not found, using defaults"
fi
DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
DM_ETC_DIR=${DM_INSTALL_DIR}/etc
DM_SSL_DIR=${DM_ETC_DIR}/ssl
DM_CA_DIR=${DM_ETC_DIR}/CA
DM_CA_CERT_FILE=${DM_SSL_DIR}/dm-ca-cert.pem
DM_WEB_SERVICE_DAEMON=daq-web-service
DM_WEB_SERVICE_CERT_FILE=${DM_SSL_DIR}/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.crt
DM_WEB_SERVICE_KEY_FILE=${DM_SSL_DIR}/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.key
DM_WEB_SERVICE_CONFIG_FILE=${DM_ETC_DIR}/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.conf
DM_WEB_SERVICE_LOG_FILE=${DM_INSTALL_DIR}/var/log/$DM_WEB_SERVICE_DAEMON.$DM_DB_NAME.log
DM_WEB_SERVICE_INIT_CMD=${DM_ROOT_DIR}/etc/init.d/dm-$DM_WEB_SERVICE_DAEMON
DM_DB_PASSWORD_FILE=${DM_ETC_DIR}/${DM_DB_NAME}.db.passwd
echo "DM install directory: $DM_INSTALL_DIR"
echo "Stopping web service for $DM_DB_NAME"
$DM_WEB_SERVICE_INIT_CMD stop $DM_DB_NAME
rm -f $DM_WEB_SERVICE_CONFIG_FILE
rm -f $DM_DB_PASSWORD_FILE
echo "Done undeploying web service for $DM_DB_NAME"
../src/python/dm/proc_web_service/service/procWebService.py
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment