Last active
October 22, 2023 05:13
-
-
Save allen-munsch/33d2c89e00538fc10925add74bee5736 to your computer and use it in GitHub Desktop.
generate a list of resources to destroy in google cloud project
This file contains 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 -eux | |
# Thanks to: https://github.com/paulczar/gcp-cleaner/blob/master/delete-all.sh | |
export __region=$1 | |
FAIL=0 | |
waitfor() { | |
for job in $(jobs -p) | |
do | |
wait "$job" || let "FAIL+=1" | |
done | |
} | |
file='destroy-all-results.sh' | |
echo "#--> Destroy GKE Clusters" | |
gcloud container clusters list --format 'value(name,zone)' | xargs -n2 bash -c 'echo gcloud container clusters delete --quiet $0 --zone $1' | |
waitfor | |
echo "#--> Destroy VMs" | |
for i in a b c; do | |
export __zone=$__region-$i | |
echo "#====> ${__zone}" | |
gcloud compute instances list --format 'value(name)' --filter="zone:${__zone}" \ | |
| xargs -I{} echo "gcloud compute instances delete --zone $__zone --quiet {}" | |
done | |
waitfor | |
echo "#--> Destroy Disks" | |
for i in a b c; do | |
export __zone=$__region-$i | |
echo "#====> ${__zone}" | |
gcloud compute disks list --format "value(name)" --filter="zone:${__zone} and -users:*" \ | |
| xargs -I{} echo "gcloud compute disks delete --zone ${__zone} --quiet {}" | |
done | |
echo "#--> Destroy Images" | |
gcloud compute images list --no-standard-images --format 'value(name)' \ | |
| xargs -I{} echo "gcloud compute images delete --quiet {}" | |
echo "#--> Destroy target proxies" | |
gcloud compute target-http-proxies list --format 'value(name)' \ | |
| xargs -I{} echo 'gcloud compute target-http-proxies delete --quiet {}' | |
waitfor | |
gcloud compute target-https-proxies list --format 'value(name)' \ | |
| xargs -I{} echo 'gcloud compute target-https-proxies delete --quiet {}' | |
waitfor | |
echo "#--> Destroy url maps" | |
gcloud compute url-maps list --format 'value(name)' \ | |
| xargs -I{} echo 'gcloud compute url-maps delete --quiet {}' | |
waitfor | |
echo "#--> Destroy backend services" | |
gcloud compute backend-services list --global --format 'value(name)' \ | |
| xargs -I{} echo 'gcloud compute backend-services delete --global --quiet {}' | |
waitfor | |
echo "#--> Destroy instance groups" | |
for i in a b c; do | |
export __zone=$__region-$i | |
gcloud compute instance-groups unmanaged list --filter="zone:(${__zone})" --format 'value(name)' \ | |
| xargs -I{} echo "gcloud compute instance-groups unmanaged delete --quiet {} --zone ${__zone}" | |
done | |
waitfor | |
echo "#--> Destroy firewall rules" | |
gcloud compute firewall-rules list --format 'value(name)' \ | |
| xargs -I{} echo 'gcloud compute firewall-rules delete --quiet {}' | |
echo "#--> Destroy forwarding rules" | |
gcloud compute forwarding-rules list --format 'value(name)' \ | |
| xargs -I{} echo "gcloud compute forwarding-rules delete --quiet --region=${__region} {}" | |
gcloud compute forwarding-rules list --global --format 'value(name)' \ | |
| xargs -I{} echo "gcloud compute forwarding-rules delete --quiet --global {}" | |
echo "#--> Destroy addresses" | |
gcloud compute addresses list --global --format 'value(name)' | \ | |
xargs -I{} echo 'gcloud compute addresses delete --global --quiet {}' | |
gcloud compute addresses list --format 'value(name)' | \ | |
xargs -I{} echo 'gcloud compute addresses delete --quiet {}' | |
echo "#--> Destroy routes" | |
gcloud compute routes list --format 'value(name)' --filter 'name!=default' | \ | |
xargs -I{} echo 'gcloud compute routes delete --quiet {}' | |
waitfor | |
echo "#--> Destroy target pools" | |
gcloud compute target-pools list --format 'value(name)' \ | |
| xargs -I{} echo 'gcloud compute target-pools delete --quiet {}' | |
waitfor | |
echo "#--> Destroy subnets" | |
gcloud compute networks subnets list --format 'value(name)' --filter 'name!=default' \ | |
| xargs -I{} echo "gcloud compute networks subnets delete --quiet {} --region ${__region}" | |
echo "#--> Destroy networks" | |
gcloud compute networks list --format 'value(name)' --filter 'name!=default' \ | |
| xargs -I{} echo "gcloud compute networks delete --quiet {}" | |
waitfor | |
echo "#--> Destroy Managed Zones" | |
for zone in $(gcloud dns managed-zones list --format="value(name)");do | |
gcloud dns record-sets list --zone "$zone" --format='value(name,type)' | grep -vE 'NS|SOA' \ | |
| while read -r name type; do | |
echo "gcloud dns record-sets delete $name --type=$type --zone=$zone --quiet" | |
done | |
echo "gcloud dns managed-zones delete $zone --quiet" | |
done | |
echo "#--> Destroy Computer Router" | |
gcloud compute routers list --regions "${__region}" --format 'value(name)' \ | |
| xargs -I{} echo "gcloud compute routers delete --quiet {} --region ${__region}" | |
echo "#--> Destroy Service Accounts" | |
gcloud iam service-accounts list --format 'value(name)' \ | |
| xargs -I{} echo "gcloud iam service-accounts delete {} --quiet" | |
#echo "#--> Destroy GCS Buckets" | |
gsutil ls -b | xargs -I{} gsutil ls "{}" | xargs -I{} echo 'gsutil -m rm -r {}' | |
echo "#---------------------------------------" | |
echo "#Finished with $FAIL failures" | |
echo "#---------------------------------------" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment