{"id":19508848,"url":"https://github.com/rhythmictech/terraform-aws-asg-rollingupdate","last_synced_at":"2025-06-28T01:38:17.382Z","repository":{"id":47629811,"uuid":"208878608","full_name":"rhythmictech/terraform-aws-asg-rollingupdate","owner":"rhythmictech","description":"Terraform module to create Autoscaling Group in AWS with AutoScalingRollingUpdates","archived":false,"fork":false,"pushed_at":"2023-03-16T14:54:31.000Z","size":65,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-26T03:44:01.655Z","etag":null,"topics":["autoscaling-group","aws","terraform","terraform-module","terraform-modules"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/modules/rhythmictech/asg-rollingupdate/aws","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rhythmictech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-09-16T19:15:27.000Z","updated_at":"2023-07-17T06:03:17.000Z","dependencies_parsed_at":"2025-04-26T03:41:56.096Z","dependency_job_id":null,"html_url":"https://github.com/rhythmictech/terraform-aws-asg-rollingupdate","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/rhythmictech/terraform-aws-asg-rollingupdate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-asg-rollingupdate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-asg-rollingupdate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-asg-rollingupdate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-asg-rollingupdate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhythmictech","download_url":"https://codeload.github.com/rhythmictech/terraform-aws-asg-rollingupdate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-asg-rollingupdate/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262361665,"owners_count":23299085,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autoscaling-group","aws","terraform","terraform-module","terraform-modules"],"created_at":"2024-11-10T23:10:06.825Z","updated_at":"2025-06-28T01:38:17.324Z","avatar_url":"https://github.com/rhythmictech.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# terraform-aws-asg-rollingupdate\n[![tflint](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/workflows/tflint/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/actions?query=workflow%3Atflint+event%3Apush+branch%3Amaster)\n[![tfsec](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/workflows/tfsec/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/actions?query=workflow%3Atfsec+event%3Apush+branch%3Amaster)\n[![yamllint](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/workflows/yamllint/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/actions?query=workflow%3Ayamllint+event%3Apush+branch%3Amaster)\n[![misspell](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/workflows/misspell/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/actions?query=workflow%3Amisspell+event%3Apush+branch%3Amaster)\n[![pre-commit-check](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/workflows/pre-commit-check/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/terraform-aws-asg-rollingupdate/actions?query=workflow%3Apre-commit-check+event%3Apush+branch%3Amaster)\n\u003ca href=\"https://twitter.com/intent/follow?screen_name=RhythmicTech\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/RhythmicTech?style=social\u0026logo=twitter\" alt=\"follow on Twitter\"\u003e\u003c/a\u003e\n\n\nTerraform module to create Autoscaling Group in AWS with AutoScalingRollingUpdates\n\n\u003c!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 0.13.0 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | \u003e= 3.0 |\n| \u003ca name=\"requirement_null\"\u003e\u003c/a\u003e [null](#requirement\\_null) | \u003e= 3.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | \u003e= 3.0 |\n| \u003ca name=\"provider_null\"\u003e\u003c/a\u003e [null](#provider\\_null) | \u003e= 3.0 |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_cloudformation_stack.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudformation_stack) | resource |\n| [aws_lb.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb) | resource |\n| [aws_lb_listener.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener) | resource |\n| [aws_lb_target_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_target_group) | resource |\n| [null_resource.tags_for_asg](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |\n| [null_resource.tags_for_lt](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_aws_lb_internal\"\u003e\u003c/a\u003e [aws\\_lb\\_internal](#input\\_aws\\_lb\\_internal) | The Load Balancer which fronts the ASG is internal | `bool` | `true` | no |\n| \u003ca name=\"input_batch_max_size\"\u003e\u003c/a\u003e [batch\\_max\\_size](#input\\_batch\\_max\\_size) | Maximum batch size for ASG rolling updates | `string` | `1` | no |\n| \u003ca name=\"input_elb_drop_invalid_headers\"\u003e\u003c/a\u003e [elb\\_drop\\_invalid\\_headers](#input\\_elb\\_drop\\_invalid\\_headers) | Invalid headers being passed through to the target of the load balance may exploit vulnerabilities | `bool` | `true` | no |\n| \u003ca name=\"input_health_check_path\"\u003e\u003c/a\u003e [health\\_check\\_path](#input\\_health\\_check\\_path) | Path of HTTP Health Check | `string` | `\"EC2\"` | no |\n| \u003ca name=\"input_health_check_port\"\u003e\u003c/a\u003e [health\\_check\\_port](#input\\_health\\_check\\_port) | Path of HTTP Health Check | `number` | `80` | no |\n| \u003ca name=\"input_health_check_type\"\u003e\u003c/a\u003e [health\\_check\\_type](#input\\_health\\_check\\_type) | Check instance health with EC2 or ELB checks | `string` | `\"EC2\"` | no |\n| \u003ca name=\"input_image_id\"\u003e\u003c/a\u003e [image\\_id](#input\\_image\\_id) | AMI ID to use for this cluster | `string` | `\"\"` | no |\n| \u003ca name=\"input_instance_security_groups\"\u003e\u003c/a\u003e [instance\\_security\\_groups](#input\\_instance\\_security\\_groups) | Security groups to apply to instances in ASG | `list(string)` | `[]` | no |\n| \u003ca name=\"input_instance_type\"\u003e\u003c/a\u003e [instance\\_type](#input\\_instance\\_type) | Instance type to use in ASG | `string` | `\"\"` | no |\n| \u003ca name=\"input_keypair_name\"\u003e\u003c/a\u003e [keypair\\_name](#input\\_keypair\\_name) | Name of an externally created keypair to attach to the automatically created instances. This only applies if launch\\_template\\_name is defined AND scaling\\_object\\_type is set to 'launchtemplate' | `string` | `\"\"` | no |\n| \u003ca name=\"input_launch_template_name\"\u003e\u003c/a\u003e [launch\\_template\\_name](#input\\_launch\\_template\\_name) | Name of externally created launch template to use with this module. If not defined and scaling\\_object\\_type is set to 'launchtemplate' (the default value), this will cause a launch template to be created in the cloudformation template | `string` | `\"\"` | no |\n| \u003ca name=\"input_launch_template_overrides\"\u003e\u003c/a\u003e [launch\\_template\\_overrides](#input\\_launch\\_template\\_overrides) | A list of maps defining any overrides to the Mixed Instance Policy Template. Required for Mixed Instance Policies. The map can contain the following values: instanceType (AWS Instance Type), launchTemplateSpecification (a separate launch template to use, object consisting of either launchTemplateId or launchTemplateName and optionally version), weightedCapacity (a weighted capacity entry for how frequently to use this override) | `list(map(string))` | `[]` | no |\n| \u003ca name=\"input_launch_template_version\"\u003e\u003c/a\u003e [launch\\_template\\_version](#input\\_launch\\_template\\_version) | Version of externally created launch template to use with this module. If launch\\_template\\_name is defined this MUST be defined. | `string` | `\"\"` | no |\n| \u003ca name=\"input_lb_access_logging_bucket\"\u003e\u003c/a\u003e [lb\\_access\\_logging\\_bucket](#input\\_lb\\_access\\_logging\\_bucket) | Optional target for ALB access logging | `string` | `null` | no |\n| \u003ca name=\"input_lb_access_logging_prefix\"\u003e\u003c/a\u003e [lb\\_access\\_logging\\_prefix](#input\\_lb\\_access\\_logging\\_prefix) | Optional target prefix for ALB access logging (only used if `lb_access_logging_bucket` is set) | `string` | `null` | no |\n| \u003ca name=\"input_lb_listener_certificate\"\u003e\u003c/a\u003e [lb\\_listener\\_certificate](#input\\_lb\\_listener\\_certificate) | ARN of the certificate to attach to the LB. Only if lb\\_listener\\_protocol is HTTPS | `string` | `\"\"` | no |\n| \u003ca name=\"input_lb_listener_port\"\u003e\u003c/a\u003e [lb\\_listener\\_port](#input\\_lb\\_listener\\_port) | Port on which LB will listen | `number` | `80` | no |\n| \u003ca name=\"input_lb_listener_protocol\"\u003e\u003c/a\u003e [lb\\_listener\\_protocol](#input\\_lb\\_listener\\_protocol) | Protcol on which LB will listen | `string` | `\"HTTP\"` | no |\n| \u003ca name=\"input_lb_listener_ssl_policy\"\u003e\u003c/a\u003e [lb\\_listener\\_ssl\\_policy](#input\\_lb\\_listener\\_ssl\\_policy) | AWS SSL Security Policy to use with an HTTPS listener on the Load Balancer | `string` | `\"ELBSecurityPolicy-TLS-1-2-Ext-2018-06\"` | no |\n| \u003ca name=\"input_lb_security_groups\"\u003e\u003c/a\u003e [lb\\_security\\_groups](#input\\_lb\\_security\\_groups) | Security groups to apply to Load Balancer | `list(string)` | n/a | yes |\n| \u003ca name=\"input_max_instance_lifetime\"\u003e\u003c/a\u003e [max\\_instance\\_lifetime](#input\\_max\\_instance\\_lifetime) | Maximum lifetime of instances in ASG in seconds (values must be either equal to 0 or between 604800 and 31536000 seconds.) | `number` | `0` | no |\n| \u003ca name=\"input_max_instances\"\u003e\u003c/a\u003e [max\\_instances](#input\\_max\\_instances) | Max instances in ASG | `string` | `4` | no |\n| \u003ca name=\"input_min_instances\"\u003e\u003c/a\u003e [min\\_instances](#input\\_min\\_instances) | Min instances in ASG | `string` | `2` | no |\n| \u003ca name=\"input_min_instances_in_service\"\u003e\u003c/a\u003e [min\\_instances\\_in\\_service](#input\\_min\\_instances\\_in\\_service) | Minimum number of instances that must remain in service when autoscaling group is updated | `string` | n/a | yes |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | common name for resources in this module | `string` | `\"ec2-spot-cluster\"` | no |\n| \u003ca name=\"input_on_demand_allocation_strategy\"\u003e\u003c/a\u003e [on\\_demand\\_allocation\\_strategy](#input\\_on\\_demand\\_allocation\\_strategy) | Strategy for allocation of instances to fulfill On-Demand capacity. Only valid value is currently 'prioritized'. | `string` | `\"prioritized\"` | no |\n| \u003ca name=\"input_on_demand_base_capacity\"\u003e\u003c/a\u003e [on\\_demand\\_base\\_capacity](#input\\_on\\_demand\\_base\\_capacity) | Minimum amount of the ASG Capacity that should be filled with On Demand instances | `number` | `0` | no |\n| \u003ca name=\"input_on_demand_percent_above_base_capacity\"\u003e\u003c/a\u003e [on\\_demand\\_percent\\_above\\_base\\_capacity](#input\\_on\\_demand\\_percent\\_above\\_base\\_capacity) | Percentage of the instances beyond the base capacity of the ASG that should be On Demand | `number` | `100` | no |\n| \u003ca name=\"input_pause_time\"\u003e\u003c/a\u003e [pause\\_time](#input\\_pause\\_time) | Time to wait for a new instance to check-in before marking it as failed. Specify PauseTime in the ISO8601 duration format (in the format PT#H#M#S, where each # is the number of hours, minutes, and seconds, respectively). | `string` | `\"PT5M\"` | no |\n| \u003ca name=\"input_scaling_object_type\"\u003e\u003c/a\u003e [scaling\\_object\\_type](#input\\_scaling\\_object\\_type) | The object type the autoscaling group should use as the basis for its instances. The default value is 'LaunchTemplate'. MixedInstancesPolicy is also supported, and future values may include 'LaunchConfigurationName', and 'InstanceId' | `string` | `\"launchtemplate\"` | no |\n| \u003ca name=\"input_spot_allocation_strategy\"\u003e\u003c/a\u003e [spot\\_allocation\\_strategy](#input\\_spot\\_allocation\\_strategy) | Method by which to allocate spot instances for a MixedInstancesPolicy deployment. Valid values are lowest-price, capacity-optimized, and capacity-optimized-prioritized. | `string` | `\"lowest-price\"` | no |\n| \u003ca name=\"input_spot_instance_pools\"\u003e\u003c/a\u003e [spot\\_instance\\_pools](#input\\_spot\\_instance\\_pools) | Number of Spot Instance pools to allocate your spot capacity for a MixedInstancesPolicy deployment. Applies only when lowest-price allocation strategy is in effect. | `number` | `2` | no |\n| \u003ca name=\"input_spot_max_price\"\u003e\u003c/a\u003e [spot\\_max\\_price](#input\\_spot\\_max\\_price) | Maximum price to pay for Spot Instances in a MixedInstancesPolicy deployment. Default is blank, which equates to the price of on-demand instances. | `string` | `\"\"` | no |\n| \u003ca name=\"input_subnet_ids\"\u003e\u003c/a\u003e [subnet\\_ids](#input\\_subnet\\_ids) | Subnets ALB will listen on | `list(string)` | n/a | yes |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | Tags definition to apply to resources | `map(string)` | n/a | yes |\n| \u003ca name=\"input_vpc_id\"\u003e\u003c/a\u003e [vpc\\_id](#input\\_vpc\\_id) | VPC ID to use for target group | `string` | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_aws_cloudformation_stack\"\u003e\u003c/a\u003e [aws\\_cloudformation\\_stack](#output\\_aws\\_cloudformation\\_stack) | AWS ASG CFN Stack resource |\n| \u003ca name=\"output_aws_lb\"\u003e\u003c/a\u003e [aws\\_lb](#output\\_aws\\_lb) | AWS LB resource |\n| \u003ca name=\"output_aws_lb_listener\"\u003e\u003c/a\u003e [aws\\_lb\\_listener](#output\\_aws\\_lb\\_listener) | AWS LB listener resource |\n| \u003ca name=\"output_aws_lb_target_group\"\u003e\u003c/a\u003e [aws\\_lb\\_target\\_group](#output\\_aws\\_lb\\_target\\_group) | AWS LB Target Group resource |\n| \u003ca name=\"output_rendered\"\u003e\u003c/a\u003e [rendered](#output\\_rendered) | n/a |\n\u003c!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n\n## The Giants underneath this module\n- pre-commit.com/\n- terraform.io/\n- github.com/tfutils/tfenv\n- github.com/segmentio/terraform-docs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhythmictech%2Fterraform-aws-asg-rollingupdate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhythmictech%2Fterraform-aws-asg-rollingupdate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhythmictech%2Fterraform-aws-asg-rollingupdate/lists"}