Skip to content

Instantly share code, notes, and snippets.

@mz2
Created August 2, 2018 13:51
Show Gist options
  • Save mz2/1167f908ea52449602d48ab8beea308b to your computer and use it in GitHub Desktop.
Save mz2/1167f908ea52449602d48ab8beea308b to your computer and use it in GitHub Desktop.
#!/bin/bash
set -m
NFS_MOUNTPOINT="/$NFS/$HOSTNAME"
if [[ -v "${NFS_MOUNTPOINT}" ]]; then
mkdir -p "${NFS_MOUNTPOINT}" && chown couchbase:couchbase "${NFS_MOUNTPOINT}"
fi
/entrypoint.sh couchbase-server &
attempts=0
while ! timeout 1 bash -c "echo > /dev/tcp/localhost/8091" 2>/dev/null
do
attempts=$((attempts + 1))
if [ $attempts -eq 100 ]
then
echo "Failed to connect to Couchbase Server within timeout."
exit 1
fi
sleep 1
done
echo "Couchbase visible."
echo "Assigning node IP…"
export IP=`hostname -I|tr -d ' '`
if [[ -v $NFS ]]; then
couchbase-cli node-init -c ${IP}:8091 \
-u ${APP_ADMIN_USERNAME} \
-p ${APP_ADMIN_PASSWORD} \
--node-init-hostname=$IP \
--node-init-data-path "${NFS_MOUNTPOINT}/data" \
--node-init-index-path "${NFS_MOUNTPOINT}/indexes"
else
couchbase-cli node-init -c ${IP}:8091 \
-u ${APP_ADMIN_USERNAME} \
-p ${APP_ADMIN_PASSWORD} \
--node-init-hostname=$IP
fi
echo "Asigning node ip"
export IP=`hostname -I|tr -d ' '`
couchbase-cli node-init -c ${IP}:8091 -u ${APP_ADMIN_USERNAME} -p ${APP_ADMIN_PASSWORD} --node-init-hostname=$IP \
--node-init-data-path /${NFS}/${HOSTNAME}/data --node-init-index-path /${NFS}/${HOSTNAME}/indexes
echo "Creating pool..."
curl -s -XPOST http://127.0.0.1:8091/pools/default -u ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} -d memoryQuota=${CLUSTER_RAM_SIZE_MB} -d indexMemoryQuota=${INDEX_RAM_SIZE_MB}
echo "Creating services..."
curl -s -XPOST http://127.0.0.1:8091/node/controller/setupServices -d services=kv%2cn1ql%2Cindex
echo "Setting username and password..."
curl -s -XPOST http://127.0.0.1:8091/settings/web -d port=8091 -d username=${APP_ADMIN_USERNAME} -d password=${APP_ADMIN_PASSWORD}
echo "Setting index service settings..."
curl -s -XPOST http://127.0.0.1:8091/settings/indexes -u ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} -d 'storageMode=memory_optimized'
if [ $COUCHBASE_MASTER_SERVER ]; then
# TODO: Add N retries here.
curl -o /dev/null -s --head --fail \
"http://${COUCHBASE_MASTER_SERVER}:8091/pools/default/buckets/${APP_DATA_BUCKET}" \
-u "${APP_DATA_BUCKET}:${APP_COUCHBASE_RBAC_PASSWORD}"
if [ $? -eq 0 ]; then
echo "Cluster exists – adding node to cluster…"
couchbase-cli server-add -c ${COUCHBASE_MASTER_SERVER}:8091 -u ${APP_ADMIN_USERNAME} -p ${APP_ADMIN_PASSWORD} \
--server-add ${IP}:8091 --server-add-username ${APP_ADMIN_USERNAME} --server-add-password ${APP_ADMIN_PASSWORD} \
--services data,index,query
fi
fi
if [ $COUCHBASE_INITIALIZE == 'true' ]; then
echo "Creating ${APP_USER_BUCKET} bucket..."
couchbase-cli bucket-create -c http://127.0.0.1:8091 -u ${APP_ADMIN_USERNAME} -p ${APP_ADMIN_PASSWORD} \
--bucket=${APP_USER_BUCKET} \
--bucket-type=couchbase \
--bucket-ramsize=128 \
--enable-index-replica=0
#curl -s -XPOST \
# http://127.0.0.1:8091/pools/default/buckets \
# -u ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} \
# -d name=${APP_USER_BUCKET} \
# -d bucketType=couchbase \
# -d ramQuotaMB=128 \
# -d authType=sasl \
# -d saslPassword=${APP_ADMIN_PASSWORD} \
# -d "{\"indexer.settings.num_replica\": 0}"
echo "Creating ${APP_DATA_BUCKET} bucket..."
couchbase-cli bucket-create -c http://127.0.0.1:8091 -u ${APP_ADMIN_USERNAME} -p ${APP_ADMIN_PASSWORD} \
--bucket=${APP_DATA_BUCKET} \
--bucket-type=couchbase \
--bucket-ramsize=512 \
--enable-index-replica=0
#curl -s -XPOST \
# http://127.0.0.1:8091/pools/default/buckets \
# -u ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} \
# -d name=${APP_DATA_BUCKET} \
# -d bucketType=couchbase \
# -d ramQuotaMB=512 \
# -d authType=sasl \
# -d saslPassword=${APP_ADMIN_PASSWORD} \
# -d "{\"indexer.settings.num_replica\": 0}"
echo "Creating ${APP_STATE_BUCKET} bucket..."
couchbase-cli bucket-create -c http://127.0.0.1:8091 -u ${APP_ADMIN_USERNAME} -p ${APP_ADMIN_PASSWORD} \
--bucket=${APP_STATE_BUCKET} \
--bucket-type=memcached \
--bucket-ramsize=64
#curl -s -XPOST \
# http://127.0.0.1:8091/pools/default/buckets \
# -u ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} \
# -d name=${APP_STATE_BUCKET} \
# -d bucketType=memcached \
# -d ramQuotaMB=64 \
# -d authType=sasl \
# -d saslPassword=${APP_ADMIN_PASSWORD} \
# -d "{\"indexer.settings.num_replica\": 0}"
echo "Creating ${APP_DERIVED_DATA_BUCKET} bucket..."
couchbase-cli bucket-create -c http://127.0.0.1:8091 -u ${APP_ADMIN_USERNAME} -p ${APP_ADMIN_PASSWORD} \
--bucket=${APP_DERIVED_DATA_BUCKET} \
--bucket-type=couchbase \
--bucket-ramsize=128 \
--enable-index-replica=0
#curl -s -XPOST \
# http://127.0.0.1:8091/pools/default/buckets \
# -u ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} \
# -d name=${APP_DERIVED_DATA_BUCKET} \
# -d bucketType=couchbase \
# -d ramQuotaMB=128 \
# -d authType=sasl \
# -d saslPassword=${APP_ADMIN_PASSWORD} \
# -d "{\"indexer.settings.num_replica\": 0}"
echo "Creating ${APP_SHARED_DATA_BUCKET} bucket..."
couchbase-cli bucket-create -c http://127.0.0.1:8091 -u ${APP_ADMIN_USERNAME} -p ${APP_ADMIN_PASSWORD} \
--bucket=${APP_SHARED_DATA_BUCKET} \
--bucket-type=couchbase \
--bucket-ramsize=128 \
--enable-index-replica=0
#curl -s -XPOST \
# http://127.0.0.1:8091/pools/default/buckets \
# -u ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} \
# -d name=${APP_SHARED_DATA_BUCKET} \
# -d bucketType=couchbase \
# -d ramQuotaMB=128 \
# -d authType=sasl \
# -d saslPassword=${APP_ADMIN_PASSWORD} \
# -d "{\"indexer.settings.num_replica\": 0}"
echo "Creating ${APP_PREFERENCES_BUCKET} bucket..."
couchbase-cli bucket-create -c http://127.0.0.1:8091 -u ${APP_ADMIN_USERNAME} -p ${APP_ADMIN_PASSWORD} \
--bucket=${APP_PREFERENCES_BUCKET} \
--bucket-type=couchbase \
--bucket-ramsize=256 \
--enable-index-replica=0
#curl -s -XPOST \
# http://127.0.0.1:8091/pools/default/buckets \
# -u ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} \
# -d name=${APP_PREFERENCES_BUCKET} \
# -d bucketType=couchbase \
# -d ramQuotaMB=256 \
# -d authType=sasl \
# -d saslPassword=${APP_ADMIN_PASSWORD} \
# -d "{\"indexer.settings.num_replica\": 0}"
echo "Creating ${APP_LIBRARY_BUCKET} bucket..."
couchbase-cli bucket-create -c http://127.0.0.1:8091 -u ${APP_ADMIN_USERNAME} -p ${APP_ADMIN_PASSWORD} \
--bucket=${APP_LIBRARY_BUCKET} \
--bucket-type=couchbase \
--bucket-ramsize=256 \
--enable-index-replica=0
#curl -s -XPOST \
# http://127.0.0.1:8091/pools/default/buckets \
# -u ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} \
# -d name=${APP_LIBRARY_BUCKET} \
# -d bucketType=couchbase \
# -d ramQuotaMB=256 \
# -d authType=sasl \
# -d saslPassword=${APP_ADMIN_PASSWORD} \
# -d "{\"indexer.settings.num_replica\": 0}"
echo "Creating RBAC user for ${APP_DATA_BUCKET} with ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} (for sync gateway)..."
couchbase-cli user-manage -c http://127.0.0.1:8091 \
--username ${APP_ADMIN_USERNAME} \
--password ${APP_ADMIN_PASSWORD} \
--set \
--rbac-username ${APP_DATA_BUCKET} \
--rbac-password ${APP_COUCHBASE_RBAC_PASSWORD} \
--roles="bucket_admin[${APP_DATA_BUCKET}],views_admin[${APP_DATA_BUCKET}],query_manage_index[${APP_DATA_BUCKET}],query_select[${APP_DATA_BUCKET}]" \
--auth-domain local
echo "Creating RBAC user for ${APP_DERIVED_DATA_BUCKET} with ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} (for sync gateway)..."
couchbase-cli user-manage -c http://127.0.0.1:8091 \
--username ${APP_ADMIN_USERNAME} \
--password ${APP_ADMIN_PASSWORD} \
--set \
--rbac-username ${APP_DERIVED_DATA_BUCKET} \
--rbac-password ${APP_COUCHBASE_RBAC_PASSWORD} \
--roles="bucket_admin[${APP_DERIVED_DATA_BUCKET}],views_admin[${APP_DERIVED_DATA_BUCKET}],query_manage_index[${APP_DERIVED_DATA_BUCKET}],query_select[${APP_DERIVED_DATA_BUCKET}]" \
--auth-domain local
echo "Creating RBAC user for ${APP_SHARED_DATA_BUCKET} with ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} (for sync gateway)..."
couchbase-cli user-manage -c http://127.0.0.1:8091 \
--username ${APP_ADMIN_USERNAME} \
--password ${APP_ADMIN_PASSWORD} \
--set \
--rbac-username ${APP_SHARED_DATA_BUCKET} \
--rbac-password ${APP_COUCHBASE_RBAC_PASSWORD} \
--roles="bucket_admin[${APP_SHARED_DATA_BUCKET}],views_admin[${APP_SHARED_DATA_BUCKET}],query_manage_index[${APP_SHARED_DATA_BUCKET}],query_select[${APP_SHARED_DATA_BUCKET}]" \
--auth-domain local
echo "Creating RBAC user for ${APP_PREFERENCES_BUCKET} with ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} (for sync gateway)..."
couchbase-cli user-manage -c http://127.0.0.1:8091 \
--username ${APP_ADMIN_USERNAME} \
--password ${APP_ADMIN_PASSWORD} \
--set \
--rbac-username ${APP_PREFERENCES_BUCKET} \
--rbac-password ${APP_COUCHBASE_RBAC_PASSWORD} \
--roles="bucket_admin[${APP_PREFERENCES_BUCKET}],views_admin[${APP_PREFERENCES_BUCKET}],query_manage_index[${APP_PREFERENCES_BUCKET}],query_select[${APP_PREFERENCES_BUCKET}]" \
--auth-domain local
echo "Creating RBAC user for ${APP_LIBRARY_BUCKET} with ${APP_ADMIN_USERNAME}:${APP_ADMIN_PASSWORD} (for sync gateway)..."
couchbase-cli user-manage -c http://127.0.0.1:8091 \
--username ${APP_ADMIN_USERNAME} \
--password ${APP_ADMIN_PASSWORD} \
--set \
--rbac-username ${APP_LIBRARY_BUCKET} \
--rbac-password ${APP_COUCHBASE_RBAC_PASSWORD} \
--roles="bucket_admin[${APP_LIBRARY_BUCKET}],views_admin[${APP_LIBRARY_BUCKET}],query_manage_index[${APP_LIBRARY_BUCKET}],query_select[${APP_LIBRARY_BUCKET}]" \
--auth-domain local
fi
fg 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment