Skip to content

Files

Latest commit

 

History

History
86 lines (75 loc) · 14.3 KB

File metadata and controls

86 lines (75 loc) · 14.3 KB

Requirements

Name Version
aws ~> 5.0

Providers

No providers.

Modules

Name Source Version
acm ./modules/acm n/a
alb ./modules/alb n/a
alb_security_grp ./modules/security-group n/a
asg ./modules/asg n/a
asg_security_grp ./modules/security-grp n/a
vpc terraform-aws-modules/vpc/aws 5.1.2

Resources

No resources.

Inputs

Name Description Type Default Required
acm_cert_arn TLS certificate ARN from the AWS Certicate Manager console if you created the TLS certificate manually. Depends on the use_route53_hostedzone_for_acm variable. Format: arn:aws:acm:REGION:EXAMPLE:certificate/EXAMPLE423b3-EXAMPLE-CERTIFICATE string null no
acm_unique_id Unique id to be appended on ACM resource names. string n/a yes
alb_deregistration_delay Amount time in seconds for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused number 300 no
alb_enable_deletion_protection Whether to protect the LoadBalancer from deletion. bool false no
alb_health_check_enabled Whether health checking is enabled bool true no
alb_health_check_healthy_threshold Number of consecutive health check successes required before considering a target healthy. The range is 2-10. number 2 no
alb_health_check_interval Approximate amount of time, in seconds, between health checks of an individual target. The range is 5-300. number 70 no
alb_health_check_matcher Response codes to use when checking for a healthy responses from a target string "200,201,301,302" no
alb_health_check_path Destination for the health check request string "/" no
alb_health_check_port The port the load balancer uses when performing health checks on targets string "80" no
alb_health_check_protocol Protocol the load balancer uses when performing health checks on targets. string "HTTP" no
alb_health_check_timeout Amount of time, in seconds, during which no response from a target means a failed health check. The range is 2–120 seconds. string "60" no
alb_health_check_unhealthy_threshold Number of consecutive health check failures required before considering a target unhealthy. string "5" no
alb_idle_timeout Idle timeout for the LoadBalancer [0 - 4000] seconds number 60 no
alb_internal Whether to create a private LoadBalancer. bool false no
alb_ip_address_type The type of IP addresses used by the target group, only supported when target type is set to ip. Possible values are ipv4 or ipv6 string "ipv4" no
alb_load_balancer_type Type of the Elastic Loadbalancer string "application" no
alb_port Port on which targets receive traffic, unless overridden when registering a specific target. number 80 no
alb_preserve_host_header Whether to preserve host header on the incoming requests. bool true no
alb_sec_grp_egress A list of egress rule as objects for the ALB security group
list(object({
cidr_blocks = list(string)
description = string
from_port = number
ipv6_cidr_blocks = list(string)
prefix_list_ids = list(string)
protocol = string
security_groups = list(string)
to_port = number
self = bool
}))
n/a yes
alb_sec_grp_ingress A list of ingress rule as objects for the ALB security group
list(object({
cidr_blocks = list(string)
description = string
from_port = number
ipv6_cidr_blocks = list(string)
prefix_list_ids = list(string)
protocol = string
security_groups = list(string)
to_port = number
self = bool
}))
n/a yes
alb_target_type Type of target that you must specify when registering targets with this target group. https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html string "instance" no
alb_unique_id The unique string to identify LoadBalancer module resources; appended on the resource names. string n/a yes
app_domain If using Route53 supply the domain on which the application will be accessed. It must be the same domain/subsdomain name used to generete the ACM certificate. string null no
asg_ami_id The AMI ID from the product configuration page on AWS Marketplace. You must first subscribe to the product and then click on configuration button to view the AMI details. string n/a yes
asg_delete_on_termination Whether to delete attached ELB volume on instance termination bool true no
asg_detailed_monitoring Whether to enable detailed monitoring of the instances in the ASG bool true no
asg_disk_size The disk size allocated for each instance number 40 no
asg_health_check_grace_period The disk size allocated for each instance number 300 no
asg_health_check_type The healthcheck type used by ASG. Can be ELB or EC2 string "ELB" no
asg_instance_type The instance type used by ASG on the launced instances string "t2.small" no
asg_root_device The root device for the instances. Default /dev/xvda for Amazon Linux instances used for this setup. string "/dev/xvda" no
asg_scaling_alarms_config A map of objects with values for the Autosacling group alarms configurations.
map(object({
enabled = bool
threshold = number
evaluation_periods = number
period = number
}))
{
"cpu_scale_in": {
"enabled": true,
"evaluation_periods": 3,
"period": 120,
"threshold": 10
},
"cpu_scale_out": {
"enabled": true,
"evaluation_periods": 2,
"period": 120,
"threshold": 75
},
"net_in_scale_in": {
"enabled": false,
"evaluation_periods": null,
"period": null,
"threshold": null
},
"net_in_scale_out": {
"enabled": false,
"evaluation_periods": null,
"period": null,
"threshold": null
},
"net_out_scale_in": {
"enabled": false,
"evaluation_periods": null,
"period": null,
"threshold": null
},
"net_out_scale_out": {
"enabled": false,
"evaluation_periods": null,
"period": null,
"threshold": null
}
}
no
asg_scaling_policy Definition for the autosacling group scaling policies map(map(number))
{
"scale_down": {
"adjustment": -1,
"cooldown": 300
},
"scale_up": {
"adjustment": 1,
"cooldown": 120
}
}
no
asg_sec_grp_egress A list of egress rule as objects for the ASG security group
list(object({
cidr_blocks = list(string)
description = string
from_port = number
ipv6_cidr_blocks = list(string)
prefix_list_ids = list(string)
protocol = string
security_groups = list(string)
to_port = number
self = bool
}))
n/a yes
asg_sec_grp_ingress A list of ingress rule as objects for the ASG security group
list(object({
cidr_blocks = list(string)
description = string
from_port = number
ipv6_cidr_blocks = list(string)
prefix_list_ids = list(string)
protocol = string
security_groups = list(string)
to_port = number
self = bool
}))
n/a yes
asg_size_configuration The configuration for the ASG size. The warmpool variable define the instances that will be prepared in adavance and their waiting states.
object({
max_size = number
min_size = number
warm_pool_pool_state = string # ["Hibernated" "Stopped" "Running" "Hibernated"]
warm_pool_prep_capacity = number
warm_pool_prep_min_size = number
warm_pool_reuse_on_scale = bool
})
{
"max_size": 2,
"min_size": 1,
"warm_pool_pool_state": "Hibernated",
"warm_pool_prep_capacity": 1,
"warm_pool_prep_min_size": 1,
"warm_pool_reuse_on_scale": true
}
no
asg_unique_id The unique string to identify ASG module resources; appended on the resource names. string n/a yes
aws_account_id Current AWS account ID string n/a yes
aws_elb_account_id Current AWS ELB Account ID obtain the ID for your region from https://docs.aws.amazon.com/elasticloadbalancing/latest/application/enable-access-logging.html string n/a yes
aws_region AWS Region where the resources will be provisioned string n/a yes
name Project name used to form part of most resource names. This will identify your created resources. string n/a yes
route53_hosted If using Route53, supply the Route53 zone details
object({
zone_id = string
is_private = bool
})
n/a yes
use_route53_hostedzone_for_acm Indicates whether you are using a route53 hosted zone created in the current account you are using bool false no
vpc_cidr Main VPC CIDR string "172.18.0.0/16" no
vpc_name Names assigned to the vpc string "vpc" no
vpc_private_subnets VPC Private subnet CIDRs list(string)
[
"172.18.48.0/20",
"172.18.64.0/20",
"172.18.80.0/20"
]
no
vpc_public_subnets VPC Public subnet CIDRs list(string)
[
"172.18.96.0/20",
"172.18.112.0/20",
"172.18.128.0/20"
]
no

Outputs

Name Description
application_domain The domain name mapped to lb_dns_value. Output if a Route53 hosted zone was used, if not it will contain null.
lb_dns_value The loadbalancer DNS name created by ElasticLoadbalancer. Since we are using https, this must be mapped to the corresponding domain/sudomain.