From 290bc0504809940fdcf1cbfaba087d302c7846c6 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Tue, 23 Jun 2020 12:49:11 -0400 Subject: [PATCH] cleanup aws tools, add tool to delete packer ami images --- bin/aws/aws_delete_image.sh | 26 ++++++++++++++++++++++++++ bin/aws/aws_delete_images.sh | 23 +++++++++++++++++++++++ bin/aws/aws_delete_subnets.sh | 4 ++-- bin/aws/aws_delete_test_instances.sh | 2 +- bin/aws/aws_init_configs.sh | 2 +- bin/aws/aws_list_images.sh | 15 +++++++++++++++ 6 files changed, 68 insertions(+), 4 deletions(-) create mode 100755 bin/aws/aws_delete_image.sh create mode 100755 bin/aws/aws_delete_images.sh create mode 100755 bin/aws/aws_list_images.sh diff --git a/bin/aws/aws_delete_image.sh b/bin/aws/aws_delete_image.sh new file mode 100755 index 00000000..57c9593a --- /dev/null +++ b/bin/aws/aws_delete_image.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +function die { + echo 1>&2 "${1}" + exit 1 +} + +IMAGEID=${1:?no IMAGEID provided} +THISDIR=$(cd $(dirname ${0}) && pwd) + +for region in $(${THISDIR}/aws_list_regions.sh) ; do + ${THISDIR}/aws_set_region.sh ${region} || die "Error setting aws region ${region}" + if [[ ${1} == "-n" ]] ; then + IMAGE_NAME=${2:?no image name provided} + echo 1>&2 "Deleting image named: ${IMAGE_NAME} in region ${region}" + IMAGEID=$(aws ec2 describe-images --filters "Name=name,Values=${IMAGE_NAME}" | jq -r '.Images[].ImageId') + if [[ -z "${IMAGEID}" ]] ; then + echo 1>&2 "No images with name=${IMAGE_NAME} found in region ${region}" + continue + fi + fi + echo 1>&2 "Deleting image ${IMAGEID} in region ${region}" + for image in ${IMAGEID} ; do + aws ec2 deregister-image --image-id ${image} || echo 1>&2 "Error deleting image ${image} in aws region ${region}" + done +done diff --git a/bin/aws/aws_delete_images.sh b/bin/aws/aws_delete_images.sh new file mode 100755 index 00000000..2da67666 --- /dev/null +++ b/bin/aws/aws_delete_images.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +function die { + echo 1>&2 "${1}" + exit 1 +} + +IMAGE_FILTER=${1:-'packer_bubble_*'} +THISDIR=$(cd $(dirname ${0}) && pwd) + +for region in $(${THISDIR}/aws_list_regions.sh) ; do + ${THISDIR}/aws_set_region.sh ${region} || die "Error setting aws region ${region}" + echo 1>&2 "Deleting images matching: ${IMAGE_FILTER} in region ${region}" + IMAGE_IDS=$(aws ec2 describe-images --filters "Name=name,Values=${IMAGE_FILTER}" | jq -r '.Images[].ImageId') + if [[ -z "${IMAGE_IDS}" ]] ; then + echo 1>&2 "No images with name=${IMAGE_NAME} found in region ${region}" + continue + fi + for image in ${IMAGE_IDS} ; do + echo 1>&2 "Deleting image: ${image} in region ${region}" + aws ec2 deregister-image --image-id ${image} || echo 1>&2 "Error deleting image ${image} in aws region ${region}" + done +done diff --git a/bin/aws/aws_delete_subnets.sh b/bin/aws/aws_delete_subnets.sh index 13be2b5a..c60de6da 100755 --- a/bin/aws/aws_delete_subnets.sh +++ b/bin/aws/aws_delete_subnets.sh @@ -8,9 +8,9 @@ function die { } THISDIR=$(cd $(dirname ${0}) && pwd) -for region in $(${THISDIR}/list_regions.sh) ; do +for region in $(${THISDIR}/aws_list_regions.sh) ; do echo "Deleting subnets in region ${region}" - ${THISDIR}/set_aws_region.sh ${region} || die "Error setting aws region ${region}" + ${THISDIR}/aws_set_region.sh ${region} || die "Error setting aws region ${region}" for subnet in $(aws ec2 describe-subnets --filters "Name=default-for-az,Values=false" | grep SubnetId | cut -d\" -f4) ; do echo "Deleting subnet ${subnet} in region ${region}" aws ec2 delete-subnet --subnet-id ${subnet} || echo "WARNING: Error deleting subnet ${subnet} in region ${region}" diff --git a/bin/aws/aws_delete_test_instances.sh b/bin/aws/aws_delete_test_instances.sh index c14431b4..c4cd1a3a 100755 --- a/bin/aws/aws_delete_test_instances.sh +++ b/bin/aws/aws_delete_test_instances.sh @@ -8,7 +8,7 @@ SCRIPT="${0}" SCRIPT_DIR=$(cd $(dirname ${SCRIPT}) && pwd) -. ${SCRIPT_DIR}/list_test_instances.sh +. ${SCRIPT_DIR}/aws_list_test_instances.sh if [[ ${INSTANCES_COUNT} -gt 0 ]] ; then diff --git a/bin/aws/aws_init_configs.sh b/bin/aws/aws_init_configs.sh index 6a97da41..95a7d6b8 100755 --- a/bin/aws/aws_init_configs.sh +++ b/bin/aws/aws_init_configs.sh @@ -3,6 +3,6 @@ # Copyright (c) 2020 Bubble, Inc. All rights reserved. For personal (non-commercial) use, see license: https://getbubblenow.com/bubble-license/ # THISDIR=$(cd $(dirname ${0}) && pwd) -for region in $(${THISDIR}/list_regions.sh) ; do +for region in $(${THISDIR}/aws_list_regions.sh) ; do cat ${THISDIR}/config.template | sed -e "s/__REGION__/${region}" > ~/.aws/config.${region} && echo "created config for region ${region}" done diff --git a/bin/aws/aws_list_images.sh b/bin/aws/aws_list_images.sh new file mode 100755 index 00000000..348aca00 --- /dev/null +++ b/bin/aws/aws_list_images.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# +# Copyright (c) 2020 Bubble, Inc. All rights reserved. For personal (non-commercial) use, see license: https://getbubblenow.com/bubble-license/ +# +function die { + echo 1>&2 "${1}" + exit 1 +} + +THISDIR=$(cd $(dirname ${0}) && pwd) +for region in $(${THISDIR}/aws_list_regions.sh) ; do + echo 1>&2 "Listing images in region ${region}" + ${THISDIR}/aws_set_region.sh ${region} || die "Error setting aws region ${region}" + aws ec2 describe-images --filters "Name=name,Values=packer_bubble_*" +done