-
-
Notifications
You must be signed in to change notification settings - Fork 325
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Feat/add nlb compatibilty * Add example for NLB * Fix example, add scheduled actions Add suggestion using new security group Co-authored-by: Yonatan Koren <me@yonatankoren.com> * Auto Format * Add configs to fixture Co-authored-by: Yonatan Koren <me@yonatankoren.com> * syntax clean * Auto Format Co-authored-by: Yonatan Koren <me@yonatankoren.com> Co-authored-by: cloudpossebot <11232728+cloudpossebot@users.noreply.github.com>
- Loading branch information
1 parent
efd196b
commit e012092
Showing
14 changed files
with
818 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,202 @@ | ||
# | ||
# ONLY EDIT THIS FILE IN github.com/cloudposse/terraform-null-label | ||
# All other instances of this file should be a copy of that one | ||
# | ||
# | ||
# Copy this file from https://github.com/cloudposse/terraform-null-label/blob/master/exports/context.tf | ||
# and then place it in your Terraform module to automatically get | ||
# Cloud Posse's standard configuration inputs suitable for passing | ||
# to Cloud Posse modules. | ||
# | ||
# Modules should access the whole context as `module.this.context` | ||
# to get the input variables with nulls for defaults, | ||
# for example `context = module.this.context`, | ||
# and access individual variables as `module.this.<var>`, | ||
# with final values filled in. | ||
# | ||
# For example, when using defaults, `module.this.context.delimiter` | ||
# will be null, and `module.this.delimiter` will be `-` (hyphen). | ||
# | ||
|
||
module "this" { | ||
source = "cloudposse/label/null" | ||
version = "0.24.1" # requires Terraform >= 0.13.0 | ||
|
||
enabled = var.enabled | ||
namespace = var.namespace | ||
environment = var.environment | ||
stage = var.stage | ||
name = var.name | ||
delimiter = var.delimiter | ||
attributes = var.attributes | ||
tags = var.tags | ||
additional_tag_map = var.additional_tag_map | ||
label_order = var.label_order | ||
regex_replace_chars = var.regex_replace_chars | ||
id_length_limit = var.id_length_limit | ||
label_key_case = var.label_key_case | ||
label_value_case = var.label_value_case | ||
|
||
context = var.context | ||
} | ||
|
||
# Copy contents of cloudposse/terraform-null-label/variables.tf here | ||
|
||
variable "context" { | ||
type = any | ||
default = { | ||
enabled = true | ||
namespace = null | ||
environment = null | ||
stage = null | ||
name = null | ||
delimiter = null | ||
attributes = [] | ||
tags = {} | ||
additional_tag_map = {} | ||
regex_replace_chars = null | ||
label_order = [] | ||
id_length_limit = null | ||
label_key_case = null | ||
label_value_case = null | ||
} | ||
description = <<-EOT | ||
Single object for setting entire context at once. | ||
See description of individual variables for details. | ||
Leave string and numeric variables as `null` to use default value. | ||
Individual variable settings (non-null) override settings in context object, | ||
except for attributes, tags, and additional_tag_map, which are merged. | ||
EOT | ||
|
||
validation { | ||
condition = lookup(var.context, "label_key_case", null) == null ? true : contains(["lower", "title", "upper"], var.context["label_key_case"]) | ||
error_message = "Allowed values: `lower`, `title`, `upper`." | ||
} | ||
|
||
validation { | ||
condition = lookup(var.context, "label_value_case", null) == null ? true : contains(["lower", "title", "upper", "none"], var.context["label_value_case"]) | ||
error_message = "Allowed values: `lower`, `title`, `upper`, `none`." | ||
} | ||
} | ||
|
||
variable "enabled" { | ||
type = bool | ||
default = null | ||
description = "Set to false to prevent the module from creating any resources" | ||
} | ||
|
||
variable "namespace" { | ||
type = string | ||
default = null | ||
description = "Namespace, which could be your organization name or abbreviation, e.g. 'eg' or 'cp'" | ||
} | ||
|
||
variable "environment" { | ||
type = string | ||
default = null | ||
description = "Environment, e.g. 'uw2', 'us-west-2', OR 'prod', 'staging', 'dev', 'UAT'" | ||
} | ||
|
||
variable "stage" { | ||
type = string | ||
default = null | ||
description = "Stage, e.g. 'prod', 'staging', 'dev', OR 'source', 'build', 'test', 'deploy', 'release'" | ||
} | ||
|
||
variable "name" { | ||
type = string | ||
default = null | ||
description = "Solution name, e.g. 'app' or 'jenkins'" | ||
} | ||
|
||
variable "delimiter" { | ||
type = string | ||
default = null | ||
description = <<-EOT | ||
Delimiter to be used between `namespace`, `environment`, `stage`, `name` and `attributes`. | ||
Defaults to `-` (hyphen). Set to `""` to use no delimiter at all. | ||
EOT | ||
} | ||
|
||
variable "attributes" { | ||
type = list(string) | ||
default = [] | ||
description = "Additional attributes (e.g. `1`)" | ||
} | ||
|
||
variable "tags" { | ||
type = map(string) | ||
default = {} | ||
description = "Additional tags (e.g. `map('BusinessUnit','XYZ')`" | ||
} | ||
|
||
variable "additional_tag_map" { | ||
type = map(string) | ||
default = {} | ||
description = "Additional tags for appending to tags_as_list_of_maps. Not added to `tags`." | ||
} | ||
|
||
variable "label_order" { | ||
type = list(string) | ||
default = null | ||
description = <<-EOT | ||
The naming order of the id output and Name tag. | ||
Defaults to ["namespace", "environment", "stage", "name", "attributes"]. | ||
You can omit any of the 5 elements, but at least one must be present. | ||
EOT | ||
} | ||
|
||
variable "regex_replace_chars" { | ||
type = string | ||
default = null | ||
description = <<-EOT | ||
Regex to replace chars with empty string in `namespace`, `environment`, `stage` and `name`. | ||
If not set, `"/[^a-zA-Z0-9-]/"` is used to remove all characters other than hyphens, letters and digits. | ||
EOT | ||
} | ||
|
||
variable "id_length_limit" { | ||
type = number | ||
default = null | ||
description = <<-EOT | ||
Limit `id` to this many characters (minimum 6). | ||
Set to `0` for unlimited length. | ||
Set to `null` for default, which is `0`. | ||
Does not affect `id_full`. | ||
EOT | ||
validation { | ||
condition = var.id_length_limit == null ? true : var.id_length_limit >= 6 || var.id_length_limit == 0 | ||
error_message = "The id_length_limit must be >= 6 if supplied (not null), or 0 for unlimited length." | ||
} | ||
} | ||
|
||
variable "label_key_case" { | ||
type = string | ||
default = null | ||
description = <<-EOT | ||
The letter case of label keys (`tag` names) (i.e. `name`, `namespace`, `environment`, `stage`, `attributes`) to use in `tags`. | ||
Possible values: `lower`, `title`, `upper`. | ||
Default value: `title`. | ||
EOT | ||
|
||
validation { | ||
condition = var.label_key_case == null ? true : contains(["lower", "title", "upper"], var.label_key_case) | ||
error_message = "Allowed values: `lower`, `title`, `upper`." | ||
} | ||
} | ||
|
||
variable "label_value_case" { | ||
type = string | ||
default = null | ||
description = <<-EOT | ||
The letter case of output label values (also used in `tags` and `id`). | ||
Possible values: `lower`, `title`, `upper` and `none` (no transformation). | ||
Default value: `lower`. | ||
EOT | ||
|
||
validation { | ||
condition = var.label_value_case == null ? true : contains(["lower", "title", "upper", "none"], var.label_value_case) | ||
error_message = "Allowed values: `lower`, `title`, `upper`, `none`." | ||
} | ||
} | ||
#### End of copy of cloudposse/terraform-null-label/variables.tf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
region = "us-east-2" | ||
|
||
availability_zones = ["us-east-2a", "us-east-2b"] | ||
|
||
namespace = "eg" | ||
|
||
stage = "test" | ||
|
||
name = "elastic-beanstalk-env" | ||
|
||
description = "Test elastic-beanstalk-environment" | ||
|
||
tier = "WebServer" | ||
|
||
environment_type = "LoadBalanced" | ||
|
||
loadbalancer_type = "network" | ||
|
||
availability_zone_selector = "Any 2" | ||
|
||
instance_type = "t3.micro" | ||
|
||
autoscale_min = 1 | ||
|
||
autoscale_max = 2 | ||
|
||
wait_for_ready_timeout = "20m" | ||
|
||
force_destroy = true | ||
|
||
rolling_update_enabled = true | ||
|
||
rolling_update_type = "Health" | ||
|
||
updating_min_in_service = 0 | ||
|
||
updating_max_batch = 1 | ||
|
||
application_port = 80 | ||
|
||
root_volume_size = 8 | ||
|
||
root_volume_type = "gp2" | ||
|
||
autoscale_measure_name = "CPUUtilization" | ||
|
||
autoscale_statistic = "Average" | ||
|
||
autoscale_unit = "Percent" | ||
|
||
autoscale_lower_bound = 20 | ||
|
||
autoscale_lower_increment = -1 | ||
|
||
autoscale_upper_bound = 80 | ||
|
||
autoscale_upper_increment = 1 | ||
|
||
elb_scheme = "public" | ||
|
||
// https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html | ||
// https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.docker | ||
solution_stack_name = "64bit Amazon Linux 2018.03 v2.12.17 running Docker 18.06.1-ce" | ||
|
||
version_label = "" | ||
|
||
dns_zone_id = "Z3SO0TKDDQ0RGG" | ||
|
||
// https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html | ||
additional_settings = [ | ||
{ | ||
namespace = "aws:elasticbeanstalk:managedactions" | ||
name = "ManagedActionsEnabled" | ||
value = "false" | ||
} | ||
] | ||
|
||
env_vars = { | ||
"DB_HOST" = "xxxxxxxxxxxxxx" | ||
"DB_USERNAME" = "yyyyyyyyyyyyy" | ||
"DB_PASSWORD" = "zzzzzzzzzzzzzzzzzzz" | ||
"ANOTHER_ENV_VAR" = "123456789" | ||
} | ||
|
||
// https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-autoscaling-scheduledactions.html | ||
scheduled_actions = [ | ||
{ | ||
name = "Refreshinstances" | ||
minsize = "1" | ||
maxsize = "2" | ||
desiredcapacity = "2" | ||
starttime = "2015-05-14T07:00:00Z" | ||
endtime = "2016-01-12T07:00:00Z" | ||
recurrence = "*/20 * * * *" | ||
suspend = false | ||
} | ||
] |
Oops, something went wrong.