Skip to content

Zero Downtime and Highly Available deployment infrastructure using Terraform and EC2

License

Notifications You must be signed in to change notification settings

heeisenbeergg/terraform-ha-ec2

 
 

Repository files navigation

Terraform EC2 HA

Zero Downtime and Highly Available deployment infrastructure using Terraform and EC2.

Basic Usage

/* -----------------------------------------------------------
 *  Configure Gambit High Available Infrastructure
 * ----------------------------------------------------------- */
module "aws-ec2-ha" {
  source = "[email protected]:miere/terraform-ha-ec2.git"

  aws_region                  = "${var.aws_region}"
  aws_vpc_id                  = "${var.aws_vpc_id}"
  aws_instances_subnet_ids    = "${data.aws_subnet_ids.private.ids}"

  aws_lb_subnet_ids    = "${data.aws_subnet_ids.public.ids}"
  aws_lb_health_check_url  = "/health"
  aws_lb_health_check_type = "ELB"
  aws_lb_health_check_grace_period = "60"

  aws_hosted_domain = "${var.aws_hosted_domain}"
  dns_entry         = "${var.name}"
  environment       = "${var.environment}"
}

Inputs

Name Description Type Default Required
aws_asg_instances_desired Desired number of instances on the ASG. string "2" no
aws_asg_instances_max Maximum number of instances on the ASG. string "3" no
aws_asg_instances_min Minimum number of instances on the ASG. string "2" no
aws_deployment_config AWS CodeDeploy deployment config. Default: CodeDeployDefault.OneAtATime string "CodeDeployDefault.OneAtATime" no
aws_deployment_group AWS CodeDeploy deployment group. Default: default string "default" no
aws_hosted_domain AWS Route 53 hosted zone domain. e.g. my.domain.com string n/a yes
aws_instance_type AWS EC2 instance type that will be used to spin up the service. Default: t3.nano string "t3.nano" no
aws_instance_web_port Define which port should be mapped from the ALB to target instance. string "8080" no
aws_instance_web_protocol Define which protocol should be mapped from the ALB to target instance. string "HTTP" no
aws_instances_subnet_ids AWS Subnet IDs in which your instances will be placed on. list n/a yes
aws_lb_deregistration_delay The delay expected during the draining phase to leverage a graceful shutdown for deregistered machines string "60" no
aws_lb_health_check_grace_period Grace period before the instance being checked. string "30" no
aws_lb_health_check_type Define how AWS should check if instances are healthy or not. string "ELB" no
aws_lb_health_check_url Define which URL ALB should probe to ensure the instances are healthy. string "/health-check" no
aws_lb_subnet_ids AWS Subnet IDs in which your load balancer will be placed on. list n/a yes
aws_region AWS region in which the artifact will be deployed to. It will be used by S3 and Code Deploy. string n/a yes
aws_vpc_id AWS VPC ID in which your services will be deployed to. string n/a yes
custom_script The custom script path. This script, if defined, will be run every time an instance is spin up. string "-" no
dns_entry The Register A DNS entry that will be created for your service. It will be used as suffix for your 'aws_hosted_domain' string n/a yes
environment An environment deployment identifier. string "" no
name Optional name that will be used as suffix for every AWS resource created by this script. string "" no

Outputs

Name Description
aws_ami_name The AMI used by this deployment
aws_asg_arn The Auto Scaling Group arn created for this application
aws_iam_role_arn The IAM Role ARN created for this application
aws_iam_role_name The IAM Role Name created for this application
aws_route53_record The Route53 record that was created for this application

About

Zero Downtime and Highly Available deployment infrastructure using Terraform and EC2

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HCL 82.3%
  • Shell 17.7%