#!/bin/sh # # /etc/init.d/cloudstack-management -- startup script for CloudStack # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. ### BEGIN INIT INFO # Provides: cloudstack-management # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Should-Start: $named # Should-Stop: $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start CloudStack. # Description: Start the CloudStack Management Server. ### END INIT INFO PATH=/bin:/usr/bin:/sbin:/usr/sbin NAME=cloudstack-management DESC="CloudStack Management Server" DAEMON=/usr/bin/jsvc DEFAULT=/etc/default/$NAME USER="cloud" GROUP="cloud" CLOUDSTACK_PID="/var/run/$NAME.pid" # We have to explicitly set the HOME variable to the homedir from the user "cloud" # This is because various scripts run by the management server read the HOME variable # and fail when this init script is run manually. HOME=$(echo ~cloud) if [ `id -u` -ne 0 ]; then echo "You need root privileges to run this script" exit 1 fi if [ -r /etc/default/locale ]; then . /etc/default/locale export LANG fi . /lib/lsb/init-functions . /etc/default/rcS # The first existing directory is used for JAVA_HOME (if JAVA_HOME is not # defined in $DEFAULT) JDK_DIRS="/usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/java-8-openjdk-i386 /usr/lib/jvm/java-8-oracle /usr/lib/jvm/java-8-openjdk" # Look for the right JVM to use for jdir in $JDK_DIRS; do if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then JAVA_HOME="$jdir" fi done export JAVA_HOME # overwrite settings from default file if [ -f "$DEFAULT" ]; then . "$DEFAULT" fi JARS=$(ls /usr/share/cloudstack-management/lib/*.jar | tr '\n' ':' | sed s'/.$//') CLASSPATH="$JARS:$CLASSPATH" [ -f "$DAEMON" ] || exit 0 # Look for Java Secure Sockets Extension (JSSE) JARs if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then JSSE_HOME="${JAVA_HOME}/jre/" fi export JSSE_HOME case "$1" in start) if [ -z "$JAVA_HOME" ]; then log_failure_msg "no JDK found - please set JAVA_HOME" exit 1 fi log_daemon_msg "Starting $DESC" "$NAME" if start-stop-daemon --test --start --quiet --pidfile "$CLOUDSTACK_PID" \ --user $USER --startas "$JAVA_HOME/bin/java"; then # fix storage issues on nfs mounts umask 000 start-stop-daemon --start --quiet --pidfile "$CLOUDSTACK_PID" \ --user $USER --group $GROUP --exec $DAEMON -- -user "$USER" -server \ -home "$JAVA_HOME" -cp "$CLASSPATH" \ -outfile SYSLOG -errfile $LOGDIR/$NAME.err \ -pidfile "$CLOUDSTACK_PID" $JAVA_OPTS "$BOOTSTRAP_CLASS" log_end_msg $? else log_progress_msg "(already running)" log_end_msg 0 fi ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile "$CLOUDSTACK_PID" RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 log_end_msg 0 ;; status) if start-stop-daemon --test --start --pidfile "$CLOUDSTACK_PID" \ --user $USER --startas "$JAVA_HOME/bin/java" \ >/dev/null; then if [ -f "$CLOUDSTACK_PID" ]; then log_success_msg "$DESC is not running, but pid file exists." exit 1 else log_success_msg "$DESC is not running." exit 3 fi else log_success_msg "$DESC is running with pid `cat $CLOUDSTACK_PID`" fi ;; restart|force-reload) if start-stop-daemon --test --stop --pidfile "$CLOUDSTACK_PID" \ --user $USER --startas "$JAVA_HOME/bin/java" \ >/dev/null; then $0 stop sleep 1 fi $0 start ;; *) log_success_msg "Usage: $0 {start|stop|restart|try-restart|force-reload|status}" exit 1 ;; esac exit 0