Skip to content

Instantly share code, notes, and snippets.

@rdemoraes
Last active April 13, 2021 15:29
Show Gist options
  • Save rdemoraes/9e4a5f417f179191bf5a3c8ec8db9a5c to your computer and use it in GitHub Desktop.
Save rdemoraes/9e4a5f417f179191bf5a3c8ec8db9a5c to your computer and use it in GitHub Desktop.
Docker entrypoint script for cassandra
---
apiVersion: v1
kind: ConfigMap
metadata:
name: docker-entrypoint-sh
data:
docker-entrypoint.sh: |
#!/bin/bash
set -e # first arg is `-f` or `--some-option`
if [ "${1:0:1}" = '-' ]; then
set -- cassandra -f "$@"
fi # allow the container to be started with `--user`
if [ "$1" = 'cassandra' -a "$(id -u)" = '0' ]; then
chown -R cassandra /var/lib/cassandra /var/log/cassandra "$CASSANDRA_CONFIG"
exec gosu cassandra "$BASH_SOURCE" "$@"
fi if [ "$1" = 'cassandra' ]; then
: ${CASSANDRA_RPC_ADDRESS='0.0.0.0'} : ${CASSANDRA_LISTEN_ADDRESS='auto'}
if [ "$CASSANDRA_LISTEN_ADDRESS" = 'auto' ]; then
CASSANDRA_LISTEN_ADDRESS="$(hostname --ip-address)"
fi : ${CASSANDRA_BROADCAST_ADDRESS="$CASSANDRA_LISTEN_ADDRESS"} if [ "$CASSANDRA_BROADCAST_ADDRESS" = 'auto' ]; then
CASSANDRA_BROADCAST_ADDRESS="$(hostname --ip-address)"
fi
: ${CASSANDRA_BROADCAST_RPC_ADDRESS:=$CASSANDRA_BROADCAST_ADDRESS} if [ -n "${CASSANDRA_NAME:+1}" ]; then
: ${CASSANDRA_SEEDS:="cassandra"}
fi : ${CASSANDRA_SEEDS:="$CASSANDRA_BROADCAST_ADDRESS"}
sed -ri 's/(- seeds:).*/\1 "'"$CASSANDRA_SEEDS"'"/' "$CASSANDRA_CONFIG/cassandra.yaml" if [ "${HOSTNAME}" == 'cassandra-0' ];then
: ${CASSANDRA_INITIAL_TOKEN="$CASSANDRA_0_INITIAL_TOKEN"}
elif [ "${HOSTNAME}" == 'cassandra-1' ];then
: ${CASSANDRA_INITIAL_TOKEN="$CASSANDRA_1_INITIAL_TOKEN"}
elif [ "${HOSTNAME}" == 'cassandra-2' ];then
: ${CASSANDRA_INITIAL_TOKEN="$CASSANDRA_2_INITIAL_TOKEN"}
fi
sed -ri "s/\# initial_token\:/initial_token\: $CASSANDRA_INITIAL_TOKEN/" "$CASSANDRA_CONFIG/cassandra.yaml" for yaml in \
broadcast_address \
broadcast_rpc_address \
cluster_name \
endpoint_snitch \
listen_address \
num_tokens \
initial_token \
rpc_address \
start_rpc \
; do
var="CASSANDRA_${yaml^^}"
val="${!var}"
if [ "$val" ]; then
sed -ri 's/^(# )?('"$yaml"':).*/\2 '"$val"'/' "$CASSANDRA_CONFIG/cassandra.yaml"
fi
done for rackdc in dc rack; do
var="CASSANDRA_${rackdc^^}"
val="${!var}"
if [ "$val" ]; then
sed -ri 's/^('"$rackdc"'=).*/\1 '"$val"'/' "$CASSANDRA_CONFIG/cassandra-rackdc.properties"
fi
done
fi exec "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment