Repository: karaf Updated Branches: refs/heads/karaf-4.0.x 3aa65856b -> 1a8809fce
KARAF-4281 - System scripts: provide Systemd templates to manage Karaf child instances (cherry picked from commit bc9b83bcedbd136ef1f0548770d08d444f6701e7) Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/1a8809fc Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/1a8809fc Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/1a8809fc Branch: refs/heads/karaf-4.0.x Commit: 1a8809fce028ca9d15a7e3c2b145d78c60480083 Parents: 3aa6585 Author: lburgazzoli <[email protected]> Authored: Wed Jan 20 10:46:56 2016 +0100 Committer: Freeman Fang <[email protected]> Committed: Thu Jan 21 10:19:38 2016 +0800 ---------------------------------------------------------------------- .../bin/contrib/karaf-service-template.systemd | 14 ++---- .../karaf-service-template.systemd-instances | 42 ++++++++++++++++ .../resources/bin/contrib/karaf-service.sh | 52 ++++++++++++++++---- 3 files changed, 88 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/1a8809fc/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd index 828319c..a0d728f 100644 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd @@ -21,25 +21,19 @@ After=syslog.target network.target [Service] EnvironmentFile=${KARAF_SERVICE_CONF} -#Environment="KARAF_OPTS=-Dkaraf.systemd.enabled=true" -User=${KARAF_SERVICE_USER} -Group=${KARAF_SERVICE_GROUP} -PIDFile=${KARAF_SERVICE_PIDFILE} ExecStart=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} daemon ExecStop=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} stop -Restart=on-failure -RestartSec=5s -StartLimitInterval=60s -StartLimitBurst=3 +User=${KARAF_SERVICE_USER} +Group=${KARAF_SERVICE_GROUP} SuccessExitStatus=0 143 +RestartSec=15 +Restart=on-failure LimitNOFILE=102642 -#WatchdogSec=60 - [Install] WantedBy=multi-user.target http://git-wip-us.apache.org/repos/asf/karaf/blob/1a8809fc/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd-instances ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd-instances b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd-instances new file mode 100644 index 0000000..8094a6b --- /dev/null +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd-instances @@ -0,0 +1,42 @@ +# +# 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. +# + +[Unit] +Description=Karaf - ${KARAF_SERVICE_NAME} - %i +After=syslog.target network.target +Requires=${KARAF_SERVICE_NAME}.service + +[Service] +EnvironmentFile=-${KARAF_SERVICE_PATH}/etc/${KARAF_SERVICE_NAME}-%i.conf +EnvironmentFile=-${KARAF_SERVICE_PATH}/instances/%i/etc/${KARAF_SERVICE_NAME}.conf +Environment=KARAF_HOME=${KARAF_SERVICE_PATH} +Environment=KARAF_BASE=${KARAF_SERVICE_PATH}/instances/%i + +ExecStart=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} daemon +ExecStop=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} stop + +User=${KARAF_SERVICE_USER} +Group=${KARAF_SERVICE_GROUP} + +SuccessExitStatus=0 1 143 +RestartSec=15 +Restart=on-failure + +LimitNOFILE=102642 + +[Install] +WantedBy=multi-user.target http://git-wip-us.apache.org/repos/asf/karaf/blob/1a8809fc/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh index a7a4c55..3b9b517 100755 --- a/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh +++ b/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service.sh @@ -38,6 +38,7 @@ END CONF_TEMPLATE="karaf-service-template.conf" SYSTEMD_TEMPLATE="karaf-service-template.systemd" +SYSTEMD_TEMPLATE_INSTANCES="karaf-service-template.systemd-instances" INIT_REDHAT_TEMPLATE="karaf-service-template.init-redhat" INIT_DEBIAN_TEMPLATE="karaf-service-template.init-debian" SOLARIS_SMF_TEMPLATE="karaf-service-template.solaris-smf" @@ -115,12 +116,18 @@ fi ################################################################################ function generate_service_descriptor { + echo "Writing service file $2" perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' < $1 > $2 - perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' < ${CONF_TEMPLATE} > ${KARAF_SERVICE_CONF} - for var in "${KARAF_ENV[@]}"; do - echo "${var}" >> ${KARAF_SERVICE_CONF} - done + if [ $# -eq 4 ]; then + + echo "Writing service configuration file $4" + perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' < $3 > $4 + + for var in "${KARAF_ENV[@]}"; do + echo "${var}" >> $4 + done + fi } ################################################################################ @@ -131,20 +138,45 @@ if [[ ! $KARAF_SERVICE_TEMPLATE ]]; then case $(uname | tr [:upper:] [:lower:]) in sunos) # smc vs initv - generate_service_descriptor $SOLARIS_SMF_TEMPLATE ${PWD}/${KARAF_SERVICE_NAME}.xml + generate_service_descriptor \ + $SOLARIS_SMF_TEMPLATE \ + ${PWD}/${KARAF_SERVICE_NAME}.xml ;; linux) if [ -d /run/systemd/system ]; then - generate_service_descriptor $SYSTEMD_TEMPLATE ${PWD}/${KARAF_SERVICE_NAME}.service + generate_service_descriptor \ + $SYSTEMD_TEMPLATE \ + ${PWD}/${KARAF_SERVICE_NAME}.service \ + ${CONF_TEMPLATE} \ + ${KARAF_SERVICE_CONF} + + generate_service_descriptor \ + $SYSTEMD_TEMPLATE_INSTANCES \ + ${PWD}/${KARAF_SERVICE_NAME}@.service + elif [ -f /etc/redhat-release ]; then - generate_service_descriptor $INIT_REDHAT_TEMPLATE ${PWD}/${KARAF_SERVICE_NAME} - chmod 755 ${PWD}/${KARAF_SERVICE_NAME} + generate_service_descriptor \ + $INIT_REDHAT_TEMPLATE \ + ${PWD}/${KARAF_SERVICE_NAME} \ + ${CONF_TEMPLATE} \ + ${KARAF_SERVICE_CONF} + + chmod 755 ${PWD}/${KARAF_SERVICE_NAME} elif [ -f /etc/debian-release ]; then - generate_service_descriptor $INIT_DEBIAN_TEMPLATE ${PWD}/${KARAF_SERVICE_NAME} + generate_service_descriptor \ + $INIT_DEBIAN_TEMPLATE \ + ${PWD}/${KARAF_SERVICE_NAME} \ + ${CONF_TEMPLATE} \ + ${KARAF_SERVICE_CONF} + chmod 755 ${PWD}/${KARAF_SERVICE_NAME} fi ;; esac else - generate_service_descriptor $KARAF_SERVICE_TEMPLATE ${PWD}/${KARAF_SERVICE_NAME} + generate_service_descriptor \ + $KARAF_SERVICE_TEMPLATE \ + ${PWD}/${KARAF_SERVICE_NAME} \ + ${CONF_TEMPLATE} \ + ${KARAF_SERVICE_CONF} fi
