So I using ATOM to create a script to use with AWS, and after I run it I got a lot of resources to delete, any chance I can run just part of the script, using all variables, instead of running all script again? So I don’t have to delete all resources each time part of my script not working.
#!/bin/bash
aws configure set default.region us-east-1
#Create VPC
VPC=$(aws ec2 create-vpc --cidr-block 192.168.0.0/16 | jq -r '.Vpc.VpcId')
#Public Subnets
PUBSUB1=$(aws ec2 create-subnet \
--vpc-id $VPC \
--cidr-block 192.168.21.0/24 | jq -r '.Subnet.SubnetId')
PUBSUB2=$(aws ec2 create-subnet \
--vpc-id $VPC \
--cidr-block 192.168.22.0/24 | jq -r '.Subnet.SubnetId')
PUBSUB3=$(aws ec2 create-subnet \
--vpc-id $VPC \
--cidr-block 192.168.23.0/24 | jq -r '.Subnet.SubnetId')
#Enable auto-assign public IPv4 address
aws ec2 modify-subnet-attribute --subnet-id $PUBSUB1 \
--map-public-ip-on-launch &> /dev/null
aws ec2 modify-subnet-attribute --subnet-id $PUBSUB2 \
--map-public-ip-on-launch &> /dev/null
aws ec2 modify-subnet-attribute --subnet-id $PUBSUB3 \
--map-public-ip-on-launch &> /dev/null
#Internet Gateway
GATEWAY=$(aws ec2 create-internet-gateway | \
jq -r '.InternetGateway.InternetGatewayId')
#attach InternetGateway to VPC
aws ec2 attach-internet-gateway --internet-gateway-id $GATEWAY \
--vpc-id $VPC &> /dev/null
#Create a public route table
PUBROUTETABLE1=$(aws ec2 create-route-table --vpc-id $VPC \
| jq -r '.RouteTable.RouteTableId')
#assosiate subnets routetable public
aws ec2 associate-route-table --route-table-id $PUBROUTETABLE1 \
--subnet-id $PUBSUB1 &> /dev/null
aws ec2 associate-route-table --route-table-id $PUBROUTETABLE1 \
--subnet-id $PUBSUB2 &> /dev/null
aws ec2 associate-route-table --route-table-id $PUBROUTETABLE1 \
--subnet-id $PUBSUB3 &> /dev/null
#Create route to internet on public gateway.
aws ec2 create-route --route-table-id $PUBROUTETABLE1 \
--destination-cidr-block 0.0.0.0/0 --gateway-id $GATEWAY &> /dev/null
#Private Subnets
PRSUB1=$(aws ec2 create-subnet \
--vpc-id $VPC \
--cidr-block 192.168.31.0/24 | jq -r '.Subnet.SubnetId')
PRSUB2=$(aws ec2 create-subnet \
--vpc-id $VPC \
--cidr-block 192.168.32.0/24 | jq -r '.Subnet.SubnetId')
PRSUB3=$(aws ec2 create-subnet \
--vpc-id $VPC \
--cidr-block 192.168.33.0/24 | jq -r '.Subnet.SubnetId')
#CREATE ELASTIC IP
MYELASTICIP=$(aws ec2 allocate-address \
--domain vpc \
--network-border-group us-east-1 | jq -r '.AllocationId')
#Create NATGEATWAY
NATGATEWAY=$(aws ec2 create-nat-gateway --subnet-id $PUBSUB1 \
--allocation-id $MYELASTICIP | jq -r '.NatGateway.NatGatewayId')
#Create a private route table
PRROUTETABLE2=$(aws ec2 create-route-table \
--vpc-id $VPC | jq -r '.RouteTable.RouteTableId')
#assosiate subnets routetable private
aws ec2 associate-route-table --route-table-id $PRROUTETABLE2 \
--subnet-id $PRSUB1 &> /dev/null
aws ec2 associate-route-table --route-table-id $PRROUTETABLE2 \
--subnet-id $PRSUB2 &> /dev/null
aws ec2 associate-route-table --route-table-id $PRROUTETABLE2 \
--subnet-id $PRSUB3 &> /dev/null
#Create route to internet on private gateway.
aws ec2 create-route --route-table-id $PRROUTETABLE2 \
--destination-cidr-block 0.0.0.0/0 --gateway-id $NATGATEWAY &> /dev/null
#Creating SecurityGroups
SSHONLYGROUP=$(aws ec2 create-security-group --vpc-id $VPC \
--group-name Only_SSH_22 --description "Only_SSH_80" | jq -r '.GroupId')
#Iddentify ports
aws ec2 authorize-security-group-ingress --group-id $SSHONLYGROUP \
--protocol tcp --port 22 --cidr 0.0.0.0/0 &> /dev/null
aws ec2 authorize-security-group-ingress --group-id $SSHONLYGROUP \
--protocol icmp --port all --cidr 0.0.0.0/0 &> /dev/null
HTTPSSHONLYGROUP=$(aws ec2 create-security-group --vpc-id $VPC \
--group-name HTTP_SSH_80 --description "Only_SSH_80_http" | jq -r '.GroupId')
#Iddentify ports
aws ec2 authorize-security-group-ingress --group-id $HTTPSSHONLYGROUP \
--protocol tcp --port 22 --cidr 0.0.0.0/0 &> /dev/null
aws ec2 authorize-security-group-ingress --group-id $HTTPSSHONLYGROUP \
--protocol tcp --port 80 --cidr 0.0.0.0/0 &> /dev/null
#Installing ec2 BASTION HOST
MYBASTION=$(aws ec2 run-instances --image-id ami-0947d2ba12ee1ff75 \
--subnet-id $PUBSUB1 --security-group-ids $SSHONLYGROUP \
--instance-type t2.micro --key-name MyKey1 | jq -r '.Instances[].InstanceId')
#Installing webserver
WEBSERVER=$(aws ec2 run-instances --image-id ami-0947d2ba12ee1ff75 \
--subnet-id $PUBSUB2 --security-group-ids $HTTPSSHONLYGROUP \
--instance-type t2.micro --key-name MyKey1 \
--user-data file://USERDATA.sh | jq -r '.Instances[].InstanceId')
#Installing MySQL on the private subnet
MYSQL=$(aws ec2 run-instances --image-id ami-0947d2ba12ee1ff75 \
--subnet-id $PRSUB1 --security-group-ids $SSHONLYGROUP \
--instance-type t2.micro --key-name MyKey1 \
--user-data file://userdataMySQL.sh | jq -r '.Instances[].InstanceId')
#Creating VPC on difrient AZ
aws configure set default.region us-east-2
VPCOHIO=$(aws ec2 create-vpc --cidr-block 10.0.0.0/16 | jq -r '.Vpc.VpcId')
#Public Subnets
PUBSUB1=$(aws ec2 create-subnet \
--vpc-id $VPCOHIO \
--cidr-block 10.0.21.0/24 | jq -r '.Subnet.SubnetId')
PUBSUB2=$(aws ec2 create-subnet \
--vpc-id $VPCOHIO \
--cidr-block 10.0.22.0/24 | jq -r '.Subnet.SubnetId')
PUBSUB3=$(aws ec2 create-subnet \
--vpc-id $VPCOHIO \
--cidr-block 10.0.23.0/24 | jq -r '.Subnet.SubnetId')
#Enable auto-assign public IPv4 address
aws ec2 modify-subnet-attribute --subnet-id $PUBSUB1 \
--map-public-ip-on-launch &> /dev/null
aws ec2 modify-subnet-attribute --subnet-id $PUBSUB2 \
--map-public-ip-on-launch &> /dev/null
aws ec2 modify-subnet-attribute --subnet-id $PUBSUB3 \
--map-public-ip-on-launch &> /dev/null
#Internet Gateway
GATEWAY=$(aws ec2 create-internet-gateway | \
jq -r '.InternetGateway.InternetGatewayId')
#Attach InternetGateway to VPC
aws ec2 attach-internet-gateway --internet-gateway-id $GATEWAY \
--vpc-id $VPCOHIO &> /dev/null
#Create a public route table
PUBROUTETABLE3=$(aws ec2 create-route-table --vpc-id $VPCOHIO | \
jq -r '.RouteTable.RouteTableId')
#Assosiate subnets routetable public
aws ec2 associate-route-table --route-table-id $PUBROUTETABLE3 \
--subnet-id $PUBSUB1 &> /dev/null
aws ec2 associate-route-table --route-table-id $PUBROUTETABLE3 \
--subnet-id $PUBSUB2 &> /dev/null
aws ec2 associate-route-table --route-table-id $PUBROUTETABLE3 \
--subnet-id $PUBSUB3 &> /dev/null
#Create route to internet on public gateway.
aws ec2 create-route --route-table-id $PUBROUTETABLE3 \
--destination-cidr-block 0.0.0.0/0 --gateway-id $GATEWAY &> /dev/null
#Private Subnets
PRSUB1=$(aws ec2 create-subnet \
--vpc-id $VPCOHIO \
--cidr-block 10.0.31.0/24 | jq -r '.Subnet.SubnetId')
PRSUB2=$(aws ec2 create-subnet \
--vpc-id $VPCOHIO \
--cidr-block 10.0.32.0/24 | jq -r '.Subnet.SubnetId')
PRSUB3=$(aws ec2 create-subnet \
--vpc-id $VPCOHIO \
--cidr-block 10.0.33.0/24 | jq -r '.Subnet.SubnetId')
#CREATE ELASTIC IP
MYELASTICIP=$(aws ec2 allocate-address \
--domain vpc \
--network-border-group us-east-2 | jq -r '.AllocationId')
#Create NATGEATWAY
NATGATEWAY=$(aws ec2 create-nat-gateway --subnet-id $PUBSUB1 \
--allocation-id $MYELASTICIP | jq -r '.NatGateway.NatGatewayId')
#Create a private route table
PRROUTETABLE4=$(aws ec2 create-route-table --vpc-id $VPCOHIO | \
jq -r '.RouteTable.RouteTableId')
#assosiate subnets routetable private
aws ec2 associate-route-table --route-table-id $PRROUTETABLE4 \
--subnet-id $PRSUB1 &> /dev/null
aws ec2 associate-route-table --route-table-id $PRROUTETABLE4 \
--subnet-id $PRSUB2 &> /dev/null
aws ec2 associate-route-table --route-table-id $PRROUTETABLE4 \
--subnet-id $PRSUB3 &> /dev/null
#Create route to internet on private gateway.
aws ec2 create-route --route-table-id $PRROUTETABLE4 --destination-cidr-block \
0.0.0.0/0 --gateway-id $NATGATEWAY &> /dev/null
#Creating SecurityGroups
SSHONLYGROUP=$(aws ec2 create-security-group --vpc-id $VPCOHIO \
--group-name Only_SSH_22 --description "Only_SSH_80" | jq -r '.GroupId')
#Iddentify ports
aws ec2 authorize-security-group-ingress --group-id $SSHONLYGROUP \
--protocol tcp --port 22 --cidr 0.0.0.0/0 &> /dev/null
aws ec2 authorize-security-group-ingress --group-id $SSHONLYGROUP \
--protocol icmp --port all --cidr 0.0.0.0/0 &> /dev/null
#Installing ec2 BASTION HOST
MYBASTION=$(aws ec2 run-instances --image-id ami-03657b56516ab7912 \
--subnet-id $PUBSUB1 --security-group-ids $SSHONLYGROUP \
--instance-type t2.micro --key-name ohiokaypair | \
jq -r '.Instances[].InstanceId')
I start getting some error in this part of the script
#Create VPC peering
VPCPEERINGID=$(aws ec2 create-vpc-peering-connection --vpc-id $VPCOHIO \
--peer-vpc-id $VPC --peer-region us-east-1 | \
jq -r '.VpcPeeringConnection.VpcPeeringConnectionId')
#Accept VPC peering in virginia
aws configure set default.region us-east-1
aws ec2 accept-vpc-peering-connection \
--vpc-peering-connection-id $VPCPEERINGID &> /dev/null
#Create RouteTable to vpc
aws ec2 create-route --route-table-id $PUBROUTETABLE1 \
--destination-cidr-block 192.168.0.0/16 --gateway-id $VPCPEERINGID &> /dev/null
#Back to ohio
aws configure set default.region us-east-2
aws ec2 create-route --route-table-id $PUBROUTETABLE3 \
--destination-cidr-block 10.0.0.0/16 --gateway-id $VPCPEERINGID &> /dev/null