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 |
- 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 |
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 = [...]
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 ๐ก
Let's create an ALB
and the related resources needed (security groups, listeners and target groups).
โ๏ธ AWS Educate does not allow access to Autoscaling and Launch configuration services, In this example we will simulate autoscaling features by running multiple EC2 instances
๐ช It's now on you to figure out a logic to implement scale up / scale down actions on your
autoscaling group
โ๏ธ Here is a way to retrieve Netdata CPU average using the Netdata API:
curl -s "http://<instance-ip>:19999/api/v1/data?chart=system.cpu&after=-10&format=json&options=nonzero" \
| jq "[ .data[] | nth(2)] | add / length";
Based on standard module structure guidelines