summaryrefslogtreecommitdiff
path: root/mason.configure
diff options
context:
space:
mode:
Diffstat (limited to 'mason.configure')
-rw-r--r--mason.configure101
1 files changed, 101 insertions, 0 deletions
diff --git a/mason.configure b/mason.configure
new file mode 100644
index 00000000..fb73b01c
--- /dev/null
+++ b/mason.configure
@@ -0,0 +1,101 @@
+#!/bin/sh
+#
+# Copyright (C) 2014 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# This is a "morph deploy" configuration extension to fully configure
+# a Mason instance at deployment time. It uses the following variables
+# from the environment:
+#
+# * MASON_CLUSTER_MORPHOLOGY
+# * MASON_UPSTREAM_TROVE_ADDRESS
+# * MASON_DEFINITIONS_REF
+# * MASON_DISTBUILD_ARCH
+# * MASON_TEST_HOST
+# * TROVE_HOST
+# * TROVE_ID
+# * CONTROLLERHOST
+
+set -e
+
+ROOT="$1"
+
+if [ "$MASON_CLUSTER_MORPHOLOGY" = "" \
+ -o "$MASON_UPSTREAM_TROVE_ADDRESS" = "" \
+ -o "$MASON_DEFINITIONS_REF" = "" \
+ -o "$MASON_DISTBUILD_ARCH" = "" \
+ -o "$MASON_TEST_HOST" = "" ]; then
+ echo Not configuring as Mason, some options not defined
+ exit 0
+fi
+
+
+##########################################################################
+# Functions
+##########################################################################
+
+shellescape() {
+ echo "'$(echo "$1" | sed -e "s/'/'\\''/g")'"
+}
+
+
+##########################################################################
+# Generate config variable shell snippet
+##########################################################################
+
+MASON_CONFIG="$ROOT"/root/mason.conf
+
+echo "Creating $MASON_CONFIG"
+cat >>"$MASON_CONFIG" <<EOF
+#################### START OF DEPLOY TIME CONFIGURATION #######################
+
+UPSTREAM_TROVE_ADDRESS=$(shellescape "$MASON_UPSTREAM_TROVE_ADDRESS")
+DEFINITIONS_REF=$(shellescape "$MASON_DEFINITIONS_REF")
+DISTBUILD_ARCH=$(shellescape "$MASON_DISTBUILD_ARCH")
+DISTBUILD_CONTROLLER_ADDRESS=$(shellescape "$CONTROLLERHOST")
+DISTBUILD_TROVE_ADDRESS=$(shellescape "$TROVE_HOST")
+TROVE_ID=$(shellescape "$TROVE_ID")
+BUILD_CLUSTER_MORPHOLOGY=$(shellescape "$MASON_CLUSTER_MORPHOLOGY")
+TEST_VM_HOST_SSH_URL=$(shellescape "$MASON_TEST_HOST")
+
+##################### END OF DEPLOY TIME CONFIGURATION ########################
+EOF
+
+
+##########################################################################
+# Copy Mason files into root filesystem
+##########################################################################
+
+cp mason/mason.sh "$ROOT"/root/mason.sh
+cp mason/mason-report.sh "$ROOT"/root/mason-report.sh
+
+cp mason/mason.timer "$ROOT"/etc/systemd/system/mason.timer
+ln -s ../mason.timer "$ROOT"/etc/systemd/system/multi-user.target.wants/mason.timer
+
+cp mason/mason.service "$ROOT"/etc/systemd/system/mason.service
+ln -s ../mason.service "$ROOT"/etc/systemd/system/multi-user.target.wants/mason.service
+
+##########################################################################
+# Set up httpd web server
+##########################################################################
+
+cp mason/httpd.service "$ROOT"/etc/systemd/system/httpd.service
+ln -s ../httpd.service "$ROOT"/etc/systemd/system/multi-user.target.wants/httpd.service
+
+mkdir -p "$ROOT"/srv/mason
+
+cat >>"$ROOT"/etc/httpd.conf <<EOF
+.log:text/plain
+EOF