Link Search Menu Expand Document

Run this Script to uninstall Elastio

Before proceeding with the uninstall process, please make sure that all protection policies are stopped and there are no Elastio jobs in progress. Unlink the account you are going to clean up from you elastio tenant. This can be done on the Sources page of your Elastio tenant.

Use this script to remove the Elastio CloudFormation stack, all Cloud Connectors and Vaults. Save the following script to a .sh file on your machine, make it executable and run.

Important! Elastio deployment should be intact, no Elastio resources should be removed manually before the script is run. Additionally, make sure there are no running jobs in the environment and all Elastio vault- and job- workers are scaled down.

This script will delete all resources including vaults, Cloud Connectors and the Cloud Formation stack. The AWS region parameter should be set in AWS CLI before the script is run.

Note: The latest AWS CLI v.2 should be installed on the machine for the script to work properly, as well as the Elastio CLI. The AWS CLI should be configured to have access to the account you are attempting to clean up.

#!/bin/bash
set -ex

str=$(aws --version)
major_v=$(echo $str | cut -d' ' -f1 | cut -d'/' -f2 | cut -d'.' -f1)

 if [ $major_v -eq 2 ]; then
     echo "AWS CLI2 installed"
     elastio -V
     if [ $? -eq 0 ]; then
         echo "Elastio CLI installed"
         start_region=$(aws configure get region)
         regions=("us-east-1" "us-east-2" "us-west-2" "eu-central-1" "ap-southeast-2" "eu-west-1" "eu-west-2" "ap-south-1" "ca-central-1")

         #get and delete all vaults
         for reg in "${regions[@]}"
         do
             aws configure set default.region $reg
             aws configure set region $reg
             if elastio vault list --output-format json --aws-region $reg;
             then
                 echo "$reg have red stack"
                 for v in $(elastio vault list --output-format json --aws-region $reg | grep -Po '"vault_name": *\K"[^"]*"' | tr -d '"')
                 do
                     echo "$v vault will be deleted from $reg aws-region"
                     # echo $v
                     vaults+=("$v")
                     elastio vault delete $v --aws-region $reg
                 done

                 elastio stack destroy --aws-region $reg

                 for value in "${vaults[@]}"
                 do
                     aws kms delete-alias --alias-name alias/elastio-vault-$value-key || true
                 done

                 aws ecs describe-capacity-providers --query "capacityProviders[*].name" | \
                 grep elastio-vault | \
                 sed 's/"//'g | \
                 sed 's/,//' | \
                 sed 's/ //'g | \
                 xargs -t -n1 aws ecs delete-capacity-provider --capacity-provider || true

                 aws kms delete-alias --alias-name alias/elastio-vault-default-key || true

                 aws kms delete-alias --alias-name alias/elastio-provisioner-auth-signing-key || true

                 filter="elastio-"

                 aws batch describe-job-definitions --status 'ACTIVE' | \
                     grep "jobDefinitionArn" | \
                     grep $filter | \
                     awk '{ print $2 }' | \
                     tr -d \", | \
                     xargs -t -n1 -I '{}' aws batch deregister-job-definition --job-definition '{}'
             else
                 echo "$reg doesn't have red stack"

                 aws ecs describe-capacity-providers --query "capacityProviders[*].name" | \
                 grep elastio-vault | \
                 sed 's/"//'g | \
                 sed 's/,//' | \
                 sed 's/ //'g | \
                 xargs -t -n1 aws ecs delete-capacity-provider --capacity-provider || true

                 aws kms delete-alias --alias-name alias/elastio-vault-default-key || true

                 aws kms delete-alias --alias-name alias/elastio-provisioner-auth-signing-key || true

                 filter="elastio-"

                 aws batch describe-job-definitions --status 'ACTIVE' | \
                     grep "jobDefinitionArn" | \
                     grep $filter | \
                     awk '{ print $2 }' | \
                     tr -d \", | \
                     xargs -t -n1 -I '{}' aws batch deregister-job-definition --job-definition '{}'
             fi
         done

         for reg in "${regions[@]}"
         do
             aws configure set default.region $reg
             aws configure set region $reg
             echo "CFN will be deleted for $reg aws-region"
             aws cloudformation delete-stack --stack-name elastio-account-level-stack
             s3s=$(aws s3 ls --human-readable)
             echo "$s3s" > temp.txt
             filename=temp.txt
             bucket_name=elastio-report

             while read line; do
             # reading each line
             formated_line=$(echo $line | cut -d' ' -f3)
                 if [[ "$formated_line" == *$bucket_name* ]]; then
                     aws s3 rb s3://$formated_line --force
                 fi
             done < $filename
             rm temp.txt
         done
         aws configure set default.region $start_region
         aws configure set region $start_region
	 aws cur --region us-east-1 delete-report-definition --report-name "elastio-report"
     else
         echo "Elastio CLI not installed"
     fi
 else
     echo "AWS CLI not installed. Install AWS CLI v.2 to proceed"
 fi