From 0607b01dda574b04ec10c9d56a744ba13807a933 Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Tue, 15 Oct 2024 13:02:30 +0000 Subject: [PATCH 01/12] Added minio migration script Signed-off-by: sougata-progress --- scripts/minio-migrate.sh | 90 ++++++++++++++++++++++++++++++++++++++++ scripts/provision.sh | 1 + 2 files changed, 91 insertions(+) create mode 100755 scripts/minio-migrate.sh diff --git a/scripts/minio-migrate.sh b/scripts/minio-migrate.sh new file mode 100755 index 0000000..faf1733 --- /dev/null +++ b/scripts/minio-migrate.sh @@ -0,0 +1,90 @@ +set -eou pipefail + +CHANNEL="LTS-2024" +install_minio() { + + sudo hab pkg install core/minio -c $CHANNEL + echo "MinIO installation completed." +} + +check_and_install_minio() { + if ! hab pkg path core/minio >/dev/null 2>&1; then + echo "MinIO is not installed. Installing MinIO..." + install_minio + else + echo "MinIO is already installed." + fi +} + +get_installed_minio_version() { + installed_version=$(hab pkg path core/minio | cut -d '/' -f6) + echo "$installed_version" +} + +get_latest_minio_version() { + latest_version=$(curl --silent "https://bldr.habitat.sh/v1/depot/channels/core/$CHANNEL/pkgs/minio/latest" | jq -r '.ident.version') + if [[ -z "$latest_version" ]]; then + echo "Failed to fetch the latest MinIO version." + exit 1 + fi + echo "$latest_version" +} + +compare_versions() { + local v1=$1 + local v2=$2 + echo "Comparing versions..." + echo "Installed version: $v1" + echo "Latest version: $v2" + + if [ "$v1" = "$v2" ]; then + return 1 + elif [[ "$v1" < "$v2" ]]; then + echo "Installed version is older." + return 0 + else + echo "Installed version is newer or equal." + return 1 + fi +} + +detect_migration() { + installed_version=$(get_installed_minio_version) + latest_version=$(get_latest_minio_version) + + compare_versions "$installed_version" "$latest_version" + compare_result=$? + + if [[ $compare_result -eq 0 ]]; then + echo "Older version of MinIO detected. Migration required." + return 0 + elif [[ $compare_result -eq 1 ]]; then + echo "MinIO is up to date. No migration required." + return 1 + else + echo "Unexpected result from version comparison." + exit 1 + fi +} + +check_and_install_minio + +installed_version=$(get_installed_minio_version) +echo "Installed MinIO version: $installed_version" + +detect_migration +detect_migration_result=$? + +case "$detect_migration_result" in + 0) + echo "Migrating MinIO" + install_minio + ;; + 1) + echo "No migration needed." + ;; + *) + echo "An unexpected error occurred during MinIO version check." + exit 1 + ;; +esac diff --git a/scripts/provision.sh b/scripts/provision.sh index 661a61c..e84c8e8 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -409,6 +409,7 @@ install_options() install_postgresql fi if [ "${MINIO_INSTALL:-0}" = 1 ]; then + ./minio-migrate.sh install_minio fi fi From 9de828dc85d4e4e684d213c90d81e60964a59153 Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Wed, 16 Oct 2024 14:09:46 +0000 Subject: [PATCH 02/12] Updated migration logic Signed-off-by: sougata-progress --- scripts/minio-migrate.sh | 90 ---------------------------------------- scripts/minio-update.sh | 4 +- scripts/provision.sh | 29 ++++++++++++- 3 files changed, 30 insertions(+), 93 deletions(-) delete mode 100755 scripts/minio-migrate.sh diff --git a/scripts/minio-migrate.sh b/scripts/minio-migrate.sh deleted file mode 100755 index faf1733..0000000 --- a/scripts/minio-migrate.sh +++ /dev/null @@ -1,90 +0,0 @@ -set -eou pipefail - -CHANNEL="LTS-2024" -install_minio() { - - sudo hab pkg install core/minio -c $CHANNEL - echo "MinIO installation completed." -} - -check_and_install_minio() { - if ! hab pkg path core/minio >/dev/null 2>&1; then - echo "MinIO is not installed. Installing MinIO..." - install_minio - else - echo "MinIO is already installed." - fi -} - -get_installed_minio_version() { - installed_version=$(hab pkg path core/minio | cut -d '/' -f6) - echo "$installed_version" -} - -get_latest_minio_version() { - latest_version=$(curl --silent "https://bldr.habitat.sh/v1/depot/channels/core/$CHANNEL/pkgs/minio/latest" | jq -r '.ident.version') - if [[ -z "$latest_version" ]]; then - echo "Failed to fetch the latest MinIO version." - exit 1 - fi - echo "$latest_version" -} - -compare_versions() { - local v1=$1 - local v2=$2 - echo "Comparing versions..." - echo "Installed version: $v1" - echo "Latest version: $v2" - - if [ "$v1" = "$v2" ]; then - return 1 - elif [[ "$v1" < "$v2" ]]; then - echo "Installed version is older." - return 0 - else - echo "Installed version is newer or equal." - return 1 - fi -} - -detect_migration() { - installed_version=$(get_installed_minio_version) - latest_version=$(get_latest_minio_version) - - compare_versions "$installed_version" "$latest_version" - compare_result=$? - - if [[ $compare_result -eq 0 ]]; then - echo "Older version of MinIO detected. Migration required." - return 0 - elif [[ $compare_result -eq 1 ]]; then - echo "MinIO is up to date. No migration required." - return 1 - else - echo "Unexpected result from version comparison." - exit 1 - fi -} - -check_and_install_minio - -installed_version=$(get_installed_minio_version) -echo "Installed MinIO version: $installed_version" - -detect_migration -detect_migration_result=$? - -case "$detect_migration_result" in - 0) - echo "Migrating MinIO" - install_minio - ;; - 1) - echo "No migration needed." - ;; - *) - echo "An unexpected error occurred during MinIO version check." - exit 1 - ;; -esac diff --git a/scripts/minio-update.sh b/scripts/minio-update.sh index 3eaa2bc..a3ead33 100755 --- a/scripts/minio-update.sh +++ b/scripts/minio-update.sh @@ -220,7 +220,7 @@ function preflight_checks () { echo "" } -function downloand_bucket_objects () { +function download_bucket_objects () { aws ${opts[*]} s3 sync $s3_url $waypoint } @@ -264,7 +264,7 @@ case "${1}" in usage ) usage ;; print_env ) print_env ;; preflight_checks ) preflight_checks ;; - download ) downloand_bucket_objects ;; + download ) download_bucket_objects ;; upgrade ) upgrade_minio ;; downgrade ) downgrade_minio ;; upload ) upload_bucket_objects ;; diff --git a/scripts/provision.sh b/scripts/provision.sh index e84c8e8..78371f7 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -5,6 +5,7 @@ umask 0022 # Defaults BLDR_ORIGIN=${BLDR_ORIGIN:="habitat"} +LATEST_MINIO_VERSION="2023-11-01T01-57-10Z" sudo () { [[ $EUID = 0 ]] || set -- command sudo -E "$@" @@ -200,7 +201,22 @@ start_datastore() { } start_minio() { + set +e + is_minio_migration_needed + migration_needed=$? + set -e + + if [ "$migration_needed" -eq 1 ]; then + echo MinIO migration required + bash ./minio-update.sh download + sudo sh -c "find /hab/svc/builder-minio/data/ -maxdepth 1 -mindepth 1 -type d | xargs rm -rf" + fi + sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel "${BLDR_MINIO_CHANNEL:=$BLDR_CHANNEL}" --force + + if [ "$migration_needed" -eq 1 ]; then + bash ./minio-update.sh upload + fi } start_memcached() { @@ -222,6 +238,18 @@ generate_bldr_keys() { hab file upload "builder-api.default" "$(date +%s)" "/hab/cache/keys/${KEY_NAME}.box.key" } +is_minio_migration_needed() { + installed_version=$(hab pkg path core/minio | cut -d '/' -f6) + + if [ "$installed_version" = "$LATEST_MINIO_VERSION" ]; then + return 0 + elif [[ "$installed_version" < "$LATEST_MINIO_VERSION" ]]; then + return 1 + else + return 0 + fi +} + upload_ssl_certificate() { if [ "${APP_SSL_ENABLED}" = "true" ]; then echo "SSL enabled - uploading certificate files" @@ -409,7 +437,6 @@ install_options() install_postgresql fi if [ "${MINIO_INSTALL:-0}" = 1 ]; then - ./minio-migrate.sh install_minio fi fi From 377b970e98e78b469a724ea590d1fedb884ed4f4 Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Fri, 18 Oct 2024 10:23:25 +0000 Subject: [PATCH 03/12] Added pre filght cehck and minio data backup logic Signed-off-by: sougata-progress --- scripts/provision.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 78371f7..1c39087 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -5,7 +5,7 @@ umask 0022 # Defaults BLDR_ORIGIN=${BLDR_ORIGIN:="habitat"} -LATEST_MINIO_VERSION="2023-11-01T01-57-10Z" +BREAKING_MINIO_VERSION="2023-11-01T01-57-10Z" sudo () { [[ $EUID = 0 ]] || set -- command sudo -E "$@" @@ -201,6 +201,7 @@ start_datastore() { } start_minio() { + bash ./minio-update.sh preflight_checks set +e is_minio_migration_needed migration_needed=$? @@ -208,6 +209,7 @@ start_minio() { if [ "$migration_needed" -eq 1 ]; then echo MinIO migration required + backup_minio_data bash ./minio-update.sh download sudo sh -c "find /hab/svc/builder-minio/data/ -maxdepth 1 -mindepth 1 -type d | xargs rm -rf" fi @@ -219,6 +221,15 @@ start_minio() { fi } +backup_minio_data() { + sudo mkdir -p /hab/svc/builder-minio-bkp/data/ + + sudo cp -r /hab/svc/builder-minio/data/* /hab/svc/builder-minio-bkp/data/ + + echo "Old MinIO data has been backed up to /hab/svc/builder-minio-bkp/data/" + +} + start_memcached() { sudo hab svc load "${BLDR_ORIGIN}/builder-memcached" --channel "${BLDR_CHANNEL}" --force } @@ -241,9 +252,7 @@ generate_bldr_keys() { is_minio_migration_needed() { installed_version=$(hab pkg path core/minio | cut -d '/' -f6) - if [ "$installed_version" = "$LATEST_MINIO_VERSION" ]; then - return 0 - elif [[ "$installed_version" < "$LATEST_MINIO_VERSION" ]]; then + if [[ "$installed_version" < "$BREAKING_MINIO_VERSION" ]]; then return 1 else return 0 From 15ff2732029c32627da2218c6cf00e24515c0e0b Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Fri, 18 Oct 2024 21:43:25 +0000 Subject: [PATCH 04/12] Updated builder-minio versin logic Signed-off-by: sougata-progress --- scripts/provision.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 1c39087..9ba8594 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -201,20 +201,28 @@ start_datastore() { } start_minio() { - bash ./minio-update.sh preflight_checks + set +e is_minio_migration_needed migration_needed=$? set -e if [ "$migration_needed" -eq 1 ]; then + sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel "stable" --force + bash ./minio-update.sh preflight_checks echo MinIO migration required backup_minio_data + echo starting minio + bash ./minio-update.sh download sudo sh -c "find /hab/svc/builder-minio/data/ -maxdepth 1 -mindepth 1 -type d | xargs rm -rf" + sudo hab svc unload "${BLDR_ORIGIN}/builder-minio" fi - sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel "${BLDR_MINIO_CHANNEL:=$BLDR_CHANNEL}" --force + response=$(curl -s "https://bldr.habitat.sh/v1/depot/channels/$BLDR_ORIGIN/$BLDR_CHANNEL/pkgs/builder-minio/latest") + channel_version=$(echo "$response" | jq -r '.ident.version') + channel_release=$(echo "$response" | jq -r '.ident.release') + sudo hab svc load "${BLDR_ORIGIN}/builder-minio/$channel_version/$channel_release" --channel "${BLDR_MINIO_CHANNEL:=$BLDR_CHANNEL}" --force if [ "$migration_needed" -eq 1 ]; then bash ./minio-update.sh upload @@ -252,7 +260,11 @@ generate_bldr_keys() { is_minio_migration_needed() { installed_version=$(hab pkg path core/minio | cut -d '/' -f6) - if [[ "$installed_version" < "$BREAKING_MINIO_VERSION" ]]; then + response=$(curl -s "https://bldr.habitat.sh/v1/depot/channels/$BLDR_ORIGIN/$BLDR_CHANNEL/pkgs/builder-minio/latest") + minio_version_lookup=$(echo "$response" | jq -r '.deps[] | select(.origin == "core" and .name == "minio") | .version') + + echo minio_version_lookup $minio_version_lookup +if [[ "${installed_version}" < "${BREAKING_MINIO_VERSION}" ]] && { [[ "${BREAKING_MINIO_VERSION}" < "${minio_version_lookup}" ]] || [ "${BREAKING_MINIO_VERSION}" = "${minio_version_lookup}" ]; }; then return 1 else return 0 From 6a79544fbd4967ef50d59f619a033568ac00aaf6 Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Tue, 22 Oct 2024 11:04:19 +0000 Subject: [PATCH 05/12] Misc changes Signed-off-by: sougata-progress --- scripts/provision.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 9ba8594..17f676d 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -208,21 +208,21 @@ start_minio() { set -e if [ "$migration_needed" -eq 1 ]; then - sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel "stable" --force bash ./minio-update.sh preflight_checks + sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel "stable" --force echo MinIO migration required backup_minio_data - echo starting minio + echo starting minio download bash ./minio-update.sh download - sudo sh -c "find /hab/svc/builder-minio/data/ -maxdepth 1 -mindepth 1 -type d | xargs rm -rf" sudo hab svc unload "${BLDR_ORIGIN}/builder-minio" + sudo sh -c "find /hab/svc/builder-minio/data/ -maxdepth 1 -mindepth 1 -type d | xargs rm -rf" fi response=$(curl -s "https://bldr.habitat.sh/v1/depot/channels/$BLDR_ORIGIN/$BLDR_CHANNEL/pkgs/builder-minio/latest") channel_version=$(echo "$response" | jq -r '.ident.version') channel_release=$(echo "$response" | jq -r '.ident.release') - sudo hab svc load "${BLDR_ORIGIN}/builder-minio/$channel_version/$channel_release" --channel "${BLDR_MINIO_CHANNEL:=$BLDR_CHANNEL}" --force + sudo hab svc load "${BLDR_ORIGIN}/builder-minio/$channel_version/$channel_release" --channel $BLDR_CHANNEL --force if [ "$migration_needed" -eq 1 ]; then bash ./minio-update.sh upload @@ -230,11 +230,13 @@ start_minio() { } backup_minio_data() { - sudo mkdir -p /hab/svc/builder-minio-bkp/data/ + echo "Starting MinIO data backup" + + sudo mkdir -p /hab/svc/builder-minio/data-bkp/ - sudo cp -r /hab/svc/builder-minio/data/* /hab/svc/builder-minio-bkp/data/ + sudo cp -r /hab/svc/builder-minio/data/* /hab/svc/builder-minio/data-bkp/ - echo "Old MinIO data has been backed up to /hab/svc/builder-minio-bkp/data/" + echo "Old MinIO data has been backed up to /hab/svc/builder-minio/data-bkp/" } From 4685cc0a1a16822149038ca72b5347e65d2964ed Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Wed, 23 Oct 2024 13:12:46 +0000 Subject: [PATCH 06/12] removed nuilder minio version and release from hab svc load Signed-off-by: sougata-progress --- scripts/provision.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 17f676d..cf465dd 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -219,10 +219,8 @@ start_minio() { sudo sh -c "find /hab/svc/builder-minio/data/ -maxdepth 1 -mindepth 1 -type d | xargs rm -rf" fi - response=$(curl -s "https://bldr.habitat.sh/v1/depot/channels/$BLDR_ORIGIN/$BLDR_CHANNEL/pkgs/builder-minio/latest") - channel_version=$(echo "$response" | jq -r '.ident.version') - channel_release=$(echo "$response" | jq -r '.ident.release') - sudo hab svc load "${BLDR_ORIGIN}/builder-minio/$channel_version/$channel_release" --channel $BLDR_CHANNEL --force + sudo rm -rf /hab/pkgs/habitat/builder-minio + sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel $BLDR_CHANNEL --force if [ "$migration_needed" -eq 1 ]; then bash ./minio-update.sh upload @@ -266,7 +264,7 @@ is_minio_migration_needed() { minio_version_lookup=$(echo "$response" | jq -r '.deps[] | select(.origin == "core" and .name == "minio") | .version') echo minio_version_lookup $minio_version_lookup -if [[ "${installed_version}" < "${BREAKING_MINIO_VERSION}" ]] && { [[ "${BREAKING_MINIO_VERSION}" < "${minio_version_lookup}" ]] || [ "${BREAKING_MINIO_VERSION}" = "${minio_version_lookup}" ]; }; then +if [[ "${installed_version}" < "${BREAKING_MINIO_VERSION}" && ! "${BREAKING_MINIO_VERSION}" > "${minio_version_lookup}" ]]; then return 1 else return 0 From 7c3b7e79c8d26254204ff5a0b58d87d2d96ef700 Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Tue, 5 Nov 2024 23:57:47 +0000 Subject: [PATCH 07/12] Added cleanup logic Signed-off-by: sougata-progress --- scripts/provision.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/scripts/provision.sh b/scripts/provision.sh index cf465dd..deca866 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -224,6 +224,20 @@ start_minio() { if [ "$migration_needed" -eq 1 ]; then bash ./minio-update.sh upload + cleanup_migration + fi +} + +cleanup_migration() { + local leftover_file="minio-update-bldr-bucket-objects.txt" + local leftover_dir="minio-update-bldr-bucket-objects" + + if [ -f "$leftover_file" ]; then + sudo rm "$leftover_file" + fi + + if [ -d "$leftover_dir" ]; then + sudo rm -r "$leftover_dir" fi } From 66553e8490663ba7838f8cf765038bd1d0713a6b Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Thu, 7 Nov 2024 00:36:05 +0000 Subject: [PATCH 08/12] Updated migration logic Signed-off-by: sougata-progress --- scripts/provision.sh | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index deca866..0fbdfd3 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -201,25 +201,25 @@ start_datastore() { } start_minio() { - set +e is_minio_migration_needed migration_needed=$? set -e if [ "$migration_needed" -eq 1 ]; then - bash ./minio-update.sh preflight_checks - sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel "stable" --force echo MinIO migration required - backup_minio_data + bash ./minio-update.sh preflight_checks + if [ -d "/hab/svc/builder-minio/data/" ]; then + backup_minio_data + fi + echo starting minio download bash ./minio-update.sh download - sudo hab svc unload "${BLDR_ORIGIN}/builder-minio" sudo sh -c "find /hab/svc/builder-minio/data/ -maxdepth 1 -mindepth 1 -type d | xargs rm -rf" fi - sudo rm -rf /hab/pkgs/habitat/builder-minio + # sudo rm -rf /hab/pkgs/habitat/builder-minio sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel $BLDR_CHANNEL --force if [ "$migration_needed" -eq 1 ]; then @@ -244,11 +244,18 @@ cleanup_migration() { backup_minio_data() { echo "Starting MinIO data backup" - sudo mkdir -p /hab/svc/builder-minio/data-bkp/ + if [ -d "/hab/svc/builder-minio/data-bkp/" ]; then + sudo rm -rf /hab/svc/builder-minio/data-bkp/ + fi - sudo cp -r /hab/svc/builder-minio/data/* /hab/svc/builder-minio/data-bkp/ + sudo mkdir -p /hab/svc/builder-minio/data-bkp/ - echo "Old MinIO data has been backed up to /hab/svc/builder-minio/data-bkp/" + if [ "$(ls -A /hab/svc/builder-minio/data/)" ]; then + sudo cp -rf /hab/svc/builder-minio/data/* /hab/svc/builder-minio/data-bkp/ + echo "Old MinIO data has been backed up to /hab/svc/builder-minio/data-bkp/" + else + echo "No files to copy from /hab/svc/builder-minio/data/" + fi } From cc9d587535c2931bf66400482b86b01251d2351b Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Thu, 7 Nov 2024 00:41:40 +0000 Subject: [PATCH 09/12] Added rollback logic Signed-off-by: sougata-progress --- scripts/minio-update.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/minio-update.sh b/scripts/minio-update.sh index a3ead33..1b4808e 100755 --- a/scripts/minio-update.sh +++ b/scripts/minio-update.sh @@ -212,6 +212,11 @@ function upload_bucket_objects () { aws ${opts[*]} s3 sync $waypoint $s3_url } +function minio_migration_rollback () { + sudo cp -a /hab/svc/builder-minio/data-bkp/. /hab/svc/builder-minio/data/ + sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel "stable" --force +} + function preflight_checks () { _prerequisites_check _minio_check @@ -268,6 +273,7 @@ case "${1}" in upgrade ) upgrade_minio ;; downgrade ) downgrade_minio ;; upload ) upload_bucket_objects ;; + minio_rollback ) minio_migration_rollback ;; * ) usage ;; esac From a7c21ad49a6faa3d774d04f2c67a7d1da7f972ef Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Fri, 8 Nov 2024 14:41:10 +0000 Subject: [PATCH 10/12] Udated backup logic and fixed minio download issue Signed-off-by: sougata-progress --- scripts/minio-update.sh | 14 +++++++++++--- scripts/provision.sh | 36 +++++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/scripts/minio-update.sh b/scripts/minio-update.sh index 1b4808e..7e2ca5e 100755 --- a/scripts/minio-update.sh +++ b/scripts/minio-update.sh @@ -123,14 +123,14 @@ function _minio_check { echo "MinIO appears to be up and running" else echo "MinIO doesn't seem to be accessible at $MINIO_ENDPOINT" - exit + exit 4 fi local output=$(aws ${opts[*]} s3 ls) if [[ $output =~ $MINIO_BUCKET ]]; then echo "MinIO credentials valid" else echo "MinIO credentials invalid" - exit + exit 4 fi } @@ -213,7 +213,15 @@ function upload_bucket_objects () { } function minio_migration_rollback () { - sudo cp -a /hab/svc/builder-minio/data-bkp/. /hab/svc/builder-minio/data/ + latest_backup=$(ls -d /hab/svc/builder-minio/data-bkp-* | sort -r | head -n 1) + + if [ -n "$latest_backup" ]; then + echo "Copying data from latest backup: $latest_backup" + sudo cp -a "$latest_backup/." /hab/svc/builder-minio/data/ + else + echo "No backup folder found. Exiting." + exit 1 + fi sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel "stable" --force } diff --git a/scripts/provision.sh b/scripts/provision.sh index 0fbdfd3..5a30505 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -205,27 +205,36 @@ start_minio() { is_minio_migration_needed migration_needed=$? set -e - + if [ "$migration_needed" -eq 1 ]; then echo MinIO migration required - bash ./minio-update.sh preflight_checks + if [ -d "/hab/svc/builder-minio/data/" ]; then backup_minio_data fi + sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel $BLDR_CHANNEL --force + sleep 10 + bash ./minio-update.sh preflight_checks + if [ $? != 0 ]; then + echo Minio not running. + exit 1 + fi + + sleep 10 echo starting minio download bash ./minio-update.sh download - sudo sh -c "find /hab/svc/builder-minio/data/ -maxdepth 1 -mindepth 1 -type d | xargs rm -rf" - fi - - # sudo rm -rf /hab/pkgs/habitat/builder-minio + sudo hab svc unload "${BLDR_ORIGIN}/builder-minio" + sleep 10 sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel $BLDR_CHANNEL --force - - if [ "$migration_needed" -eq 1 ]; then + sleep 10 bash ./minio-update.sh upload cleanup_migration + else + sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel $BLDR_CHANNEL --force fi + } cleanup_migration() { @@ -243,16 +252,13 @@ cleanup_migration() { backup_minio_data() { echo "Starting MinIO data backup" - - if [ -d "/hab/svc/builder-minio/data-bkp/" ]; then - sudo rm -rf /hab/svc/builder-minio/data-bkp/ - fi + current_timestamp=$(date +%s) - sudo mkdir -p /hab/svc/builder-minio/data-bkp/ + sudo mkdir -p /hab/svc/builder-minio/data-bkp-$current_timestamp/ if [ "$(ls -A /hab/svc/builder-minio/data/)" ]; then - sudo cp -rf /hab/svc/builder-minio/data/* /hab/svc/builder-minio/data-bkp/ - echo "Old MinIO data has been backed up to /hab/svc/builder-minio/data-bkp/" + sudo cp -rf /hab/svc/builder-minio/data/* /hab/svc/builder-minio/data-bkp-$current_timestamp/ + echo "Old MinIO data has been backed up to /hab/svc/builder-minio/data-bkp-$current_timestamp/" else echo "No files to copy from /hab/svc/builder-minio/data/" fi From 50cf350857383164c62a11d0a7aee67a25f6e3fc Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Sat, 9 Nov 2024 00:38:37 +0000 Subject: [PATCH 11/12] Misc fixes Signed-off-by: sougata-progress --- scripts/provision.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 5a30505..06e3a07 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -213,7 +213,7 @@ start_minio() { backup_minio_data fi - sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel $BLDR_CHANNEL --force + sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel "stable" --force sleep 10 bash ./minio-update.sh preflight_checks if [ $? != 0 ]; then @@ -227,6 +227,8 @@ start_minio() { bash ./minio-update.sh download sudo hab svc unload "${BLDR_ORIGIN}/builder-minio" sleep 10 + sudo rm -rf /hab/svc/builder-minio/data/ + sudo rm -rf /hab/pkgs/habitat/builder-minio/ sudo hab svc load "${BLDR_ORIGIN}/builder-minio" --channel $BLDR_CHANNEL --force sleep 10 bash ./minio-update.sh upload From d9d262fed73af39046d01c141d34164fc3c6a1dd Mon Sep 17 00:00:00 2001 From: sougata-progress Date: Thu, 14 Nov 2024 22:41:23 +0000 Subject: [PATCH 12/12] Updated installed version lookup logic to fetch from existing minio data Signed-off-by: sougata-progress --- scripts/provision.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 06e3a07..6fbfc5e 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -287,13 +287,13 @@ generate_bldr_keys() { } is_minio_migration_needed() { - installed_version=$(hab pkg path core/minio | cut -d '/' -f6) + format_value=$(jq -r '.format' /hab/svc/builder-minio/data/.minio.sys/format.json) response=$(curl -s "https://bldr.habitat.sh/v1/depot/channels/$BLDR_ORIGIN/$BLDR_CHANNEL/pkgs/builder-minio/latest") minio_version_lookup=$(echo "$response" | jq -r '.deps[] | select(.origin == "core" and .name == "minio") | .version') echo minio_version_lookup $minio_version_lookup -if [[ "${installed_version}" < "${BREAKING_MINIO_VERSION}" && ! "${BREAKING_MINIO_VERSION}" > "${minio_version_lookup}" ]]; then +if [[ "${format_value}" == 'fs' && ! "${BREAKING_MINIO_VERSION}" > "${minio_version_lookup}" ]]; then return 1 else return 0