Following aws autoscaling course from https://github.com/Lowess
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.9 KiB

Terraform AWS Autoscaling

📐 Naming Convention

Common variables referenced in naming standards

Variable RegExp Example
<availability_zone> [a-z]{2}-[a-z]{1,}-[1-2][a-f] us-east-1a, us-west-2c, eu-west-1a, ap-northeast-1c

📐 AWS - Resource Naming Standards

  • ALB
AWS Resource Resource Naming Comment Example
ALB <app_name>-alb-private Tag Tier = private web-api-alb-private
<app_name>-alb-public Tag Tier = public web-api-alb-public
ALB Target group <app_name>-<protocol> web-api-alb-http, web-api-alb-https
ALB Security Groups <app_name>-alb web-api-alb
  • ASG
AWS Resource Resource Naming Comment Example
ASG Security Groups <app_name> web-api
ASG Launch Config <app_name>-lc-<timestamp> web-api-lc-1537774225
ASG Launch Template <app_name>-lt-<timestamp> web-api-lt-1537774225

🔮 Terraform Discovery module

If you followed the naming conventions listed in terraform-aws-vpc you will find it useful to use this terraform-aws-discovery module. The idea of using a discovery module is to centralize datasource usage in a central place and keep the source code DRY.

Here is an example usage:

module "discovery" {
  source              = "github.com/Lowess/terraform-aws-discovery"
  aws_region          = var.aws_region
  vpc_name            = var.vpc_name
  ec2_ami_names       = ["<AMI-NAME>"]
  ec2_ami_owners      = "<TEACHER-ACCOUNT-ID>"
  ec2_security_groups = [...]
}

☝️ If you do not what to use this module you are free to redefine the datasources you need but keep in mind that you will be rebuilding the wheel 🎡


1. Create an AWS ALB

Let's create an ALB and the related resources needed (security groups, listeners and target groups).

ALB

2. Create the AWS Autoscaling group

ALB & ASG

3. Create policies to make the AWS Autoscaling group scale in/out

  • Visit the Cloudwatch service and discover what this service does

☝️ Think about what's the best metric to use in order to adjust the size of the Autoscaling group