#!/bin/bash
VPC_ID=$(aws ec2 describe-vpcs --filter Name=tag:Name,Values=wsc-ingress-vpc --query "Vpcs[].VpcId" --output text)
public_a=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=wsc-ingress-pub-sn-a" --query "Subnets[].SubnetId" --output text)
public_c=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=wsc-ingress-pub-sn-c" --query "Subnets[].SubnetId" --output text)
sg_id=$(aws ec2 describe-security-groups --filters "Name=group-name,Values=wsc-ingress-alb-SG" --query "SecurityGroups[].GroupId" --output text)

TARGET_GROUP_ARN=$(aws elbv2 create-target-group --name wsc-ingress-tg --protocol HTTP --port 80 --vpc-id $VPC_ID --target-type ip --ip-address-type ipv4 --health-check-protocol HTTP --health-check-port 80 --health-check-path /healthcheck --query "TargetGroups[].TargetGroupArn" --output text)

LB_ID=$(aws elbv2 describe-load-balancers --names wsc-prod-lb --query "LoadBalancers[].LoadBalancerArn" --output text | cut -d'/' -f2-)
IP_ADDRESSES=($(aws ec2 describe-network-interfaces --filters Name=description,Values="ELB $LB_ID" --query 'NetworkInterfaces[*].PrivateIpAddresses[*].PrivateIpAddress' --output text))

for IP in "${IP_ADDRESSES[@]}";
do
    aws elbv2 register-targets --target-group-arn $TARGET_GROUP_ARN --targets Id=$IP,AvailabilityZone=all
done

ALB_ARN=$(aws elbv2 create-load-balancer --name wsc-ingress-lb --subnets $public_a $public_c --security-groups $sg_id --scheme internet-facing --tags Key=Name,Value=wsc-ingress-lb --type application --ip-address-type ipv4 --query "LoadBalancers[].LoadBalancerArn" --output text)
aws elbv2 create-listener --load-balancer-arn $ALB_ARN --protocol HTTP --port 80 --default-actions Type=forward,TargetGroupArn=$TARGET_GROUP_ARN > /dev/null