Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export AWS_DEFAULT_REGION=us-east-1
- VPC=$(aws ec2 describe-vpcs --query 'Vpcs[?IsDefault==`true`].VpcId' --output text)
- echo The default VPC is $VPC.
- SUBNET_IDX=$(($RANDOM % 6))
- echo Your subnet index is $SUBNET_IDX.
- SUBNET=$(aws ec2 describe-subnets \
- --filters "Name=vpc-id,Values=$VPC" \
- --query "Subnets[$SUBNET_IDX].SubnetId" \
- --output text)
- echo Your subnet is $SUBNET.
- AMI=$(aws ec2 describe-images \
- --owners 099720109477 \
- --filters 'Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-*-22.04-amd64-server-*' 'Name=state,Values=available' \
- --query 'sort_by(Images, &CreationDate)[-1].[ImageId]' \
- --output text)
- echo The AMI is going to be $AMI.
- SG=$(aws ec2 create-security-group \
- --group-name AppSG-$USER\
- --description "The security group of the application." \
- --vpc-id $VPC \
- --query 'GroupId' \
- --output text)
- echo The security group is $SG.
- aws ec2 authorize-security-group-ingress \
- --group-id $SG \
- --protocol tcp \
- --port 8080 \
- --cidr 0.0.0.0/0
- cat << EOF > pokemon.sh
- #!/bin/sh
- sudo apt update
- sudo apt install awscli openjdk-17-jre-headless -y
- wget https://github.com/ciberado/pokemon-java/releases/download/v2.0.0/pokemon-2.0.0.jar
- java -jar pokemon-2.0.0.jar
- EOF
- ls
- cat pokemon.sh
- aws ec2 run-instances \
- --subnet-id $SUBNET \
- --image-id $AMI \
- --security-group-ids $SG \
- --instance-type t3.nano \
- --block-device-mapping DeviceName=/dev/sda1,Ebs={VolumeSize=8} \
- --user-data file://pokemon.sh \
- --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$USER},{Key=App,Value=Pokemon}]"
- IP=$(aws ec2 describe-instances \
- --filters "Name=tag:Name,Values=$USER" \
- --query 'Reservations[*].Instances[*].PublicIpAddress' \
- --output text)
- echo Your application is at http://$IP:8080
- echo And your Pokémon is $(curl -s http://$IP:8080/ | jq .name -r).
- aws ec2 describe-instances \
- --filters "Name=instance-type,Values=t3.nano" \
- --query "Reservations[*].Instances[*].{Id: InstanceId, name: Tags[?Key=='Name'] | [0].Value, IP: PublicIpAddress, Time: LaunchTime}" \
- --output table
- ADDRESSES=$(aws ec2 describe-instances \
- --filters "Name=instance-type,Values=t3.nano" \
- --query "Reservations[*].Instances[*].PublicIpAddress" \
- --output text)
- echo Instances public IPs:
- echo $ADDRESSES
- for IP in $ADDRESSES
- do
- POKEMON=$(curl -s http://$IP:8080/ | jq .name -r)
- echo "$IP: $POKEMON ( http://$IP:8080 )"
- done
- Open any of the instances.
- aws ec2 run-instances \
- --subnet-id $SUBNET \
- --image-id $AMI \
- --security-group-ids $SG \
- --count 1 \
- --instance-type t3.nano \
- --block-device-mapping DeviceName=/dev/sda1,Ebs={VolumeSize=8} \
- --user-data file://pokemon.sh \
- --instance-market-options '{"MarketType":"spot"}'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement