summaryrefslogtreecommitdiff
path: root/mason/mason-generator.sh
diff options
context:
space:
mode:
Diffstat (limited to 'mason/mason-generator.sh')
-rwxr-xr-xmason/mason-generator.sh90
1 files changed, 46 insertions, 44 deletions
diff --git a/mason/mason-generator.sh b/mason/mason-generator.sh
index c1ffeb24..1a2eccac 100755
--- a/mason/mason-generator.sh
+++ b/mason/mason-generator.sh
@@ -2,46 +2,48 @@
set -e
-if [ "$1" == "-h" -o "$1" == "--help" ]; then
- echo "Usage:"
- echo " `basename $0` HOST_PREFIX UPSTREAM_TROVE_HOSTNAME VM_USER VM_HOST VM_PATH [HOST_POSTFIX]"
- echo ""
- echo "Where:"
- echo " HOST_PREFIX -- Name of your Mason instance"
- echo " e.g. \"my-mason\" to produce hostnames:"
- echo " my-mason-trove and my-mason-controller"
- echo " UPSTREAM_TROVE_HOSTNAME -- Upstream trove's hostname"
- echo " VM_USER -- User on VM host for VM deployment"
- echo " VM_HOST -- VM host for VM deployment"
- echo " VM_PATH -- Path to store VM images in on VM host"
- echo " HOST_POSTFIX -- e.g. \".example.com\" to get"
- echo " my-mason-trove.example.com"
- echo ""
- echo "This script makes deploying a Mason system simpler by automating"
- echo "the generation of keys for the systems to use, building of the"
- echo "systems, filling out the mason deployment cluster morphology"
- echo "template with useful values, and finally deploying the systems."
- echo ""
- echo "To ensure that the deployed system can deploy test systems, you"
- echo "must supply an ssh key to the VM host. Do so with the following"
- echo "command:"
- echo " ssh-copy-id -i ssh_keys-HOST_PREFIX/worker.key.pub VM_USER@VM_HOST"
- echo ""
- echo "To ensure that the mason can upload artifacts to the upstream trove,"
- echo "you must supply an ssh key to the upstream trove. Do so with the"
- echo "following command:"
- echo " ssh-copy-id -i ssh_keys-HOST_PREFIX/id_rsa.key.pub root@UPSTREAM_TROVE_HOSTNAME"
- echo ""
+if [ "$#" -lt 5 -o "$#" -gt 6 -o "$1" == "-h" -o "$1" == "--help" ]; then
+ cat <<EOF
+Usage:
+ `basename $0` HOST_PREFIX UPSTREAM_TROVE_HOSTNAME VM_USER VM_HOST VM_PATH [HOST_POSTFIX]
+
+Where:
+ HOST_PREFIX -- Name of your Mason instance
+ e.g. "my-mason" to produce hostnames:
+ my-mason-trove and my-mason-controller
+ UPSTREAM_TROVE_HOSTNAME -- Upstream trove's hostname
+ VM_USER -- User on VM host for VM deployment
+ VM_HOST -- VM host for VM deployment
+ VM_PATH -- Path to store VM images in on VM host
+ HOST_POSTFIX -- e.g. ".example.com" to get
+ my-mason-trove.example.com
+
+This script makes deploying a Mason system simpler by automating
+the generation of keys for the systems to use, building of the
+systems, filling out the mason deployment cluster morphology
+template with useful values, and finally deploying the systems.
+
+To ensure that the deployed system can deploy test systems, you
+must supply an ssh key to the VM host. Do so with the following
+command:
+ ssh-copy-id -i ssh_keys-HOST_PREFIX/worker.key.pub VM_USER@VM_HOST
+
+To ensure that the mason can upload artifacts to the upstream trove,
+you must supply an ssh key to the upstream trove. Do so with the
+following command:
+ ssh-copy-id -i ssh_keys-HOST_PREFIX/id_rsa.key.pub root@UPSTREAM_TROVE_HOSTNAME
+
+EOF
exit 0
fi
-HOST_PREFIX=$1
-UPSTREAM_TROVE=$2
-VM_USER=$3
-VM_HOST=$4
-VM_PATH=$5
-HOST_POSTFIX=$6
+HOST_PREFIX="$1"
+UPSTREAM_TROVE="$2"
+VM_USER="$3"
+VM_HOST="$4"
+VM_PATH="$5"
+HOST_POSTFIX="$6"
sedescape() {
# Escape all non-alphanumeric characters
@@ -53,12 +55,12 @@ sedescape() {
# Key generation
##############################################################################
-mkdir "ssh_keys-${HOST_PREFIX}"
+mkdir -p "ssh_keys-${HOST_PREFIX}"
cd "ssh_keys-${HOST_PREFIX}"
-ssh-keygen -t rsa -b 2048 -f mason.key -C mason@TROVE_HOST -N ''
-ssh-keygen -t rsa -b 2048 -f lorry.key -C lorry@TROVE_HOST -N ''
-ssh-keygen -t rsa -b 2048 -f worker.key -C worker@TROVE_HOST -N ''
-ssh-keygen -t rsa -b 2048 -f id_rsa -C trove-admin@TROVE_HOST -N ''
+test -e mason.key || ssh-keygen -t rsa -b 2048 -f mason.key -C mason@TROVE_HOST -N ''
+test -e lorry.key || ssh-keygen -t rsa -b 2048 -f lorry.key -C lorry@TROVE_HOST -N ''
+test -e worker.key || ssh-keygen -t rsa -b 2048 -f worker.key -C worker@TROVE_HOST -N ''
+test -e id_rsa || ssh-keygen -t rsa -b 2048 -f id_rsa -C trove-admin@TROVE_HOST -N ''
cd ../
@@ -66,7 +68,7 @@ cd ../
# Mason setup
##############################################################################
-cp mason.morph mason-${HOST_PREFIX}.morph
+cp clusters/mason.morph mason-${HOST_PREFIX}.morph
sed -i "s/red-box-v1/$(sedescape "$HOST_PREFIX")/g" "mason-$HOST_PREFIX.morph"
sed -i "s/ssh_keys/ssh_keys-$(sedescape "$HOST_PREFIX")/g" "mason-$HOST_PREFIX.morph"
@@ -81,8 +83,8 @@ sed -i "s/\.example\.com/$(sedescape "$HOST_POSTFIX")/g" "mason-$HOST_PREFIX.mor
# System building
##############################################################################
-morph build trove-system-x86_64
-morph build distbuild-system-x86_64
+morph build systems/trove-system-x86_64.morph
+morph build systems/distbuild-system-x86_64.morph
##############################################################################