Skip to content

Instantly share code, notes, and snippets.

@dreverri
Created January 24, 2012 22:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dreverri/1672990 to your computer and use it in GitHub Desktop.
Save dreverri/1672990 to your computer and use it in GitHub Desktop.
if [ ! $# == 2 ]; then
echo "Usage: $( basename $0 ) /path/to/bin/riak dest_dir"
exit
fi
src_riak_script="$1"
src_riak_root="$( cd -P "$( dirname "$1" )" && pwd )"
src_riak_admin_script="$src_riak_root/riak-admin"
src_riak_search_cmd="$src_riak_root/search-cmd"
dest_dir="$( dirname "$2/foo" )"
mkdir -p "$dest_dir"
dest_dir="$( cd -P $dest_dir && pwd)"
bin_dir="$dest_dir/bin"
etc_dir="$dest_dir/etc"
log_dir="$dest_dir/log"
pipe_dir="$dest_dir/tmp/pipe/"
data_dir="$dest_dir/data"
riak_script="$bin_dir/riak"
riak_admin_script="$bin_dir/riak-admin"
riak_search_cmd="$bin_dir/search-cmd"
node_name="$( basename $dest_dir )@127.0.0.1"
vm_args="$etc_dir/vm.args"
app_config="$etc_dir/app.config"
http_port=$((9000 + $(($RANDOM % 100))))
pb_port=${pb_port:-$((9100 + $(($RANDOM % 100))))}
handoff_port=$((9200 + $(($RANDOM % 100))))
ring_creation_size=${ring_creation_size:-64}
backend=${backend:-riak_kv_bitcask_backend}
mkdir -p "$bin_dir"
mkdir -p "$etc_dir"
mkdir -p "$log_dir"
mkdir -p "$data_dir"
mkdir -p "$pipe_dir"
cp "$src_riak_script" "$riak_script"
cp "$src_riak_admin_script" "$riak_admin_script"
cp "$src_riak_search_cmd" "$riak_search_cmd"
# Update riak and riak-admin
for script in $riak_script $riak_admin_script $riak_search_cmd; do
sed -i "" -e "s/^\(RUNNER_SCRIPT_DIR=\)\(.*\)/\1$(echo $bin_dir|sed -e 's/[\/&]/\\&/g')/" $script
sed -i "" -e "s/^\(RUNNER_ETC_DIR=\)\(.*\)/\1$(echo $etc_dir|sed -e 's/[\/&]/\\&/g')/" $script
sed -i "" -e "s/^\(RUNNER_USER=\)\(.*\)/\1/" $script
sed -i "" -e "s/^\(RUNNER_LOG_DIR=\)\(.*\)/\1$(echo $log_dir|sed -e 's/[\/&]/\\&/g')/" $script
sed -i "" -e "s/^\(PIPE_DIR=\)\(.*\)/\1$(echo $pipe_dir|sed -e 's/[\/&]/\\&/g')/" $script
sed -i "" -e "s/^\(PLATFORM_DATA_DIR=\)\(.*\)/\1$(echo $data_dir|sed -e 's/[\/&]/\\&/g')/" $script
sed -i "" -e 's/\(grep "$RUNNER_BASE_DIR\/.*\/\[b\]eam"\)/grep "$RUNNER_ETC_DIR\/app.config"/' $script
sed -i "" -e "s/^\(RUNNER_BASE_DIR=\)\(\${RUNNER_SCRIPT_DIR%\/\*}\)/\1$(echo ${src_riak_root%/*}|sed -e 's/[\/&]/\\&/g')/" $script
sed -i "" -e "s/^\(cd \$RUNNER_BASE_DIR\)/cd $(echo $dest_dir|sed -e 's/[\/&]/\\&/g')/" $script
done
# Write vm.args
echo "
-name $node_name
-setcookie riak
+K true
+A 64
+W w
-env ERL_MAX_PORTS 4096
-env ERL_FULLSWEEP_AFTER 0
-env ERL_CRASH_DUMP $log_dir/erl_crash.dump
" > $vm_args
# Write app.config
echo "
[
{riak_core, [
{ring_state_dir, \"$data_dir/ring\"},
{http, [ {\"127.0.0.1\", $http_port } ]},
{handoff_port, $handoff_port},
{platform_bin_dir, \"$bin_dir\"},
{platform_data_dir, \"$data_dir\"},
{platform_etc_dir, \"$etc_dir\"},
{platform_log_dir, \"$log_dir\"}
]},
{riak_kv, [
{storage_backend, $backend},
{ring_creation_size, $ring_creation_size},
{pb_ip, \"127.0.0.1\"},
{pb_port, $pb_port},
{mapred_system, pipe},
{map_js_vm_count, 8},
{reduce_js_vm_count, 6},
{hook_js_vm_count, 2},
{http_url_encoding, on},
{riak_kv_stat, true},
{legacy_stats, true},
{vnode_vclocks, true},
{legacy_keylisting, false}
]},
{riak_search, [
{enabled, false}
]},
{merge_index, [
{data_root, \"$data_dir/merge_index\"},
{buffer_rollover_size, 1048576},
{max_compact_segments, 20}
]},
{bitcask, [
{data_root, \"$data_dir/bitcask\"}
]},
{eleveldb, [
{data_root, \"$data_dir/leveldb\"}
]},
{luwak, [
{enabled, false}
]},
{lager, [
{handlers, [
{lager_console_backend, info},
{lager_file_backend, [
{\"$log_dir/error.log\", error, 10485760, \"$D0\", 5},
{\"$log_dir/console.log\", info, 10485760, \"$D0\", 5}
]}
]}
]},
{riak_sysmon, [
{process_limit, 30},
{port_limit, 2},
{gc_ms_limit, 100},
{heap_word_limit, 40111000},
{busy_port, true},
{busy_dist_port, true}
]},
{sasl, [
{sasl_error_logger, false}
]}
].
" > $app_config
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment