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