From aa1bc2b40f36f7c7e4462c6baf6bbcf803055bbb Mon Sep 17 00:00:00 2001 From: Roman Nozdrin Date: Fri, 12 Jun 2020 13:22:20 +0000 Subject: [PATCH] Installer now pre-setups S3 settings to bootstrap S3-backed MCS. --- .../columnstore-post-install.in | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/oam/install_scripts/columnstore-post-install.in b/oam/install_scripts/columnstore-post-install.in index 8fe097b7a..ec9f406be 100755 --- a/oam/install_scripts/columnstore-post-install.in +++ b/oam/install_scripts/columnstore-post-install.in @@ -12,6 +12,18 @@ running_systemd() { fi } +find_env_var() { + env_var_name=$1 + pid=$$ + while [ -z "$ENV_VAR" -a $pid != 1 ]; do + ppid=$(ps -oppid -p$pid|tail -1|awk '{print $1}') + env=$(strings /proc/$ppid/environ) + ENV_VAR=$(echo "$env"|awk -F= "\$1 == \"$env_var_name\" { print \$2; }") + pid=$ppid + done + echo $ENV_VAR +} + checkForError() { # check for password error grep "ERROR 1045" ${tmpDir}/mysql_install.log > ${tmpDir}/error.check @@ -222,6 +234,49 @@ if [ $? -ne 0 ]; then echo "ERROR: Invalid password in .my.cnf, or Columnstore plugin install missing" fi +if [ $? -ne 0 ]; then + echo "ERROR: Invalid password in .my.cnf, or Columnstore plugin install missing" +fi + +if [ -z "$MCS_USE_S3_STORAGE" ]; then + MCS_USE_S3_STORAGE="$(find_env_var "MCS_USE_S3_STORAGE")" + MCS_S3_BUCKET="$(find_env_var "MCS_S3_BUCKET")" + MCS_S3_ENDPOINT="$(find_env_var "MCS_S3_ENDPOINT")" + MCS_S3_ACCESS_KEY_ID="$(find_env_var "MCS_S3_ACCESS_KEY_ID")" + MCS_S3_SECRET_ACCESS_KEY="$(find_env_var "MCS_S3_SECRET_ACCESS_KEY")" + MCS_S3_REGION="$(find_env_var "MCS_S3_REGION")" +fi + +if [ ! -z "$MCS_USE_S3_STORAGE" ] && [ $MCS_USE_S3_STORAGE -eq 1 ]; then + if [ -z "$MCS_S3_BUCKET" ]; then + echo "Environmental variable \$MCS_USE_S3_STORAGE is set but there is no \$MCS_S3_BUCKET." + fi + if [ -z "$MCS_S3_ENDPOINT" ]; then + echo "Environmental variable \$MCS_USE_S3_STORAGE is set but there is no \$MCS_S3_ENDPOINT." + fi + if [ -z "$MCS_S3_ACCESS_KEY_ID" ]; then + echo "Environmental variable \$MCS_USE_S3_STORAGE is set but there is no \$MCS_S3_ACCESS_KEY_ID." + fi + if [ -z "$MCS_S3_SECRET_ACCESS_KEY" ]; then + echo "Environmental variable \$MCS_USE_S3_STORAGE is set but there is no \$MCS_S3_SECRET_ACCESS_KEY." + fi + if [ -z "$MCS_S3_BUCKET" ] || [ -z "$MCS_S3_ENDPOINT" ] || [ -z "$MCS_S3_ACCESS_KEY_ID" ] || [ -z "$MCS_S3_SECRET_ACCESS_KEY" ]; then + echo "Using local storage." + else + mcsSetConfig -d Installation DBRootStorageType "storagemanager" + mcsSetConfig -d StorageManager Enabled "Y" + mcsSetConfig -d SystemConfig DataFilePlugin "libcloudio.so" + sed -i "s|service =.*|service = S3|" /etc/columnstore/storagemanager.cnf + if [ ! -z "$MCS_S3_REGION" ]; then + sed -i "s|region =.*|region = $MCS_S3_REGION|" /etc/columnstore/storagemanager.cnf + fi + sed -i "s|bucket =.*|bucket = $MCS_S3_BUCKET|" /etc/columnstore/storagemanager.cnf + sed -i "s|# endpoint =.*|endpoint = $MCS_S3_ENDPOINT|" /etc/columnstore/storagemanager.cnf + sed -i "s|# aws_access_key_id =.*|aws_access_key_id = $MCS_S3_ACCESS_KEY_ID|" /etc/columnstore/storagemanager.cnf + sed -i "s|# aws_secret_access_key =.*|aws_secret_access_key = $MCS_S3_SECRET_ACCESS_KEY|" /etc/columnstore/storagemanager.cnf + fi +fi + systemctl cat mariadb-columnstore.service > /dev/null 2>&1 if [ $? -eq 0 ] && [ $(running_systemd) -eq 0 ]; then systemctl start mariadb-columnstore