This commit is contained in:
dzikafoczka 2024-12-20 21:21:14 +01:00
parent aca5547293
commit 5c20a1775f
2 changed files with 29 additions and 25 deletions

View File

@ -63,7 +63,8 @@ def delete_resources(ec2_client, elbv2_client, resources):
delete_key_pair(ec2_client, resources["key_name"]) delete_key_pair(ec2_client, resources["key_name"])
delete_internet_gateway(ec2_client, resources["igw_id"], resources["vpc_id"]) delete_internet_gateway(ec2_client, resources["igw_id"], resources["vpc_id"])
delete_route_table(ec2_client, resources["route_table_id"]) delete_route_table(ec2_client, resources["route_table_id"])
delete_subnet(ec2_client, resources["subnet_id"]) delete_subnet(ec2_client, resources["subnet_ids"][0])
delete_subnet(ec2_client, resources["subnet_ids"][1])
delete_vpc(ec2_client, resources["vpc_id"]) delete_vpc(ec2_client, resources["vpc_id"])
def main(): def main():

51
lb2.py
View File

@ -1,6 +1,7 @@
import boto3 import boto3
import base64 import base64
from USER_DATA import user_data from USER_DATA import user_data
import json
# Configuration variables # Configuration variables
PREFIX = "s464863" PREFIX = "s464863"
@ -25,7 +26,6 @@ def create_vpc(ec2_client):
] ]
) )
vpc_id = response['Vpc']['VpcId'] vpc_id = response['Vpc']['VpcId']
aws_resources['vpc_id'] = vpc_id
print(f"Created VPC with ID: {vpc_id}") print(f"Created VPC with ID: {vpc_id}")
# Enable DNS support and hostnames # Enable DNS support and hostnames
@ -49,7 +49,6 @@ def create_subnet(ec2_client, vpc_id):
] ]
) )
subnet_id = response['Subnet']['SubnetId'] subnet_id = response['Subnet']['SubnetId']
aws_resources['subnet_id'] = subnet_id
print(f"Created Subnet with ID: {subnet_id}") print(f"Created Subnet with ID: {subnet_id}")
# Public IP addresses for instances in the subnet # Public IP addresses for instances in the subnet
@ -70,7 +69,6 @@ def create_internet_gateway(ec2_client, vpc_id):
] ]
) )
igw_id = response['InternetGateway']['InternetGatewayId'] igw_id = response['InternetGateway']['InternetGatewayId']
aws_resources['igw_id'] = igw_id
print(f"Created Internet Gateway with ID: {igw_id}") print(f"Created Internet Gateway with ID: {igw_id}")
# Attach Internet Gateway to VPC # Attach Internet Gateway to VPC
@ -92,7 +90,6 @@ def create_route_table(ec2_client, vpc_id, subnet_id, igw_id):
] ]
) )
route_table_id = response['RouteTable']['RouteTableId'] route_table_id = response['RouteTable']['RouteTableId']
aws_resources['route_table_id'] = route_table_id
print(f"Created Route Table with ID: {route_table_id}") print(f"Created Route Table with ID: {route_table_id}")
# Create route to Internet Gateway # Create route to Internet Gateway
@ -120,7 +117,6 @@ def create_key_pair(ec2_client, key_name, save_to_file):
file.write(private_key) file.write(private_key)
print(f"Key pair '{key_name}' created and saved to '{save_to_file}'.") print(f"Key pair '{key_name}' created and saved to '{save_to_file}'.")
aws_resources['key_name'] = key_name
return response['KeyName'] return response['KeyName']
@ -135,7 +131,6 @@ def create_security_group(ec2_client, vpc_id):
) )
security_group_id = response['GroupId'] security_group_id = response['GroupId']
aws_resources['security_group_id'] = security_group_id
print(f"Security group '{group_name}' created with ID: {security_group_id}") print(f"Security group '{group_name}' created with ID: {security_group_id}")
# Set ingress rules # Set ingress rules
@ -175,7 +170,6 @@ def create_launch_template(ec2_client, key_name, security_group_id):
) )
print(f"Launch Template created with ID: {response['LaunchTemplate']['LaunchTemplateId']}") print(f"Launch Template created with ID: {response['LaunchTemplate']['LaunchTemplateId']}")
aws_resources['launch_template_id'] = response['LaunchTemplate']['LaunchTemplateId']
return response['LaunchTemplate']['LaunchTemplateId'] return response['LaunchTemplate']['LaunchTemplateId']
@ -198,7 +192,6 @@ def create_target_group(elbv2_client, vpc_id):
) )
print(f"Target Group created with ARN: {response['TargetGroups'][0]['TargetGroupArn']}") print(f"Target Group created with ARN: {response['TargetGroups'][0]['TargetGroupArn']}")
aws_resources['target_group_arn'] = response['TargetGroups'][0]['TargetGroupArn']
return response['TargetGroups'][0]['TargetGroupArn'] return response['TargetGroups'][0]['TargetGroupArn']
@ -215,7 +208,6 @@ def create_load_balancer(elbv2_client, subnet_id, security_group_id):
load_balancer_arn = response['LoadBalancers'][0]['LoadBalancerArn'] load_balancer_arn = response['LoadBalancers'][0]['LoadBalancerArn']
print(f"Load Balancer created with ARN: {load_balancer_arn}") print(f"Load Balancer created with ARN: {load_balancer_arn}")
aws_resources['load_balancer_arn'] = load_balancer_arn
return load_balancer_arn return load_balancer_arn
@ -234,7 +226,6 @@ def create_load_balancer_listener(elbv2_client, load_balancer_arn, target_group_
) )
print(f"Listener created with ARN: {response['Listeners'][0]['ListenerArn']}") print(f"Listener created with ARN: {response['Listeners'][0]['ListenerArn']}")
aws_resources['listener_arn'] = response['Listeners'][0]['ListenerArn']
return response['Listeners'][0]['ListenerArn'] return response['Listeners'][0]['ListenerArn']
@ -251,7 +242,6 @@ def create_ec2_instances(ec2_client, launch_template_id, subnet_id):
instance_ids = [instance['InstanceId'] for instance in response['Instances']] instance_ids = [instance['InstanceId'] for instance in response['Instances']]
print(f"Created EC2 instances with IDs: {instance_ids}") print(f"Created EC2 instances with IDs: {instance_ids}")
aws_resources['instance_ids'] = instance_ids
return instance_ids return instance_ids
@ -269,19 +259,17 @@ def main():
region_name=REGION region_name=REGION
) )
# Auto Scaling client
autoscaling_client = boto3.client(
'autoscaling',
region_name=REGION
)
# Create VPC # Create VPC
print("Creating VPC...") print("Creating VPC...")
vpc_id = create_vpc(ec2_client) vpc_id = create_vpc(ec2_client)
# Create subnet # Create first subnet
print("Creating subnet...") print("Creating first subnet...")
subnet_id = create_subnet(ec2_client, vpc_id) subnet_id_1 = create_subnet(ec2_client, vpc_id, availability_zone='us-east-1a')
# Create second subnet
print("Creating second subnet...")
subnet_id_2 = create_subnet(ec2_client, vpc_id, availability_zone='us-east-1b')
# Create Internet Gateway # Create Internet Gateway
print("Creating Internet Gateway...") print("Creating Internet Gateway...")
@ -289,7 +277,7 @@ def main():
# Create Route Table # Create Route Table
print("Creating Route Table...") print("Creating Route Table...")
route_table_id = create_route_table(ec2_client, vpc_id, subnet_id, igw_id) route_table_id = create_route_table(ec2_client, vpc_id, subnet_id_1, igw_id)
# Create key pair # Create key pair
print("Creating key pair...") print("Creating key pair...")
@ -309,11 +297,11 @@ def main():
# Create Load Balancer # Create Load Balancer
print("Creating Load Balancer...") print("Creating Load Balancer...")
load_balancer_arn = create_load_balancer(elbv2_client, subnet_id, security_group_id) load_balancer_arn = create_load_balancer(elbv2_client, [subnet_id_1, subnet_id_2], security_group_id)
# Create EC2 instances # Create EC2 instances
print("Creating EC2 instances...") print("Creating EC2 instances...")
instance_ids = create_ec2_instances(ec2_client, launch_template_id, subnet_id) instance_ids = create_ec2_instances(ec2_client, launch_template_id, subnet_id_1)
# Create Load Balancer Listener # Create Load Balancer Listener
print("Creating Load Balancer Listener...") print("Creating Load Balancer Listener...")
@ -335,8 +323,23 @@ def main():
print(f"Load Balancer DNS name: {dns_name}") print(f"Load Balancer DNS name: {dns_name}")
# Save AWS resources to file # Save AWS resources to file
aws_resources = {
'vpc_id': vpc_id,
'subnet_ids': [subnet_id_1, subnet_id_2],
'igw_id': igw_id,
'route_table_id': route_table_id,
'key_name': key_name,
'security_group_id': security_group_id,
'launch_template_id': launch_template_id,
'target_group_arn': target_group_arn,
'load_balancer_arn': load_balancer_arn,
'listener_arn': listener_arn,
'instance_ids': instance_ids,
'dns_name': dns_name
}
with open(AWS_RESOURCES_FILE, 'w') as file: with open(AWS_RESOURCES_FILE, 'w') as file:
file.write(str(aws_resources)) json.dump(aws_resources, file, indent=4)
if __name__ == "__main__": if __name__ == "__main__":
main() main()