From 41743ce87a73aee2ec41ac7890e78cf4c37790fa Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Tue, 3 Nov 2015 11:50:50 -0500 Subject: [PATCH] AWS: Delete ASGs by following instances We can't tag ASGs, but we can see what instances are running in an ASG, and we can match those by our tags. So look for our running instances, and look for the ASGs that created them, and delete those. This can be defeated (most notably if users change the ASG size to 0), but it is safer that other deletion methods. --- cluster/aws/util.sh | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/cluster/aws/util.sh b/cluster/aws/util.sh index 2ff0d076d9..04e3fc607c 100755 --- a/cluster/aws/util.sh +++ b/cluster/aws/util.sh @@ -1198,21 +1198,26 @@ function kube-down { done fi - if [[ -n $(${AWS_ASG_CMD} --output text describe-auto-scaling-groups --auto-scaling-group-names ${ASG_NAME} --query AutoScalingGroups[].AutoScalingGroupName) ]]; then - echo "Deleting auto-scaling group: ${ASG_NAME}" - ${AWS_ASG_CMD} delete-auto-scaling-group --force-delete --auto-scaling-group-name ${ASG_NAME} - fi - - if [[ -n $(${AWS_ASG_CMD} --output text describe-launch-configurations --launch-configuration-names ${ASG_NAME} --query LaunchConfigurations[].LaunchConfigurationName) ]]; then - echo "Deleting auto-scaling launch configuration: ${ASG_NAME}" - ${AWS_ASG_CMD} delete-launch-configuration --launch-configuration-name ${ASG_NAME} - fi - echo "Deleting instances in VPC: ${vpc_id}" instance_ids=$($AWS_CMD --output text describe-instances \ --filters Name=vpc-id,Values=${vpc_id} \ Name=tag:KubernetesCluster,Values=${CLUSTER_ID} \ --query Reservations[].Instances[].InstanceId) + + asg_groups=$($AWS_CMD --output text describe-instances \ + --query 'Reservations[].Instances[].Tags[?Key==`aws:autoscaling:groupName`].Value[]' \ + --instance-ids ${instance_ids}) + for asg_group in ${asg_groups}; do + if [[ -n $(${AWS_ASG_CMD} --output text describe-auto-scaling-groups --auto-scaling-group-names ${asg_group} --query AutoScalingGroups[].AutoScalingGroupName) ]]; then + echo "Deleting auto-scaling group: ${asg_group}" + ${AWS_ASG_CMD} delete-auto-scaling-group --force-delete --auto-scaling-group-name ${asg_group} + fi + if [[ -n $(${AWS_ASG_CMD} --output text describe-launch-configurations --launch-configuration-names ${asg_group} --query LaunchConfigurations[].LaunchConfigurationName) ]]; then + echo "Deleting auto-scaling launch configuration: ${asg_group}" + ${AWS_ASG_CMD} delete-launch-configuration --launch-configuration-name ${asg_group} + fi + done + if [[ -n "${instance_ids}" ]]; then $AWS_CMD terminate-instances --instance-ids ${instance_ids} > $LOG echo "Waiting for instances to be deleted"