Created
August 2, 2018 13:51
-
-
Save mz2/1167f908ea52449602d48ab8beea308b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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