From 9e89d10b61e529e1ff2e2de4c6d54c92955492ae Mon Sep 17 00:00:00 2001 From: Kranthi <125793475+kranthi9558@users.noreply.github.com> Date: Tue, 11 Jun 2024 16:39:52 +0530 Subject: [PATCH] Added Solution for AWS - Launch EC2 Web Instance Using Terraform (#10260) Co-authored-by: Kranthi --- .../launch_ec2_web_instance/solution.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/topics/aws/exercises/launch_ec2_web_instance/solution.md b/topics/aws/exercises/launch_ec2_web_instance/solution.md index f40ecc3..77c0105 100644 --- a/topics/aws/exercises/launch_ec2_web_instance/solution.md +++ b/topics/aws/exercises/launch_ec2_web_instance/solution.md @@ -37,3 +37,58 @@ echo "

I made it! This is is awesome!

" > /var/www/html/index.html 9. In the security group section, add a rule to accept HTTP traffic (TCP) on port 80 from anywhere 10. Click on "Review" and then click on "Launch" after reviewing. 11. If you don't have a key pair, create one and download it. + +12. ### Solution using Terraform + +``` + +provider "aws" { + region = "us-east-1" // Or your desired region +} + +resource "aws_instance" "web_server" { + ami = "ami-12345678" // Replace with the correct AMI for Amazon Linux 2 + instance_type = "t2.micro" // Or any instance type with 1 vCPU and 1 GiB memory + + tags = { + Name = "web-1" + Type = "web" + } + + root_block_device { + volume_size = 8 // Or any desired size + delete_on_termination = true + } + + provisioner "remote-exec" { + inline = [ + "sudo yum update -y", + "sudo yum install -y httpd", + "sudo systemctl start httpd", + "sudo bash -c 'echo \"I made it! This is awesome!\" > /var/www/html/index.html'", + "sudo systemctl enable httpd" + ] + + connection { + type = "ssh" + user = "ec2-user" + private_key = file("~/.ssh/your_private_key.pem") // Replace with the path to your private key + host = self.public_ip + } + } + + security_group_ids = [aws_security_group.web_sg.id] +} + +resource "aws_security_group" "web_sg" { + name = "web_sg" + description = "Security group for web server" + + ingress { + from_port = 80 + to_port = 80 + protocol = "tcp" + cidr_blocks = ["0.0.0.0/0"] + } +} +``` \ No newline at end of file