Skip to content

Instantly share code, notes, and snippets.

@yuroyoro
Forked from iotaweb/riak.sh
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yuroyoro/a7be75f30f0d5018a12a to your computer and use it in GitHub Desktop.
Save yuroyoro/a7be75f30f0d5018a12a to your computer and use it in GitHub Desktop.
#!/bin/sh
CWD=$(cd $(dirname $0); pwd)
echo "This script will create a local riak cluster for development purposes only."
echo "Prerequisites: install riak using homebrew (tested with v1.4.8)."
echo "The cluster will be created in the current directory."
echo "Riak admin is enabled with no security.\n"
read -p "Enter a name for your cluster [cluster]: " name
CLUSTER_DIR=${name:-cluster}
read -p "Enter a prefix for each node [node]: " name
NODE_NAME=${name:-node}
read -p "Enter how many nodes you want [3]: " size
CLUSTER_SIZE=${size:-3}
BASE_DIR="${CWD}/${CLUSTER_DIR}"
echo "Creating cluster directory ${BASE_DIR}"
mkdir "${BASE_DIR}"
for node in $(seq 1 $CLUSTER_SIZE)
do
NODE_DIR="$BASE_DIR/${NODE_NAME}${node}"
echo "Creating node ${NODE_NAME}${node}"
cp -r $(brew --prefix riak) $NODE_DIR
echo " Removing data dir"
rm -rf "$NODE_DIR/libexec/data/"
HTTP="809${node}"
echo " Setting 'http' to '${HTTP}'"
perl -p -i.bak -e 's/({http, \[ {"\d+\.\d+\.\d+\.\d+", )(\d+)( } ]})/${1}'${HTTP}'${3}/g' "$NODE_DIR/libexec/etc/app.config"
HANDOFF_PORT="810${node}"
echo " Setting 'handoff_port' to '${HANDOFF_PORT}'"
perl -p -i.bak -e 's/({handoff_port, )(\d+)( })/${1}'${HANDOFF_PORT}'${3}/g' "$NODE_DIR/libexec/etc/app.config"
PB_PORT="808${node}"
echo " Setting 'pb_port' to '${PB_PORT}'"
perl -p -i.bak -e 's/({pb, \[ {"\d+\.\d+\.\d+\.\d+", )(\d+)( } ]})/${1}'${PB_PORT}'${3}/g' "$NODE_DIR/libexec/etc/app.config"
if [ ${node} -eq 1 ]
then
echo " Setting 'riak control' admin settings"
echo " Enabling 'riak control' admin"
perl -p -i.bak -e 's/{enabled, false}/{enabled, true}/g' "$NODE_DIR/libexec/etc/app.config"
echo " Disabling authentication for 'riak control' admin"
perl -p -i.bak -e 's/{auth, userlist}/{auth, none}/g' "$NODE_DIR/libexec/etc/app.config"
fi
NAME="${NODE_NAME}${node}"
echo " Setting 'name' to '${NAME}'"
perl -p -i.bak -e 's/(-name )(\S+)(@.*)$/${1}'${NAME}'${3}/g' "$NODE_DIR/libexec/etc/vm.args"
NODE_BIN_DIR="$NODE_DIR/libexec/bin"
NODE_LIBEXEC_DIR="$NODE_DIR/libexec"
echo " Setting 'RUNNER_BASE_DIR' to '${NODE_LIBEXEC_DIR}'"
perl -p -i.bak -e "s|RUNNER_BASE_DIR=.*$|RUNNER_BASE_DIR=${NODE_LIBEXEC_DIR}|g" "$NODE_LIBEXEC_DIR/lib/env.sh"
echo " Rewrite absolulte path in /bin scripts to ${NODE_BIN_DIR}"
perl -p -i.bak -e "s|exec \".*/libexec/bin|exec \"${NODE_BIN_DIR}|g" "$NODE_DIR/bin/riak" \
"$NODE_DIR/bin/riak-admin" \
"$NODE_DIR/bin/riak-debug" \
"$NODE_DIR/bin/search-cmd" \
done
for node in $(seq 1 $CLUSTER_SIZE)
do
echo "Starting node ${NODE_NAME}${node}"
${CLUSTER_DIR}/${NODE_NAME}${node}/bin/riak start
echo " Node ${NODE_NAME}${node} started"
echo " Pinging node ${NODE_NAME}${node}..."
${CLUSTER_DIR}/${NODE_NAME}${node}/bin/riak ping
done
#echo "Building the cluster"
# AUTOMATED JOINING NOT WORKING
# The following commented section will join nodes to cluster,
# but the partitions won't resize for some reason
#for node in $(seq 2 $CLUSTER_SIZE)
# do
# echo " Joining node ${NODE_NAME}${node}"
# ${CLUSTER_DIR}/${NODE_NAME}${node}/bin/riak-admin cluster join ${NODE_NAME}1@127.0.0.1
# done
#echo "Reviewing the staged plan..."
#${CLUSTER_DIR}/${NODE_NAME}1/bin/riak-admin cluster plan
#echo "Committing the staged plan..."
#${CLUSTER_DIR}/${NODE_NAME}1/bin/riak-admin cluster commit
echo "\nYou can further customise '${NODE_NAME}1/libexec/etc/app.config' \n"
echo "Example commands:\n"
echo " ${CLUSTER_DIR}/${NODE_NAME}1/bin/riak start"
echo " ${CLUSTER_DIR}/${NODE_NAME}1/bin/riak ping"
echo " ${CLUSTER_DIR}/${NODE_NAME}1/bin/riak stop \n"
echo "Riak admin control available here: http://127.0.0.1:8091/admin \n"
echo "Manually add the other nodes to your cluster, e.g.: \n"
for node in $(seq 2 $CLUSTER_SIZE)
do
echo " ${NODE_NAME}${node}@127.0.0.1"
done
echo "\nRiak cluster available here: http://127.0.0.1:8091/riak \n"
@yuroyoro
Copy link
Author

yuroyoro commented May 9, 2014

adapted to Riak 1.4.8

@berjiskalm
Copy link

hi how are you i love php
can i have some question from you?
berjiskalm@yahoo.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment