diff --git a/README.md b/README.md index da12bb7..8ab9620 100644 --- a/README.md +++ b/README.md @@ -333,11 +333,12 @@ No modules. | [create\_parameter\_group](#input\_create\_parameter\_group) | Determines whether the ElastiCache parameter group will be created or not | `bool` | `false` | no | | [create\_primary\_global\_replication\_group](#input\_create\_primary\_global\_replication\_group) | Determines whether an primary ElastiCache global replication group will be created | `bool` | `false` | no | | [create\_replication\_group](#input\_create\_replication\_group) | Determines whether an ElastiCache replication group will be created or not | `bool` | `true` | no | +| [create\_secondary\_global\_replication\_group](#input\_create\_secondary\_global\_replication\_group) | Determines whether an secondary ElastiCache global replication group will be created | `bool` | `false` | no | | [create\_security\_group](#input\_create\_security\_group) | Determines if a security group is created | `bool` | `true` | no | | [create\_subnet\_group](#input\_create\_subnet\_group) | Determines whether the Elasticache subnet group will be created or not | `bool` | `true` | no | | [data\_tiering\_enabled](#input\_data\_tiering\_enabled) | Enables data tiering. Data tiering is only supported for replication groups using the `r6gd` node type. This parameter must be set to true when using `r6gd` nodes | `bool` | `null` | no | | [description](#input\_description) | User-created description for the replication group | `string` | `null` | no | -| [engine](#input\_engine) | Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis` | `string` | `null` | no | +| [engine](#input\_engine) | Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis` | `string` | `"redis"` | no | | [engine\_version](#input\_engine\_version) | Version number of the cache engine to be used. If not set, defaults to the latest version | `string` | `null` | no | | [final\_snapshot\_identifier](#input\_final\_snapshot\_identifier) | (Redis only) Name of your final cluster snapshot. If omitted, no final snapshot will be made | `string` | `null` | no | | [global\_replication\_group\_id](#input\_global\_replication\_group\_id) | The ID of the global replication group to which this replication group should belong | `string` | `null` | no | diff --git a/examples/memcached-cluster/main.tf b/examples/memcached-cluster/main.tf index 5536839..9fad5a9 100644 --- a/examples/memcached-cluster/main.tf +++ b/examples/memcached-cluster/main.tf @@ -5,7 +5,7 @@ provider "aws" { data "aws_availability_zones" "available" {} locals { - region = "us-east-1" + region = "eu-west-1" name = "ex-${basename(path.cwd)}" vpc_cidr = "10.0.0.0/16" diff --git a/examples/redis-cluster-mode/main.tf b/examples/redis-cluster-mode/main.tf index e6b6a2c..830e434 100644 --- a/examples/redis-cluster-mode/main.tf +++ b/examples/redis-cluster-mode/main.tf @@ -5,7 +5,7 @@ provider "aws" { data "aws_availability_zones" "available" {} locals { - region = "us-east-1" + region = "eu-west-1" name = "ex-${basename(path.cwd)}" vpc_cidr = "10.0.0.0/16" diff --git a/examples/redis-cluster/main.tf b/examples/redis-cluster/main.tf index 9021505..b785da4 100644 --- a/examples/redis-cluster/main.tf +++ b/examples/redis-cluster/main.tf @@ -5,7 +5,7 @@ provider "aws" { data "aws_availability_zones" "available" {} locals { - region = "us-east-1" + region = "eu-west-1" name = "ex-${basename(path.cwd)}" vpc_cidr = "10.0.0.0/16" diff --git a/examples/redis-global-replication-group/main.tf b/examples/redis-global-replication-group/main.tf index e769733..820853b 100644 --- a/examples/redis-global-replication-group/main.tf +++ b/examples/redis-global-replication-group/main.tf @@ -63,8 +63,9 @@ module "elasticache_secondary" { aws = aws.euwest1 } - replication_group_id = local.name - global_replication_group_id = module.elasticache_primary.global_replication_group_id + replication_group_id = local.name + create_secondary_global_replication_group = true + global_replication_group_id = module.elasticache_primary.global_replication_group_id # Security Group vpc_id = module.vpc_secondary.vpc_id diff --git a/examples/redis-replication-group/main.tf b/examples/redis-replication-group/main.tf index 3cf98f6..f9faadd 100644 --- a/examples/redis-replication-group/main.tf +++ b/examples/redis-replication-group/main.tf @@ -5,7 +5,7 @@ provider "aws" { data "aws_availability_zones" "available" {} locals { - region = "us-east-1" + region = "eu-west-1" name = "ex-${basename(path.cwd)}" vpc_cidr = "10.0.0.0/16" diff --git a/main.tf b/main.tf index 62816ee..76d996f 100644 --- a/main.tf +++ b/main.tf @@ -53,7 +53,7 @@ resource "aws_elasticache_cluster" "this" { snapshot_retention_limit = local.in_replication_group ? null : var.snapshot_retention_limit snapshot_window = local.in_replication_group ? null : var.snapshot_window subnet_group_name = local.in_replication_group ? null : local.subnet_group_name - transit_encryption_enabled = var.transit_encryption_enabled + transit_encryption_enabled = var.engine == "memcached" ? var.transit_encryption_enabled : null tags = local.tags } @@ -125,9 +125,8 @@ resource "aws_elasticache_replication_group" "this" { ################################################################################ locals { - create_global_replication_group = (var.create_primary_global_replication_group || local.create_secondary_global_replication_group) + create_global_replication_group = var.create_primary_global_replication_group || var.create_secondary_global_replication_group - create_secondary_global_replication_group = var.global_replication_group_id != null } resource "aws_elasticache_global_replication_group" "this" { @@ -147,17 +146,17 @@ resource "aws_elasticache_replication_group" "global" { count = var.create && var.create_replication_group && local.create_global_replication_group ? 1 : 0 apply_immediately = var.apply_immediately - at_rest_encryption_enabled = local.create_secondary_global_replication_group ? null : var.at_rest_encryption_enabled + at_rest_encryption_enabled = var.create_secondary_global_replication_group ? null : var.at_rest_encryption_enabled auth_token = var.auth_token auth_token_update_strategy = var.auth_token_update_strategy auto_minor_version_upgrade = var.auto_minor_version_upgrade automatic_failover_enabled = var.multi_az_enabled || var.cluster_mode_enabled ? true : var.automatic_failover_enabled data_tiering_enabled = var.data_tiering_enabled description = coalesce(var.description, "Global replication group") - engine = local.create_secondary_global_replication_group ? null : var.engine - engine_version = local.create_secondary_global_replication_group ? null : var.engine_version + engine = var.create_secondary_global_replication_group ? null : var.engine + engine_version = var.create_secondary_global_replication_group ? null : var.engine_version final_snapshot_identifier = var.final_snapshot_identifier - global_replication_group_id = local.create_secondary_global_replication_group ? var.global_replication_group_id : null + global_replication_group_id = var.create_secondary_global_replication_group ? var.global_replication_group_id : null ip_discovery = var.ip_discovery kms_key_id = var.at_rest_encryption_enabled ? var.kms_key_arn : null @@ -178,20 +177,20 @@ resource "aws_elasticache_replication_group" "global" { node_type = var.node_type notification_topic_arn = var.notification_topic_arn num_cache_clusters = var.cluster_mode_enabled ? null : var.num_cache_clusters - num_node_groups = local.create_secondary_global_replication_group ? null : local.num_node_groups - parameter_group_name = local.create_secondary_global_replication_group ? null : local.parameter_group_name_result + num_node_groups = var.create_secondary_global_replication_group ? null : local.num_node_groups + parameter_group_name = var.create_secondary_global_replication_group ? null : local.parameter_group_name_result port = coalesce(var.port, local.port) preferred_cache_cluster_azs = var.preferred_cache_cluster_azs replicas_per_node_group = var.replicas_per_node_group replication_group_id = var.replication_group_id - security_group_names = local.create_secondary_global_replication_group ? null : var.security_group_names + security_group_names = var.create_secondary_global_replication_group ? null : var.security_group_names security_group_ids = local.security_group_ids - snapshot_arns = local.create_secondary_global_replication_group ? null : var.snapshot_arns - snapshot_name = local.create_secondary_global_replication_group ? null : var.snapshot_name + snapshot_arns = var.create_secondary_global_replication_group ? null : var.snapshot_arns + snapshot_name = var.create_secondary_global_replication_group ? null : var.snapshot_name snapshot_retention_limit = var.snapshot_retention_limit snapshot_window = var.snapshot_window subnet_group_name = local.subnet_group_name - transit_encryption_enabled = local.create_secondary_global_replication_group ? null : var.transit_encryption_enabled + transit_encryption_enabled = var.create_secondary_global_replication_group ? null : var.transit_encryption_enabled user_group_ids = var.user_group_ids tags = local.tags diff --git a/modules/README.md b/modules/README.md index e69de29..2b3f113 100644 --- a/modules/README.md +++ b/modules/README.md @@ -0,0 +1 @@ +# AWS ElastiCache Terraform sub-module(s) diff --git a/modules/user-group/main.tf b/modules/user-group/main.tf index d1612e3..7919fb7 100644 --- a/modules/user-group/main.tf +++ b/modules/user-group/main.tf @@ -39,7 +39,7 @@ resource "aws_elasticache_user" "default" { user_id = var.default_user.user_id user_name = "default" - tags = var.tags + tags = local.tags } ################################################################################ diff --git a/variables.tf b/variables.tf index 7a64993..f93568c 100644 --- a/variables.tf +++ b/variables.tf @@ -59,7 +59,7 @@ variable "cluster_id" { variable "engine" { description = "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`" type = string - default = null + default = "redis" } variable "engine_version" { @@ -297,6 +297,12 @@ variable "create_primary_global_replication_group" { default = false } +variable "create_secondary_global_replication_group" { + description = "Determines whether an secondary ElastiCache global replication group will be created" + type = bool + default = false +} + ################################################################################ # Parameter Group ################################################################################