Repository: aurora-packaging Updated Branches: refs/heads/master 36e42de32 -> d05092dba
http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/aurora-scheduler.postinst ---------------------------------------------------------------------- diff --git a/specs/debian/aurora-scheduler.postinst b/specs/debian/aurora-scheduler.postinst new file mode 100644 index 0000000..0d019b6 --- /dev/null +++ b/specs/debian/aurora-scheduler.postinst @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Licensed 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. +# +# postinst script for #PACKAGE# +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <postinst> `configure' <most-recently-configured-version> +# * <old-postinst> `abort-upgrade' <new version> +# * <conflictor's-postinst> `abort-remove' `in-favour' <package> +# <new-version> +# * <postinst> `abort-remove' +# * <deconfigured's-postinst> `abort-deconfigure' `in-favour' +# <failed-install-package> <version> `removing' +# <conflicting-package> <version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + adduser --quiet --group --system --home /var/lib/aurora aurora + chown -R aurora:aurora /var/lib/aurora + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/aurora-scheduler.upstart ---------------------------------------------------------------------- diff --git a/specs/debian/aurora-scheduler.upstart b/specs/debian/aurora-scheduler.upstart new file mode 100644 index 0000000..1ceb704 --- /dev/null +++ b/specs/debian/aurora-scheduler.upstart @@ -0,0 +1,39 @@ +# vi:ft=upstart +# Licensed 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. +# +description "Aurora scheduler" +start on stopped rc RUNLEVEL=[2345] +respawn +post-stop exec sleep 5 + +script + . /etc/default/aurora-scheduler + export JAVA_OPTS GLOG_v LIBPROCESS_PORT LIBPROCESS_IP + exec start-stop-daemon --start -c aurora \ + --exec /usr/share/aurora/bin/aurora-scheduler -- \ + -cluster_name="$CLUSTER_NAME" \ + -http_port="$HTTP_PORT" \ + -native_log_quorum_size="$QUORUM_SIZE" \ + -zk_endpoints="$ZK_ENDPOINTS" \ + -mesos_master_address="$MESOS_MASTER" \ + -serverset_path="$ZK_SERVERSET_PATH" \ + -native_log_zk_group_path="$ZK_LOGDB_PATH" \ + -native_log_file_path="$LOGDB_FILE_PATH" \ + -backup_dir="$BACKUP_DIR" \ + -thermos_executor_path="$THERMOS_EXECUTOR_PATH" \ + -thermos_executor_resources="$THERMOS_EXECUTOR_RESOURCES" \ + -thermos_executor_flags="$THERMOS_EXECUTOR_FLAGS" \ + -allowed_container_types="$ALLOWED_CONTAINER_TYPES" \ + -vlog="$LOG_LEVEL" \ + $EXTRA_SCHEDULER_ARGS +end script http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/aurora-tools.install ---------------------------------------------------------------------- diff --git a/specs/debian/aurora-tools.install b/specs/debian/aurora-tools.install new file mode 100644 index 0000000..ac8d032 --- /dev/null +++ b/specs/debian/aurora-tools.install @@ -0,0 +1,2 @@ +dist/kaurora_admin.pex /usr/share/aurora/bin +dist/kaurora.pex /usr/share/aurora/bin http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/aurora-tools.links ---------------------------------------------------------------------- diff --git a/specs/debian/aurora-tools.links b/specs/debian/aurora-tools.links new file mode 100644 index 0000000..2d69bc5 --- /dev/null +++ b/specs/debian/aurora-tools.links @@ -0,0 +1,2 @@ +/usr/share/aurora/bin/kaurora_admin.pex /usr/bin/aurora-admin +/usr/share/aurora/bin/kaurora.pex /usr/bin/aurora http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/changelog ---------------------------------------------------------------------- diff --git a/specs/debian/changelog b/specs/debian/changelog new file mode 100644 index 0000000..8446464 --- /dev/null +++ b/specs/debian/changelog @@ -0,0 +1,74 @@ +apache-aurora (0.9.0-SNAPSHOT) UNRELEASED; urgency=medium + + * unreleased + + -- Benjamin Staffin <[email protected]> Mon, 16 Feb 2015 13:05:46 -0800 + +apache-aurora (0.7.0-rc3-2~trusty1) trusty; urgency=medium + + * Expose more parameters in /etc/default/aurora-scheduler for container + types and Thermos executor flags/resources. + * Eliminate the thermos_executor.sh wrapper script in favor of using + -thermos_executor_flags on the scheduler. + * Don't package /var/run/thermos; create it at runtime. + * Mildly cleanup embed-runner-in-executor.py + + -- Benjamin Staffin <[email protected]> Wed, 04 Feb 2015 21:12:02 -0800 + +apache-aurora (0.7.0-rc3-1~trusty1) trusty; urgency=medium + + * Added sysvinit script for thermos_observer to improve compatibility with + Debian. + * Listening port for thermos_observer is now configurable in + /etc/default/thermos. + + -- Benjamin Staffin <[email protected]> Mon, 02 Feb 2015 12:47:33 -0800 + +apache-aurora (0.7.0-rc3-0~trusty1) trusty; urgency=medium + + * New upstream release. + * Fixed thermos_executor.sh wrapper to correctly source /etc/default/thermos + + -- Benjamin Staffin <[email protected]> Mon, 02 Feb 2015 11:14:32 -0800 + +apache-aurora (0.7.0-rc2-0~trusty3) trusty; urgency=medium + + * aurora-tools: fixed /usr/bin/aurora symlink, dropped /usr/bin/aurora2 + + -- Benjamin Staffin <[email protected]> Fri, 30 Jan 2015 15:35:23 -0800 + +apache-aurora (0.7.0-rc2-0~trusty2) trusty; urgency=medium + + * [3fd6b5c] Update vagrant script to match package updates + * [3ecd84a] More vagrant/testing improvements + * [977d6b4] scheduler: make sure the data dir is owned by aurora + * [c3ebeab] aurora-executor: add docker to Recommends + * [86560ec] vagrant: make sure aurora owns its replicatedlog + + -- Benjamin Staffin <[email protected]> Wed, 28 Jan 2015 18:36:37 -0800 + +apache-aurora (0.7.0-rc2-0~trusty1) trusty; urgency=medium + + * [7abb98e] Ditch python-support; doesn't do much for pex scripts + * [8d6f377] Reduce pants.ini overrides to avoid weird problems + * [304686f] Start a Vagrantfile + * [4c1e90f] Expanded vagrantfile, now with provisioning. + * [05875d1] Add examples to docs and a default clusters.json + * [9f2c53d] A few more tweaks + * [ceb09d8] Forgot to install thermos_executor.sh + * [bd0e4d7] thermos-related refinement + * [733a82d] Update vagrant provision script to keep up + * [0343523] Incorporate review feedback + * [c4c3400] Further review feedback updates + * [a7368cf] Update to Aurora 0.7.0-rc2 + * [fdc115f] Use upstream/%(version) interim tags + * [57f9a64] Patch to allow gradle 2.2.1 + * [3ecfa8d] Update pants targets for 0.7.0-rc2 + + -- Benjamin Staffin <[email protected]> Wed, 28 Jan 2015 05:23:27 -0800 + +apache-aurora (0.6.0-incubating-0~trusty1) trusty; urgency=medium + + * Initial release. + + -- Benjamin Staffin <[email protected]> Fri, 28 Nov 2014 14:25:08 -0800 http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/clusters.json ---------------------------------------------------------------------- diff --git a/specs/debian/clusters.json b/specs/debian/clusters.json new file mode 100644 index 0000000..29c2e0b --- /dev/null +++ b/specs/debian/clusters.json @@ -0,0 +1,10 @@ +[ + { + "auth_mechanism": "UNAUTHENTICATED", + "name": "example", + "scheduler_zk_path": "/aurora/scheduler", + "slave_root": "/var/lib/mesos", + "slave_run_directory": "latest", + "zk": "127.0.1.1" + } +] http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/compat ---------------------------------------------------------------------- diff --git a/specs/debian/compat b/specs/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/specs/debian/compat @@ -0,0 +1 @@ +9 http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/control ---------------------------------------------------------------------- diff --git a/specs/debian/control b/specs/debian/control new file mode 100644 index 0000000..3ece202 --- /dev/null +++ b/specs/debian/control @@ -0,0 +1,78 @@ +Source: apache-aurora +Priority: optional +Maintainer: The Apache Aurora authors <[email protected]> +Build-Depends: debhelper (>= 9), + java8-sdk | openjdk-8-jdk, + gradle (>= 2.5) | gradle-2.5, + python-all-dev, + libkrb5-dev, + curl, + git, + wget, + thrift-compiler (>= 0.9.1) +# thrift-compiler version needs to match the ext.thriftRev value from build.gradle +Section: net +Standards-Version: 3.9.5 +Homepage: https://aurora.apache.org + +Package: aurora-scheduler +Architecture: any +Section: net +Depends: ${shlibs:Depends}, ${misc:Depends}, + adduser, + openjdk-8-jre-headless | java8-runtime-headless, + mesos (>= 0.21.1) +Recommends: aurora-tools +Suggests: aurora-doc +Description: Apache Aurora scheduler + Aurora is a service scheduler that runs on top of Apache Mesos, enabling you + to run long-running services that take advantage of Apache Mesos' scalability, + fault-tolerance, and resource isolation. + . + This package contains the Aurora Scheduler daemon. + +Package: aurora-tools +Architecture: any +Section: net +Depends: ${shlibs:Depends}, ${misc:Depends}, + python2.7 +Suggests: aurora-doc +Recommends: libkrb5-3 | libkrb5-26-heimdal +Description: Apache Aurora commandline tools + Aurora is a service scheduler that runs on top of Apache Mesos, enabling you + to run long-running services that take advantage of Apache Mesos' scalability, + fault-tolerance, and resource isolation. + . + This package includes the aurora and aurora-admin commandline utilities for + interacting with an Aurora scheduler. + +Package: aurora-executor +Architecture: any +Section: net +Replaces: aurora-mesos-slave +Breaks: aurora-mesos-slave +Depends: ${shlibs:Depends}, ${misc:Depends}, + python2.7 +Recommends: + aurora-tools, + lxc-docker (>= 1.0) | docker.io (>= 1.0) +Suggests: aurora-doc +Description: Apache Aurora executor deployment + Aurora is a service scheduler that runs on top of Apache Mesos, enabling you + to run long-running services that take advantage of Apache Mesos' scalability, + fault-tolerance, and resource isolation. + . + This package contains the components necessary to run Aurora jobs on a Mesos + slave node: the garbage collection executor, Thermos executor, and Thermos + observer. + +Package: aurora-doc +Architecture: all +Section: doc +Depends: ${misc:Depends} +Description: Documentation for Apache Aurora + Aurora is a service scheduler that runs on top of Apache Mesos, enabling you + to run long-running services that take advantage of Apache Mesos' scalability, + fault-tolerance, and resource isolation. + . + This package contains documentation. http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/copyright ---------------------------------------------------------------------- diff --git a/specs/debian/copyright b/specs/debian/copyright new file mode 100644 index 0000000..8c0d0f1 --- /dev/null +++ b/specs/debian/copyright @@ -0,0 +1,8 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: aurora +Source: http://incubator.apache.org/aurora/ + +Files: * +Copyright: 2014 The Apache Software Foundation +License: Apache-2.0 + /usr/share/common-licenses/Apache-2.0 http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/pants.ini ---------------------------------------------------------------------- diff --git a/specs/debian/pants.ini b/specs/debian/pants.ini new file mode 100644 index 0000000..ed1a5ce --- /dev/null +++ b/specs/debian/pants.ini @@ -0,0 +1,9 @@ +[DEFAULT] +pants_cachedir: %(homedir)s/.pants.d + +[python-setup] +download_cache: %(pants_cachedir)s/python/downloads +install_cache: %(pants_cachedir)s/python/eggs + +[python-repos] +repos: ['third_party/', 'https://svn.apache.org/repos/asf/incubator/aurora/3rdparty/ubuntu/trusty64/python/'] http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/rules ---------------------------------------------------------------------- diff --git a/specs/debian/rules b/specs/debian/rules new file mode 100755 index 0000000..d981400 --- /dev/null +++ b/specs/debian/rules @@ -0,0 +1,44 @@ +#!/usr/bin/make -f +# +# Licensed 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. +# + +# Uncomment for debugging. +#DH_VERBOSE = 1 + +%: + dh $@ --exclude=aurora-scheduler.bat + +gradle = $(shell which gradle) +pants = $(CURDIR)/pants +PANTS_CONFIG_OVERRIDE = $(CURDIR)/debian/pants.ini +export PANTS_CONFIG_OVERRIDE + +override_dh_auto_build: __gradle_build __pants_build + +__gradle_build: + $(gradle) installApp + +__pants_build: + mkdir -p third_party + $(pants) binary src/main/python/apache/aurora/executor:thermos_executor + $(pants) binary src/main/python/apache/aurora/kerberos:kaurora + $(pants) binary src/main/python/apache/aurora/kerberos:kaurora_admin + $(pants) binary src/main/python/apache/aurora/tools:thermos + $(pants) binary src/main/python/apache/aurora/tools:thermos_observer + $(pants) binary src/main/python/apache/thermos/runner:thermos_runner + build-support/embed_runner_in_executor.py + +override_dh_installinit: + dh_installinit --name=thermos + dh_installinit http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/debian/source/format ---------------------------------------------------------------------- diff --git a/specs/debian/source/format b/specs/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/specs/debian/source/format @@ -0,0 +1 @@ +3.0 (native) http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/Makefile ---------------------------------------------------------------------- diff --git a/specs/rpm/Makefile b/specs/rpm/Makefile new file mode 100644 index 0000000..1833a25 --- /dev/null +++ b/specs/rpm/Makefile @@ -0,0 +1,101 @@ +# Licensed 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. + + +GIT_COMMIT ?= HEAD + +USING_GIT ?= $(shell git status >/dev/null 2>&1 && echo 'true' || echo 'false') +ifeq ($(USING_GIT),true) + VERSION_SUFFIX := .$(shell git rev-parse --short $(GIT_COMMIT)) +else + VERSION_SUFFIX := +endif + +CURRENT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +TOPDIR ?= $(CURRENT_DIR)/../../.. +DIST_DIR ?= $(TOPDIR)/dist +RPM_TOPDIR ?= $(DIST_DIR) + +DATETIME ?= $(shell date +%Y%m%d%H%M) + +SOURCE_TARGET ?= $(RPM_TOPDIR)/rpmbuild/SOURCES/aurora.tar.gz + +AURORA_VERSION ?= $(shell cat $(TOPDIR)/.auroraversion | tr '-' '.') +MESOS_VERSION ?= $(shell sed -n 's/.*mesos\.native==\(.*\)/\1/p' $(TOPDIR)/3rdparty/python/requirements.txt) + + +PHONY: all nightly_version release_version get_source_target clean mkdir srpm nightly_srpm nightly_rpm release_srpm release_rpm tar_source + +all: release_rpm + +nightly_version: + $(eval AURORA_VERSION := $(AURORA_VERSION).$(DATETIME)$(VERSION_SUFFIX)) + +release_version: + $(eval AURORA_VERSION := $(AURORA_VERSION)) + +clean: + rm -rf $(RPM_TOPDIR)/rpmbuild + +mkdir: clean + mkdir -p $(RPM_TOPDIR)/rpmbuild/BUILD + mkdir -p $(RPM_TOPDIR)/rpmbuild/BUILDROOT + mkdir -p $(RPM_TOPDIR)/rpmbuild/RPMS + mkdir -p $(RPM_TOPDIR)/rpmbuild/SOURCES + mkdir -p $(RPM_TOPDIR)/rpmbuild/SRPMS + +tar_source: mkdir + if [[ "$(USING_GIT)" == 'true' ]]; then \ + cd `git rev-parse --show-toplevel` && git archive --format=tar --prefix=aurora/ $(GIT_COMMIT) | gzip > $(SOURCE_TARGET); \ + else \ + tmp_dir=`mktemp -d '/tmp/aurorabuild.XXXXXX'`; \ + mkdir $${tmp_dir}/aurora; \ + cp -r $(TOPDIR)/* $${tmp_dir}/aurora; \ + cd $${tmp_dir}; \ + tar cvzf $(SOURCE_TARGET) aurora; \ + rm -rf $${tmp_dir}; \ + fi + +srpm: tar_source + rpmbuild $(RPM_OPTS) \ + --define "_topdir $(RPM_TOPDIR)" \ + --define "_builddir %{_topdir}/rpmbuild/BUILD" \ + --define "_buildrootdir %{_topdir}/rpmbuild/BUILDROOT" \ + --define "_rpmdir %{_topdir}/rpmbuild/RPMS" \ + --define "_srcrpmdir %{_topdir}/rpmbuild/SRPMS" \ + --define "_specdir %(pwd)" \ + --define "_sourcedir %{_topdir}/rpmbuild/SOURCES" \ + --define "AURORA_VERSION $(AURORA_VERSION)" \ + --define "MESOS_VERSION $(MESOS_VERSION)" \ + --nodeps -bs aurora.spec + +rpm: tar_source + rpmbuild $(RPM_OPTS) \ + --define "_topdir $(RPM_TOPDIR)" \ + --define "_builddir %{_topdir}/rpmbuild/BUILD" \ + --define "_buildrootdir %{_topdir}/rpmbuild/BUILDROOT" \ + --define "_rpmdir %{_topdir}/rpmbuild/RPMS" \ + --define "_srcrpmdir %{_topdir}/rpmbuild/SRPMS" \ + --define "_specdir %(pwd)" \ + --define "_sourcedir %{_topdir}/rpmbuild/SOURCES" \ + --define "AURORA_VERSION $(AURORA_VERSION)" \ + --define "MESOS_VERSION $(MESOS_VERSION)" \ + -ba aurora.spec + +nightly_srpm: nightly_version srpm + +nightly_rpm: nightly_version rpm + +release_srpm: release_version srpm + +release_rpm: release_version rpm http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/README.md ---------------------------------------------------------------------- diff --git a/specs/rpm/README.md b/specs/rpm/README.md new file mode 100644 index 0000000..2432dc7 --- /dev/null +++ b/specs/rpm/README.md @@ -0,0 +1,33 @@ +Building Aurora RPMs +==================== + +This directory contains all necessary scripting to support the building of Aurora +nightly and release RPMs. Building and deployment have been tested against the following +Red Hat flavors: + + * CentOS 6/7 on x86_64 + * Fedora 19/20 on x86_64 + +How to build using Make and rpmbuild +------------------------------------ + +1. Install the necessary build dependencies via yum-builddep: + +```bash +cd build-support/packaging/rpm +sudo yum install -y make rpm-build yum-utils +make srpm +sudo yum-builddep ../../../dist/rpmbuild/SRPMS/* +``` + +2. Build the RPM via Make. + +```bash +make rpm +``` + +3. After the RPM building process has concluded, RPMs will land here: + +``` +$AURORA_HOME/dist/rpmbuild/RPMS +``` http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/aurora.init.sh ---------------------------------------------------------------------- diff --git a/specs/rpm/aurora.init.sh b/specs/rpm/aurora.init.sh new file mode 100644 index 0000000..ac4c438 --- /dev/null +++ b/specs/rpm/aurora.init.sh @@ -0,0 +1,199 @@ +#!/bin/bash +# +# aurora Starts the Aurora task scheduler for Mesos. +# +# chkconfig: 345 55 25 +# description: This script starts the Aurora service scheduler for Apache Mesos, \ +# used for scheduling and executing long-running tasks and \ +# cron jobs. +# +# Licensed 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: aurora +# Required-Start: +# Required-Stop: +# Should-Start: +# Should-Stop: +# Default-Start: 3 4 5 +# Default-Stop: 0 1 2 6 +# Short-Description: Starts the Aurora task scheduler for Mesos. +# Description: Starts the Aurora task scheduler for Mesos. +### END INIT INFO + +# Source LSB function library. +. /lib/lsb/init-functions + +aurora_user="aurora" +exec="/usr/bin/aurora-scheduler-startup" +prog="aurora" +logdir="/var/log/aurora" +lockfile="/var/run/aurora.lock" +pid_file="/var/run/aurora.pid" +stderr_log="${logdir}/aurora.log" + +# Get a sane screen width +[ -z "${COLUMNS:-}" ] && COLUMNS=80 +[ -z "${CONSOLETYPE:-}" ] && CONSOLETYPE="$(/sbin/consoletype)" + +# Read in init configuration. +if [ -z "${BOOTUP:-}" ]; then + if [ -f /etc/sysconfig/init ]; then + . /etc/sysconfig/init + else + BOOTUP=color + RES_COL=60 + MOVE_TO_COL="echo -en \\033[${RES_COL}G" + SETCOLOR_SUCCESS="echo -en \\033[1;32m" + SETCOLOR_FAILURE="echo -en \\033[1;31m" + SETCOLOR_WARNING="echo -en \\033[1;33m" + SETCOLOR_NORMAL="echo -en \\033[0;39m" + LOGLEVEL=1 + fi + if [ "$CONSOLETYPE" = "serial" ]; then + BOOTUP=serial + MOVE_TO_COL= + SETCOLOR_SUCCESS= + SETCOLOR_FAILURE= + SETCOLOR_WARNING= + SETCOLOR_NORMAL= + fi +fi + +function usage { + err "Starts the Aurora task scheduler for Mesos." + err "Usage: ${0} (restart|start|stop|status)" +} + +function out { + printf '%s\n' "$*"; +} + +function msg { + out "$*" >&2; +} + +function err { + local x=${?}; + msg "$*"; + return $(( ${x} == 0 ? 1 : ${x} )); +} + +function echo_success { + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL + echo -n "[" + [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS + echo -n $" OK " + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL + echo -n "]" + echo -ne "\r" + return 0 +} + +function echo_failure { + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL + echo -n "[" + [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE + echo -n $"FAILED" + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL + echo -n "]" + echo -ne "\r" + return 1 +} + +# Parse arguments. +ACTION=${1} + +# Ensures that action is. +if [ -z ${ACTION} ]; then + err "ERROR: No action specified." + usage + exit -1 +fi + +start() { + [ -x ${exec} ] || exit 5 + [ -f ${config} ] || exit 6 + echo -n $"Starting $prog: " + start_daemon daemonize -u ${aurora_user} -e ${stderr_log} -p ${pid_file} ${exec} + retval=$? + [ $retval -eq 0 ] && (echo_success; touch $lockfile) || echo_failure + echo + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc -p ${pid_file} ${exec} + retval=$? + [ $retval -eq 0 ] && (echo_success; rm -f $lockfile) || echo_failure + echo + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + pid=$(pidofproc -p ${pid_file} ${prog}) + if [ $? -eq 0 ]; then + echo "${prog} (pid ${pid}) is running..." + return 0 + else + if [ -e $lockfile ]; then + echo "${prog} dead but lockfile exists" + return 2 + else + echo "${prog} is stopped" + return 1 + fi + fi +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + +# Executes the requested daemon action. +case "${ACTION}" in + start) + rh_status_q && rh_status && exit 0 + start + ;; + stop) + stop + ;; + status) + rh_status + ;; + restart) + restart + ;; + *) + err "ERROR: Invalid action specified." + usage + exit -3 +esac + +exit $? http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/aurora.logrotate ---------------------------------------------------------------------- diff --git a/specs/rpm/aurora.logrotate b/specs/rpm/aurora.logrotate new file mode 100644 index 0000000..1c43073 --- /dev/null +++ b/specs/rpm/aurora.logrotate @@ -0,0 +1,24 @@ +# Licensed 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. + + +/var/log/aurora/*.log { + + daily + missingok + rotate 14 + compress + delaycompress + notifempty + copytruncate + +} http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/aurora.service ---------------------------------------------------------------------- diff --git a/specs/rpm/aurora.service b/specs/rpm/aurora.service new file mode 100644 index 0000000..b81cb63 --- /dev/null +++ b/specs/rpm/aurora.service @@ -0,0 +1,27 @@ +# Licensed 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=Aurora Scheduler +After=network.target +Wants=network.target + +[Service] +ExecStart=/usr/bin/aurora-scheduler-startup +User=aurora +Group=aurora +Restart=always +RestartSec=20 +LimitNOFILE=16384 + +[Install] +WantedBy=multi-user.target http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/aurora.spec ---------------------------------------------------------------------- diff --git a/specs/rpm/aurora.spec b/specs/rpm/aurora.spec new file mode 100644 index 0000000..5ec516f --- /dev/null +++ b/specs/rpm/aurora.spec @@ -0,0 +1,351 @@ +# +# Licensed 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. +# + +# Overridable variables; +%if %{?!AURORA_VERSION:1}0 +%global AURORA_VERSION 0.9.0 +%endif + +%if %{?!AURORA_USER:1}0 +%global AURORA_USER aurora +%endif + +%if %{?!AURORA_GROUP:1}0 +%global AURORA_GROUP aurora +%endif + +%if %{?!GRADLE_BASEURL:1}0 +%global GRADLE_BASEURL https://services.gradle.org/distributions +%endif + +%if %{?!GRADLE_VERSION:1}0 +%global GRADLE_VERSION 2.5 +%endif + +%if %{?!JAVA_VERSION:!}0 +%global JAVA_VERSION 1.8.0 +%endif + +%if %{?!MESOS_BASEURL:1}0 +%global MESOS_BASEURL https://archive.apache.org/dist/mesos +%endif + +%if %{?!MESOS_VERSION:1}0 +%global MESOS_VERSION 0.22.0 +%endif + +%if %{?!PEX_BINARIES:1}0 +%global PEX_BINARIES aurora aurora_admin thermos thermos_executor thermos_runner thermos_observer +%endif + +%if %{?!PYTHON_VERSION:1}0 +%global PYTHON_VERSION 2.7 +%endif + + +Name: aurora +Version: %{AURORA_VERSION} +Release: 1%{?dist}.aurora +Summary: A Mesos framework for scheduling and executing long-running services and cron jobs. +Group: Applications/System +License: ASL 2.0 +URL: https://%{name}.apache.org/ + +Source0: https://github.com/apache/%{name}/archive/%{version}/%{name}.tar.gz + +BuildRequires: apr-devel +BuildRequires: cyrus-sasl-devel +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: git +BuildRequires: java-%{JAVA_VERSION}-openjdk-devel +BuildRequires: krb5-devel +BuildRequires: libcurl-devel +BuildRequires: patch +%if 0%{?rhel} && 0%{?rhel} < 7 +BuildRequires: python27 +BuildRequires: python27-scldevel +%else +BuildRequires: python +BuildRequires: python-devel +%endif +BuildRequires: subversion-devel +BuildRequires: tar +BuildRequires: unzip +BuildRequires: wget +BuildRequires: zlib-devel + +%if 0%{?rhel} && 0%{?rhel} < 7 +Requires: daemonize +%endif +Requires: java-%{JAVA_VERSION}-openjdk +Requires: mesos = %{MESOS_VERSION} + + +%description +Apache Aurora is a service scheduler that runs on top of Mesos, enabling you to schedule +long-running services that take advantage of Mesos' scalability, fault-tolerance, and +resource isolation. + + +%package client +Summary: A client for scheduling services against the Aurora scheduler +Group: Development/Tools + +Requires: krb5-libs +%if 0%{?rhel} && 0%{?rhel} < 7 +Requires: python27 +%else +Requires: python +%endif + +%description client +A set of command-line applications used for interacting with and administering Aurora +schedulers. + + +%package thermos +Summary: Mesos executor that runs and monitors tasks scheduled by the Aurora scheduler +Group: Applications/System + +Requires: cyrus-sasl +Requires: daemonize +%if 0%{?rhel} && 0%{?rhel} < 7 +Requires: docker-io +%else +Requires: docker +%endif +Requires: mesos = %{MESOS_VERSION} +%if 0%{?rhel} && 0%{?rhel} < 7 +Requires: python27 +%else +Requires: python +%endif + +%description thermos +Thermos a simple process management framework used for orchestrating dependent processes +within a single Mesos chroot. It works in tandem with Aurora to ensure that tasks +scheduled by it are properly executed on Mesos slaves and provides a Web UI to monitor the +state of all running tasks. + + +%prep +%setup -n %{name} + + +%build +# Preferences SCL-installed Python 2.7 if we're building on EL6. +%if 0%{?rhel} && 0%{?rhel} < 7 +export PATH=/opt/rh/python27/root/usr/bin${PATH:+:${PATH}} +export LD_LIBRARY_PATH=/opt/rh/python27/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} +export MANPATH=/opt/rh/python27/root/usr/share/man:${MANPATH} +# For systemtap +export XDG_DATA_DIRS=/opt/rh/python27/root/usr/share${XDG_DATA_DIRS:+:${XDG_DATA_DIRS}} +# For pkg-config +export PKG_CONFIG_PATH=/opt/rh/python27/root/usr/lib64/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}} +%endif + +# Preferences Java 1.8 over any other Java version. +export PATH=/usr/lib/jvm/java-1.8.0/bin:${PATH} + +# Downloads Gradle executable. +wget %{GRADLE_BASEURL}/gradle-%{GRADLE_VERSION}-bin.zip +unzip gradle-%{GRADLE_VERSION}-bin.zip + +# Creates Pants directory where we'll store our native Mesos Python eggs. +mkdir -p .pants.d/python/eggs/ + +# Builds mesos-native and mesos-interface eggs if not currently packaged. +wget "%{MESOS_BASEURL}/%{MESOS_VERSION}/mesos-%{MESOS_VERSION}.tar.gz" +tar xvzf mesos-%{MESOS_VERSION}.tar.gz +pushd mesos-%{MESOS_VERSION} +./configure --disable-java +make +find . -name '*.egg' -exec cp -v {} ../.pants.d/python/eggs/ \; +popd + +# Builds the Aurora scheduler. +./gradle-%{GRADLE_VERSION}/bin/gradle installDist + +# Builds Aurora client PEX binaries. +./pants binary src/main/python/apache/aurora/kerberos:kaurora +./pants binary src/main/python/apache/aurora/kerberos:kaurora_admin + +# Builds Aurora Thermos and GC executor PEX binaries. +./pants binary src/main/python/apache/aurora/executor:thermos_executor +./pants binary src/main/python/apache/aurora/tools:thermos +./pants binary src/main/python/apache/thermos/runner:thermos_runner +./pants binary src/main/python/apache/aurora/tools:thermos_observer + +# Packages the Thermos runner within the Thermos executor. +python <<EOF +import contextlib +import zipfile +with contextlib.closing(zipfile.ZipFile('dist/thermos_executor.pex', 'a')) as zf: + zf.writestr('apache/aurora/executor/resources/__init__.py', '') + zf.write('dist/thermos_runner.pex', 'apache/aurora/executor/resources/thermos_runner.pex') +EOF + + +%install +rm -rf $RPM_BUILD_ROOT + +# Builds installation directory structure. +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_docdir}/%{name}-%{version} +mkdir -p %{buildroot}%{_prefix}/lib/%{name} +mkdir -p %{buildroot}%{_sharedstatedir} +mkdir -p %{buildroot}%{_localstatedir}/lib/%{name} +mkdir -p %{buildroot}%{_localstatedir}/log/%{name} +mkdir -p %{buildroot}%{_localstatedir}/log/thermos +mkdir -p %{buildroot}%{_localstatedir}/run/thermos +mkdir -p %{buildroot}%{_sysconfdir}/%{name} +mkdir -p %{buildroot}%{_sysconfdir}/init.d +mkdir -p %{buildroot}%{_sysconfdir}/systemd/system +mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d +mkdir -p %{buildroot}%{_sysconfdir}/sysconfig + +# Installs the Aurora scheduler that was just built into /usr/lib/aurora. +cp -r dist/install/aurora-scheduler/* %{buildroot}%{_prefix}/lib/%{name} + +# Installs all PEX binaries. +for pex_binary in %{PEX_BINARIES}; do + install -m 755 dist/${pex_binary}.pex %{buildroot}%{_bindir}/${pex_binary} +done + +# Strip the "k" from Kerberized client binaries. +mv %{buildroot}%{_bindir}/kaurora %{buildroot}%{_bindir}/aurora +mv %{buildroot}%{_bindir}/kaurora_admin %{buildroot}%{_bindir}/aurora_admin + +# Installs all support scripting. +%if 0%{?fedora} || 0%{?rhel} > 6 +install -m 644 build-support/packaging/rpm/%{name}.service %{buildroot}%{_sysconfdir}/systemd/system/%{name}.service +install -m 644 build-support/packaging/rpm/thermos-observer.service %{buildroot}%{_sysconfdir}/systemd/system/thermos-observer.service +%else +install -m 755 build-support/packaging/rpm/%{name}.init.sh %{buildroot}%{_sysconfdir}/init.d/%{name} +install -m 755 build-support/packaging/rpm/thermos-observer.init.sh %{buildroot}%{_sysconfdir}/init.d/thermos-observer +%endif + +install -m 755 build-support/packaging/rpm/%{name}.startup.sh %{buildroot}%{_bindir}/%{name}-scheduler-startup +install -m 755 build-support/packaging/rpm/thermos-observer.startup.sh %{buildroot}%{_bindir}/thermos-observer-startup + +install -m 644 build-support/packaging/rpm/%{name}.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/%{name} +install -m 644 build-support/packaging/rpm/thermos-observer.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/thermos-observer + +install -m 644 build-support/packaging/rpm/%{name}.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/%{name} +install -m 644 build-support/packaging/rpm/thermos-observer.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/thermos-observer + +install -m 644 build-support/packaging/rpm/clusters.json %{buildroot}%{_sysconfdir}/%{name}/clusters.json + + +%pre +getent group %{AURORA_GROUP} > /dev/null || groupadd -r %{AURORA_GROUP} +getent passwd %{AURORA_USER} > /dev/null || \ + useradd -r -d %{_localstatedir}/lib/%{name} -g %{AURORA_GROUP} \ + -s /bin/bash -c "Aurora Scheduler" %{AURORA_USER} +exit 0 + +# Pre/post installation scripts: +%post +%if 0%{?fedora} || 0%{?rhel} > 6 +%systemd_post %{name}.service +%else +/sbin/chkconfig --add %{name} +%endif + +%preun +%if 0%{?fedora} || 0%{?rhel} > 6 +%systemd_preun %{name}.service +%else +/sbin/service %{name} stop >/dev/null 2>&1 +/sbin/chkconfig --del %{name} +%endif + +%postun +%if 0%{?fedora} || 0%{?rhel} > 6 +%systemd_postun_with_restart %{name}.service +%else +/sbin/service %{name} start >/dev/null 2>&1 +%endif + + +%post thermos +%if 0%{?fedora} || 0%{?rhel} > 6 +%systemd_post thermos-observer.service +%else +/sbin/chkconfig --add thermos-observer +%endif + +%preun thermos +%if 0%{?fedora} || 0%{?rhel} > 6 +%systemd_preun thermos-observer.service +%else +/sbin/service thermos-observer stop >/dev/null 2>&1 +/sbin/chkconfig --del thermos-observer +%endif + +%postun thermos +%if 0%{?fedora} || 0%{?rhel} > 6 +%systemd_postun_with_restart thermos-observer.service +%else +/sbin/service thermos-observer start >/dev/null 2>&1 +%endif + + +%files +%defattr(-,root,root,-) +%doc docs/*.md +%{_bindir}/aurora-scheduler-startup +%attr(-,%{AURORA_USER},%{AURORA_GROUP}) %{_localstatedir}/lib/%{name} +%attr(-,%{AURORA_USER},%{AURORA_GROUP}) %{_localstatedir}/log/%{name} +%{_prefix}/lib/%{name}/bin/* +%{_prefix}/lib/%{name}/etc/* +%{_prefix}/lib/%{name}/lib/* +%if 0%{?fedora} || 0%{?rhel} > 6 +%{_sysconfdir}/systemd/system/%{name}.service +%else +%{_sysconfdir}/init.d/%{name} +%endif +%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} + + +%files client +%defattr(-,root,root,-) +%{_bindir}/%{name} +%{_bindir}/%{name}_admin +%config(noreplace) %{_sysconfdir}/%{name}/clusters.json + + +%files thermos +%defattr(-,root,root,-) +%{_bindir}/thermos +%{_bindir}/thermos_executor +%{_bindir}/thermos_observer +%{_bindir}/thermos_runner +%{_bindir}/thermos-observer-startup +%{_localstatedir}/log/thermos +%{_localstatedir}/run/thermos +%if 0%{?fedora} || 0%{?rhel} > 6 +%{_sysconfdir}/systemd/system/thermos-observer.service +%else +%{_sysconfdir}/init.d/thermos-observer +%endif +%config(noreplace) %{_sysconfdir}/logrotate.d/thermos-observer +%config(noreplace) %{_sysconfdir}/sysconfig/thermos-observer + + +%changelog +* Tue Apr 14 2015 Steve Salevan <[email protected]> +- Initial specfile writeup. http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/aurora.startup.sh ---------------------------------------------------------------------- diff --git a/specs/rpm/aurora.startup.sh b/specs/rpm/aurora.startup.sh new file mode 100644 index 0000000..3c444d9 --- /dev/null +++ b/specs/rpm/aurora.startup.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Starts up an Aurora scheduler process. +# +# Licensed 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. + + +source /etc/sysconfig/aurora + +# Environment variables control the behavior of the Mesos scheduler driver (libmesos). +export GLOG_v LIBPROCESS_PORT LIBPROCESS_IP +export JAVA_OPTS="${JAVA_OPTS[*]}" + +# Preferences Java 1.8 over any other Java version. +export PATH=/usr/lib/jvm/java-1.8.0/bin:${PATH} + +exec /usr/lib/aurora/bin/aurora-scheduler "${AURORA_FLAGS[@]}" http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/aurora.sysconfig ---------------------------------------------------------------------- diff --git a/specs/rpm/aurora.sysconfig b/specs/rpm/aurora.sysconfig new file mode 100644 index 0000000..b2a974f --- /dev/null +++ b/specs/rpm/aurora.sysconfig @@ -0,0 +1,79 @@ +#!/bin/bash +# Configuration used when executing the Aurora task scheduler process. +# +# Licensed 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. + + +GLOG_v=0 + +LIBPROCESS_PORT=8083 +LIBPROCESS_IP='127.0.0.1' + +# Flags that control the behavior of the JVM. +JAVA_OPTS=( + # Uses server-level GC optimizations, as this is a server. + -server + + # Location of libmesos-XXXX.so / libmesos-XXXX.dylib + -Djava.library.path='/usr/lib;/usr/lib64' +) + +# Flags control the behavior of the Aurora scheduler. +# For a full list of available flags, run /usr/lib/aurora/bin/aurora-scheduler -help +AURORA_FLAGS=( + # The name of this cluster. + -cluster_name='main' + + # The HTTP port upon which Aurora will listen. + -http_port=8081 + + # The ZooKeeper URL of the ZNode where the Mesos master has registered. + -mesos_master_address='zk://127.0.0.1:2181/mesos/master' + + # The ZooKeeper quorum to which Aurora will register itself. + -zk_endpoints='127.0.0.1:2181' + + # The ZooKeeper ZNode within the specified quorum to which Aurora will register its + # ServerSet, which keeps track of all live Aurora schedulers. + -serverset_path='/aurora/scheduler' + + # The log level of the built-in logger. + -vlog='INFO' + + # Allows the scheduling of containers of the provided type. + -allowed_container_types='DOCKER,MESOS' + + ### Native Log Settings ### + + # The native log serves as a replicated database which stores the state of the + # scheduler, allowing for multi-master operation. + + # Size of the quorum of Aurora schedulers which possess a native log. If running in + # multi-master mode, consult the following document to determine appropriate values: + # + # https://aurora.apache.org/documentation/latest/deploying-aurora-scheduler/#replicated-log-configuration + -native_log_quorum_size='1' + # The ZooKeeper ZNode to which Aurora will register the locations of its replicated log. + -native_log_zk_group_path='/aurora/native-log' + # The local directory in which an Aurora scheduler can find Aurora's replicated log. + -native_log_file_path='/var/lib/aurora/db' + # The local directory in which Aurora schedulers will place state backups. + -backup_dir='/var/lib/aurora/backups' + + ### Thermos Settings ### + + # The local path of the Thermos executor binary. + -thermos_executor_path='/usr/bin/thermos_executor' + # Flags to pass to the Thermos executor. + -thermos_executor_flags='--announcer-enable --announcer-ensemble 127.0.0.1:2181' +) http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/clusters.json ---------------------------------------------------------------------- diff --git a/specs/rpm/clusters.json b/specs/rpm/clusters.json new file mode 100644 index 0000000..133013b --- /dev/null +++ b/specs/rpm/clusters.json @@ -0,0 +1,6 @@ +[{ + "name": "main", + "zk": "127.0.0.1", + "scheduler_zk_path": "/aurora/scheduler", + "auth_mechanism": "UNAUTHENTICATED" +}] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/thermos-observer.init.sh ---------------------------------------------------------------------- diff --git a/specs/rpm/thermos-observer.init.sh b/specs/rpm/thermos-observer.init.sh new file mode 100644 index 0000000..65a2452 --- /dev/null +++ b/specs/rpm/thermos-observer.init.sh @@ -0,0 +1,197 @@ +#!/bin/bash +# +# thermos-observer Starts the Thermos task observer. +# +# chkconfig: 345 55 25 +# description: This script starts the Thermos task observer, which provides a WebUI for \ +# viewing the state of tasks launched by the Thermos executor. +# +# Licensed 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: thermos-observer +# Required-Start: +# Required-Stop: +# Should-Start: +# Should-Stop: +# Default-Start: 3 4 5 +# Default-Stop: 0 1 2 6 +# Short-Description: Starts the Thermos task observer. +# Description: Starts the Thermos task observer. +### END INIT INFO + +# Source LSB function library. +. /lib/lsb/init-functions + +exec="/usr/bin/thermos-observer-startup" +prog="thermos-observer" +logdir="/var/log/thermos" +lockfile="/var/run/thermos-observer.lock" +pid_file="/var/run/thermos-observer.pid" + +stderr_log="${logdir}/observer.log" + +# Get a sane screen width +[ -z "${COLUMNS:-}" ] && COLUMNS=80 +[ -z "${CONSOLETYPE:-}" ] && CONSOLETYPE="$(/sbin/consoletype)" + +# Read in init configuration. +if [ -z "${BOOTUP:-}" ]; then + if [ -f /etc/sysconfig/init ]; then + . /etc/sysconfig/init + else + BOOTUP=color + RES_COL=60 + MOVE_TO_COL="echo -en \\033[${RES_COL}G" + SETCOLOR_SUCCESS="echo -en \\033[1;32m" + SETCOLOR_FAILURE="echo -en \\033[1;31m" + SETCOLOR_WARNING="echo -en \\033[1;33m" + SETCOLOR_NORMAL="echo -en \\033[0;39m" + LOGLEVEL=1 + fi + if [ "$CONSOLETYPE" = "serial" ]; then + BOOTUP=serial + MOVE_TO_COL= + SETCOLOR_SUCCESS= + SETCOLOR_FAILURE= + SETCOLOR_WARNING= + SETCOLOR_NORMAL= + fi +fi + +function usage { + err "Starts the Thermos task observer." + err "Usage: ${0} (restart|start|stop|status)" +} + +function out { + printf '%s\n' "$*"; +} + +function msg { + out "$*" >&2; +} + +function err { + local x=${?}; + msg "$*"; + return $(( ${x} == 0 ? 1 : ${x} )); +} + +function echo_success { + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL + echo -n "[" + [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS + echo -n $" OK " + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL + echo -n "]" + echo -ne "\r" + return 0 +} + +function echo_failure { + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL + echo -n "[" + [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE + echo -n $"FAILED" + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL + echo -n "]" + echo -ne "\r" + return 1 +} + +# Parse arguments. +ACTION=${1} + +# Ensures that action is. +if [ -z ${ACTION} ]; then + err "ERROR: No action specified." + usage + exit -1 +fi + +start() { + [ -x ${exec} ] || exit 5 + [ -f ${config} ] || exit 6 + echo -n $"Starting $prog: " + start_daemon daemonize -e ${stderr_log} -p ${pid_file} ${exec} + retval=$? + [ $retval -eq 0 ] && (echo_success; touch $lockfile) || echo_failure + echo + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc -p ${pid_file} ${exec} + retval=$? + [ $retval -eq 0 ] && (echo_success; rm -f $lockfile) || echo_failure + echo + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + pid=$(pidofproc -p ${pid_file} ${prog}) + if [ $? -eq 0 ]; then + echo "${prog} (pid ${pid}) is running..." + return 0 + else + if [ -e $lockfile ]; then + echo "${prog} dead but lockfile exists" + return 2 + else + echo "${prog} is stopped" + return 1 + fi + fi +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + +# Executes the requested daemon action. +case "${ACTION}" in + start) + rh_status_q && rh_status && exit 0 + start + ;; + stop) + stop + ;; + status) + rh_status + ;; + restart) + restart + ;; + *) + err "ERROR: Invalid action specified." + usage + exit -3 +esac + +exit $? http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/thermos-observer.logrotate ---------------------------------------------------------------------- diff --git a/specs/rpm/thermos-observer.logrotate b/specs/rpm/thermos-observer.logrotate new file mode 100644 index 0000000..a6a7f5c --- /dev/null +++ b/specs/rpm/thermos-observer.logrotate @@ -0,0 +1,24 @@ +# Licensed 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. + + +/var/log/thermos/*.log { + + daily + missingok + rotate 14 + compress + delaycompress + notifempty + copytruncate + +} http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/thermos-observer.service ---------------------------------------------------------------------- diff --git a/specs/rpm/thermos-observer.service b/specs/rpm/thermos-observer.service new file mode 100644 index 0000000..d019635 --- /dev/null +++ b/specs/rpm/thermos-observer.service @@ -0,0 +1,27 @@ +# Licensed 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=Thermos Observer +After=network.target +Wants=network.target + +[Service] +ExecStart=/usr/bin/thermos-observer-startup +User=root +Group=root +Restart=always +RestartSec=20 +LimitNOFILE=16384 + +[Install] +WantedBy=multi-user.target http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/thermos-observer.startup.sh ---------------------------------------------------------------------- diff --git a/specs/rpm/thermos-observer.startup.sh b/specs/rpm/thermos-observer.startup.sh new file mode 100644 index 0000000..2d94fd9 --- /dev/null +++ b/specs/rpm/thermos-observer.startup.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Starts up a Thermos observer process. +# +# Licensed 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. + + +source /etc/sysconfig/thermos-observer + +exec /usr/bin/thermos_observer "${OBSERVER_ARGS[@]}" http://git-wip-us.apache.org/repos/asf/aurora-packaging/blob/d05092db/specs/rpm/thermos-observer.sysconfig ---------------------------------------------------------------------- diff --git a/specs/rpm/thermos-observer.sysconfig b/specs/rpm/thermos-observer.sysconfig new file mode 100644 index 0000000..4bc5430 --- /dev/null +++ b/specs/rpm/thermos-observer.sysconfig @@ -0,0 +1,22 @@ +#!/bin/bash +# Configuration used when executing the Thermos observer process. +# +# Licensed 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. + + +OBSERVER_ARGS=( + --root=/var/run/thermos + --port=1338 + --log_to_disk=NONE + --log_to_stderr=google:INFO +)
