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.
|
|
5 years ago | |
|---|---|---|
| docs | 5 years ago | |
| .gitignore | 5 years ago | |
| .pre-commit-config.yaml | 5 years ago | |
| .terraform.lock.hcl | 5 years ago | |
| README.md | 5 years ago | |
| alb.tf | 5 years ago | |
| asg.tf | 5 years ago | |
| main.tf | 5 years ago | |
| outputs.tf | 5 years ago | |
| variables.tf | 5 years ago | |
README.md
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).
2. Create the AWS Autoscaling group
3. Create policies to make the AWS Autoscaling group scale in/out
- Visit the
Cloudwatchservice 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

