Skip to content

Commit 13e082f

Browse files
Add scheduled_actions variables (#174) (#177)
Co-authored-by: cloudpossebot <[email protected]>
1 parent 12d0ce1 commit 13e082f

File tree

5 files changed

+98
-0
lines changed

5 files changed

+98
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ Available targets:
344344
| <a name="input_s3_bucket_access_log_bucket_name"></a> [s3\_bucket\_access\_log\_bucket\_name](#input\_s3\_bucket\_access\_log\_bucket\_name) | Name of the S3 bucket where s3 access log will be sent to | `string` | `""` | no |
345345
| <a name="input_s3_bucket_encryption_enabled"></a> [s3\_bucket\_encryption\_enabled](#input\_s3\_bucket\_encryption\_enabled) | When set to 'true' the resource will have aes256 encryption enabled by default | `bool` | `true` | no |
346346
| <a name="input_s3_bucket_versioning_enabled"></a> [s3\_bucket\_versioning\_enabled](#input\_s3\_bucket\_versioning\_enabled) | When set to 'true' the s3 origin bucket will have versioning enabled | `bool` | `true` | no |
347+
| <a name="input_scheduled_actions"></a> [scheduled\_actions](#input\_scheduled\_actions) | Define a list of scheduled actions | <pre>list(object({<br> name = string<br> minsize = string<br> maxsize = string<br> desiredcapacity = string<br> starttime = string<br> endtime = string<br> recurrence = string<br> suspend = bool<br> }))</pre> | `[]` | no |
347348
| <a name="input_solution_stack_name"></a> [solution\_stack\_name](#input\_solution\_stack\_name) | Elastic Beanstalk stack, e.g. Docker, Go, Node, Java, IIS. For more info, see https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html | `string` | n/a | yes |
348349
| <a name="input_spot_fleet_on_demand_above_base_percentage"></a> [spot\_fleet\_on\_demand\_above\_base\_percentage](#input\_spot\_fleet\_on\_demand\_above\_base\_percentage) | The percentage of On-Demand Instances as part of additional capacity that your Auto Scaling group provisions beyond the SpotOnDemandBase instances. This option is relevant only when enable\_spot\_instances is true. | `number` | `-1` | no |
349350
| <a name="input_spot_fleet_on_demand_base"></a> [spot\_fleet\_on\_demand\_base](#input\_spot\_fleet\_on\_demand\_base) | The minimum number of On-Demand Instances that your Auto Scaling group provisions before considering Spot Instances as your environment scales up. This option is relevant only when enable\_spot\_instances is true. | `number` | `0` | no |

docs/terraform.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@
127127
| <a name="input_s3_bucket_access_log_bucket_name"></a> [s3\_bucket\_access\_log\_bucket\_name](#input\_s3\_bucket\_access\_log\_bucket\_name) | Name of the S3 bucket where s3 access log will be sent to | `string` | `""` | no |
128128
| <a name="input_s3_bucket_encryption_enabled"></a> [s3\_bucket\_encryption\_enabled](#input\_s3\_bucket\_encryption\_enabled) | When set to 'true' the resource will have aes256 encryption enabled by default | `bool` | `true` | no |
129129
| <a name="input_s3_bucket_versioning_enabled"></a> [s3\_bucket\_versioning\_enabled](#input\_s3\_bucket\_versioning\_enabled) | When set to 'true' the s3 origin bucket will have versioning enabled | `bool` | `true` | no |
130+
| <a name="input_scheduled_actions"></a> [scheduled\_actions](#input\_scheduled\_actions) | Define a list of scheduled actions | <pre>list(object({<br> name = string<br> minsize = string<br> maxsize = string<br> desiredcapacity = string<br> starttime = string<br> endtime = string<br> recurrence = string<br> suspend = bool<br> }))</pre> | `[]` | no |
130131
| <a name="input_solution_stack_name"></a> [solution\_stack\_name](#input\_solution\_stack\_name) | Elastic Beanstalk stack, e.g. Docker, Go, Node, Java, IIS. For more info, see https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html | `string` | n/a | yes |
131132
| <a name="input_spot_fleet_on_demand_above_base_percentage"></a> [spot\_fleet\_on\_demand\_above\_base\_percentage](#input\_spot\_fleet\_on\_demand\_above\_base\_percentage) | The percentage of On-Demand Instances as part of additional capacity that your Auto Scaling group provisions beyond the SpotOnDemandBase instances. This option is relevant only when enable\_spot\_instances is true. | `number` | `-1` | no |
132133
| <a name="input_spot_fleet_on_demand_base"></a> [spot\_fleet\_on\_demand\_base](#input\_spot\_fleet\_on\_demand\_base) | The minimum number of On-Demand Instances that your Auto Scaling group provisions before considering Spot Instances as your environment scales up. This option is relevant only when enable\_spot\_instances is true. | `number` | `0` | no |

examples/complete/fixtures.us-east-2.tfvars

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,17 @@ env_vars = {
8989
"DB_PASSWORD" = "zzzzzzzzzzzzzzzzzzz"
9090
"ANOTHER_ENV_VAR" = "123456789"
9191
}
92+
93+
// https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-autoscaling-scheduledactions.html
94+
scheduled_actions = [
95+
{
96+
name = "Refreshinstances"
97+
minsize = "1"
98+
maxsize = "2"
99+
desiredcapacity = "2"
100+
starttime = "2015-05-14T07:00:00Z"
101+
endtime = "2016-01-12T07:00:00Z"
102+
recurrence = "*/20 * * * *"
103+
suspend = false
104+
}
105+
]

main.tf

100644100755
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -811,6 +811,73 @@ resource "aws_elastic_beanstalk_environment" "default" {
811811
resource = ""
812812
}
813813

814+
###=========================== Scheduled Actions ========================== ###
815+
816+
dynamic "setting" {
817+
for_each = var.scheduled_actions
818+
content {
819+
namespace = "aws:autoscaling:scheduledaction"
820+
name = "MinSize"
821+
value = setting.value.minsize
822+
resource = setting.value.name
823+
}
824+
}
825+
dynamic "setting" {
826+
for_each = var.scheduled_actions
827+
content {
828+
namespace = "aws:autoscaling:scheduledaction"
829+
name = "MaxSize"
830+
value = setting.value.maxsize
831+
resource = setting.value.name
832+
}
833+
}
834+
dynamic "setting" {
835+
for_each = var.scheduled_actions
836+
content {
837+
namespace = "aws:autoscaling:scheduledaction"
838+
name = "DesiredCapacity"
839+
value = setting.value.desiredcapacity
840+
resource = setting.value.name
841+
}
842+
}
843+
dynamic "setting" {
844+
for_each = var.scheduled_actions
845+
content {
846+
namespace = "aws:autoscaling:scheduledaction"
847+
name = "Recurrence"
848+
value = setting.value.recurrence
849+
resource = setting.value.name
850+
}
851+
}
852+
dynamic "setting" {
853+
for_each = var.scheduled_actions
854+
content {
855+
namespace = "aws:autoscaling:scheduledaction"
856+
name = "StartTime"
857+
value = setting.value.starttime
858+
resource = setting.value.name
859+
}
860+
}
861+
dynamic "setting" {
862+
for_each = var.scheduled_actions
863+
content {
864+
namespace = "aws:autoscaling:scheduledaction"
865+
name = "EndTime"
866+
value = setting.value.endtime
867+
resource = setting.value.name
868+
}
869+
}
870+
dynamic "setting" {
871+
for_each = var.scheduled_actions
872+
content {
873+
namespace = "aws:autoscaling:scheduledaction"
874+
name = "Suspend"
875+
value = setting.value.suspend ? "true" : "false"
876+
resource = setting.value.name
877+
}
878+
}
879+
880+
814881
###=========================== Logging ========================== ###
815882

816883
setting {

variables.tf

100644100755
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,3 +494,18 @@ variable "s3_bucket_encryption_enabled" {
494494
default = true
495495
description = "When set to 'true' the resource will have aes256 encryption enabled by default"
496496
}
497+
498+
variable "scheduled_actions" {
499+
type = list(object({
500+
name = string
501+
minsize = string
502+
maxsize = string
503+
desiredcapacity = string
504+
starttime = string
505+
endtime = string
506+
recurrence = string
507+
suspend = bool
508+
}))
509+
default = []
510+
description = "Define a list of scheduled actions"
511+
}

0 commit comments

Comments
 (0)