107 lines
3.2 KiB
Django/Jinja
Executable File
107 lines
3.2 KiB
Django/Jinja
Executable File
#!/bin/bash
|
|
|
|
SM_DIR={{ smartgears_install_path }}
|
|
SM_CONF_F=${SM_DIR}/container.xml
|
|
SM_LIB_DIR=${SM_DIR}/lib
|
|
SM_STATE_DIR=${SM_DIR}/state/
|
|
GET_KEYS_SCRIPT=/usr/local/bin/get-gcube-keys
|
|
SVC=tomcat-instance-{{ smartgears_http_port }}
|
|
LOG_FILE=/var/log/smartgears-node-setup.log
|
|
HOSTS_FILE=/etc/hosts
|
|
FQDN_HOST=
|
|
PUB_FQDN_HOST=
|
|
PUBLIC_IP=
|
|
MAIN_IP=
|
|
RETVAL=0
|
|
|
|
{% raw %}
|
|
> $LOG_FILE
|
|
if [ -z "${HOST}" ] ; then
|
|
echo "No hostname was passed from the outside. Trying to find it out by ourselves" >> $LOG_FILE
|
|
FQDN_HOST=$( /bin/hostname -f )
|
|
if [ -z "${FQDN_HOST}" ] ; then
|
|
echo "The machine has no FQDN. Revert to plain hostname" >> $LOG_FILE
|
|
HOST=$( /bin/hostname )
|
|
echo "Setting the plain hostname: $HOST" >> $LOG_FILE
|
|
else
|
|
HOST=$FQDN_HOST
|
|
fi
|
|
fi
|
|
# We don't know if we have been assigned a private or public IP address
|
|
PUBLIC_IP=$( wget http://ipecho.net/plain -qO - )
|
|
MAIN_IP=$( ip addr show scope global dev eth0 | grep inet | awk '{ print $2 }' | cut -d "/" -f 1 )
|
|
echo "Our main IP is ${MAIN_IP}" >> $LOG_FILE
|
|
if [ -z $PUBLIC_IP ] ; then
|
|
# We have some kind of problem
|
|
echo "We cannot obtain our public IP from outside. Using our main IP address as public IP" >> $LOG_FILE
|
|
PUBLIC_IP=$MAIN_IP
|
|
else
|
|
echo "Our public IP is ${PUBLIC_IP}" >> $LOG_FILE
|
|
fi
|
|
# Try to know our public FQDN
|
|
TMP_FQDN_HOST=$( host $PUBLIC_IP )
|
|
RET_FQDN=$?
|
|
if [ $RET_FQDN -eq 0 ] ; then
|
|
PUB_FQDN_HOST=$( host $PUBLIC_IP | awk '{print $5}' | sed -e 's/\.$//g' )
|
|
fi
|
|
# Set the hosts file with the new data
|
|
grep -v $HOST $HOSTS_FILE > $HOSTS_FILE.tmp
|
|
echo "${PUBLIC_IP} ${FQDN_HOST} ${PUB_FQDN_HOST} ${HOST}" >> $HOSTS_FILE.tmp
|
|
mv $HOSTS_FILE.tmp $HOSTS_FILE
|
|
chmod 644 $HOSTS_FILE
|
|
chown root:root $HOSTS_FILE
|
|
|
|
if [ -z "${INFRA_NAME}" ] ; then
|
|
echo "The infrastructure name is void" >> $LOG_FILE
|
|
RETVAL=1
|
|
fi
|
|
if [ -z "${SCOPE}" ] ; then
|
|
echo "The scope is void" >> $LOG_FILE
|
|
RETVAL=1
|
|
fi
|
|
if [ -z "${COUNTRY}" ] ; then
|
|
echo "The country code is void" >> $LOG_FILE
|
|
RETVAL=1
|
|
elif [ ${#COUNTRY} -ne 2 ] ; then
|
|
echo "The country code is wrong. It must be two characters long" >> $LOG_FILE
|
|
RETVAL=1
|
|
fi
|
|
if [ $RETVAL -eq 1 ] ; then
|
|
echo "Exiting because of errors. The SmartExecutor will not start" >> $LOG_FILE
|
|
exit 1
|
|
fi
|
|
|
|
# We use the public FQDN if there's one. Otherwise we use the public IP
|
|
if [ ! -z ${PUB_FQDN_HOST} ] ; then
|
|
sed -i -e "s#@SMARTGEARS_HOSTNAME@#${PUB_FQDN_HOST}#g" $SM_CONF_F
|
|
else
|
|
sed -i -e "s#@SMARTGEARS_HOSTNAME@#${PUBLIC_IP}#g" $SM_CONF_F
|
|
fi
|
|
sed -i -e "s#@SMARTGEARS_INFRASTRUCTURE_NAME@#${INFRA_NAME}#g" $SM_CONF_F
|
|
sed -i -e "s#@SMARTGEARS_VO_NAME@#${SCOPE}#g" $SM_CONF_F
|
|
sed -i -e "s#@SMARTGEARS_COUNTRY@#${COUNTRY}#g" $SM_CONF_F
|
|
sed -i -e "s#@SMARTGEARS_LOCATION@#${LOCATION}#g" $SM_CONF_F
|
|
{% endraw %}
|
|
|
|
# Get and install the gcube security keys
|
|
if [ -x $GET_KEYS_SCRIPT ] ; then
|
|
echo "Getting the infrastructure keys" >> $LOG_FILE
|
|
$GET_KEYS_SCRIPT ${INFRA_NAME} >> $LOG_FILE
|
|
rm -f $GET_KEYS_SCRIPT
|
|
echo "Done" >> $LOG_FILE
|
|
else
|
|
echo "Not getting the infrastructure keys, the script is not available." >> $LOG_FILE
|
|
fi
|
|
|
|
/etc/init.d/${SVC} stop
|
|
rm -fr ${SM_STATE_DIR}/*
|
|
rm -f ${SM_DIR}/ghn.log
|
|
sleep 20
|
|
/usr/sbin/update-rc.d ${SVC} enable
|
|
/etc/init.d/${SVC} start
|
|
|
|
exit 0
|
|
|
|
|
|
|