Unleashing the Power of Terraform: Scaling Made Simple ๐Ÿš€ Day - 68

Vishal ShekokarVishal Shekokar
2 min read

Greetings fellow learners! In our previous session, we delved into the intricacies of sculpting AWS S3 buckets with Terraform. Today, let's elevate our understanding and explore the art of scaling our infrastructure using the magic wand that is Terraform.

The Dance of Scaling

Scaling, in simple terms, is the graceful act of adjusting resources to meet the ever-changing demands of our applications. As our digital creations flourish, the need arises to gracefully add more resources when the audience grows and remove the extras when the curtains draw to save costs.

Terraform, our trusty companion, steps into the limelight by offering a declarative approach to resource definition. It's like having a conversation with your infrastructure - you express what you need, and Terraform makes it happen, seamlessly.

Task 1: Crafting an Auto Scaling Group

Auto Scaling Groups, the choreographers of our cloud dance, automate the addition or removal of EC2 instances based on the ebb and flow of demand. Let's take a step into the dance studio:

In your main.tf file, sprinkle the magic code:

resource "aws_launch_configuration" "web_server_as" {
  image_id        = "ami-005f9685cb30f234b"
  instance_type   = "t2.micro"
  security_groups = [aws_security_group.web_server.name]

  user_data = <<-EOF
              #!/bin/bash
              echo "<html><body><h1>You're doing really Great</h1></body></html>" > index.html
              nohup python -m SimpleHTTPServer 80 &
              EOF
}

resource "aws_autoscaling_group" "web_server_asg" {
  name                 = "web-server-asg"
  launch_configuration = aws_launch_configuration.web_server_lc.name
  min_size             = 1
  max_size             = 3
  desired_capacity     = 2
  health_check_type    = "EC2"
  load_balancers       = [aws_elb.web_server_lb.name]
  vpc_zone_identifier  = [aws_subnet.public_subnet_1a.id, aws_subnet.public_subnet_1b.id]
}

Time for the magic spell - Run terraform apply:

Watch as Terraform orchestrates the creation of an Auto Scaling Group, seamlessly balancing the act of adding and removing instances based on your needs.

Task 2: Testing the Waters of Scaling

  1. Navigate to the AWS Management Console, and find the Auto Scaling Groups service.

  2. Handpick the Auto Scaling Group you've just conjured and hit the "Edit" button.

  3. Amp up the "Desired Capacity" to 3 and click "Save" to kickstart the show.

  4. Marvel as new instances gracefully take the stage after a few minutes

  5. Head to the EC2 Instances service - behold, the new performers have joined the ensemble!

  6. Feeling a bit minimalist? Dial down the "Desired Capacity" to 1.

  7. Sit back and watch as the extras gracefully exit stage left.

Bravo! You've Mastered the Art of Scaling! ๐ŸŽŠ๐ŸŽ‰

In the grand finale, you've successfully scaled your infrastructure with Terraform. Your cloud dance is now a well-choreographed spectacle, thanks to the magic of Terraform. Keep the learning spirit alive and may your cloud adventures be ever-scaling and full of joy.

Happy Learning! ๐Ÿš€๐ŸŒŸ

0
Subscribe to my newsletter

Read articles from Vishal Shekokar directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Vishal Shekokar
Vishal Shekokar

๐Ÿ‘‹ Hello, I'm Vishal, an aspiring Information Technology enthusiast currently embarking on a journey towards a Bachelor's degree in Engineering. My passion lies in exploring the dynamic realms of cloud computing and DevOps technologies, where I constantly strive to bridge the gap between innovation and practical implementation. ๐Ÿ’ก As a student of Information Technology, I'm on a mission to absorb knowledge, solve real-world problems, and contribute to the tech community. My academic pursuits fuel my curiosity, and my hands-on experience with cloud and DevOps tools empowers me to navigate the evolving landscape of modern technology. ๐Ÿš€ Join me as I share insights, discoveries, and challenges encountered on this exciting educational and professional adventure. Let's connect, collaborate, and grow together in the ever-expanding world of IT. ๐Ÿ”— Connect with me on social media and let's build a network that fosters learning, sharing, and innovation. Happy coding! ๐ŸŒŸ