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
################################################################################