diff options
Diffstat (limited to 'mason.configure')
-rw-r--r-- | mason.configure | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/mason.configure b/mason.configure new file mode 100644 index 00000000..8528ad89 --- /dev/null +++ b/mason.configure @@ -0,0 +1,92 @@ +#!/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 + +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 /srv/mason |