Terraform module which creates Elasticache resources on AWS
Root module calls these modules which can also be used separately to create independent resources:
- cache_parameter_group - creates Elasticache parameter group
- cache_subnet_group - creates Elasticache subnet group
- cache_user - creates Elasticache user
- cache_user_group - creates Elasticache user group
module "elasticache" { source = "osgurisdosre/elasticache/aws" create_cache = true replication_group_id = "redis-app" description_redis = "Redis App" node_type = "cache.t2.micro" security_group_ids = ["sg-0000000000000", "sg-111111111111111"] num_cache_clusters = 3 # Cache subnet group create_elasticache_subnet_group = true subnet_group_name = "elasticache-subnets" subnet_ids = ["subnet-123456789", "subnet-987654321", "subnet-123321123"] # Cache parameter group create_elasticache_parameter_group = true parameters = [{ name = "activerehashing" value = "yes" }] # Cache user create_elasticache_user = true create_cache_password = true user_name = "userapp" user_id = "userapp" access_string = "on ~* +@all" authentication_mode = [{ type = "password" }] # Cache user group create_elasticache_user_group = true user_group_id = "app" }
module "elastic_serverlesss" { source = "osgurisdosre/elasticache/aws" create_elasticache_serverless = true serverless_name = "redis-serverless" description_serverless = "serverless" enabled_limits = true cache_usage_limits = { data_storage = { maximum = 1000 unit = "GB" } ecpu_per_second = { maximum = 1000 } } daily_snapshot_time = "09:00" kms_key_id = aws_kms_key.test.arn major_engine_version = "7" snapshot_retention_limit = 1 security_group_ids = ["sg-0000000000000", "sg-111111111111111"] subnet_ids = ["subnet-123456789", "subnet-987654321", "subnet-123321123"] user_group_id = module.user_group.elasticache_user_group_id tags = { "Environment" = "prd" } }
module "elasticache" { source = "osgurisdosre/documentdb/aws" # Disable creation of Elasticache create_cache = false # Enable creation of a random password create_cache_password = true # Enable creation of subnet group create_elasticache_subnet_group = true # Enable creation of parameter group create_elasticache_parameter_group = true # Enable creation of user create_elasticache_user = true # Enable creation of user group create_elasticache_user_group = true # Enable creation of serverless create_elasticache_serverless = true #Enable modification in cache_usage_limits enabled_limits = true }
To-do:
- This module does not create Elasticache security group. Use terraform-aws-security-group module for this.
- By default, the variable
create_db_password
is set to true. Therefore, even if the user provides a password, it will not be read. Thecreate_db_password
variable should be set to false and thepasswords
variable should have a non-null value to be read and used. - By default, the
create_elasticache_serverless
variable is set false
Name | Version |
---|---|
terraform | >= 1.4 |
aws | >= 5.40 |
random | >= 3.1 |
Name | Version |
---|---|
aws | >= 5.40 |
random | >= 3.1 |
Name | Source | Version |
---|---|---|
elasticache_parameter_group | ./modules/cache_parameter_group | n/a |
elasticache_subnet_group | ./modules/cache_subnet_group | n/a |
elasticache_user | ./modules/cache_user | n/a |
elasticache_user_group | ./modules/cache_user_group | n/a |
Name | Type |
---|---|
aws_elasticache_replication_group.this | resource |
aws_elasticache_serverless_cache.this | resource |
random_password.master_password | resource |
Name | Description | Type | Default | Required |
---|---|---|---|---|
access_string | Access permissions string used for this user. | string | null | no |
apply_immediately | Specifies whether any modifications are applied immediately, or during the next maintenance window. | bool | false | no |
at_rest_encryption_enabled | Whether to enable encryption at rest. | bool | true | no |
auth_token | Password used to access a password protected server | string | null | no |
authentication_mode | Denotes the user's authentication properties. Possible of type options are: password, no-password-required or iam. | list(object({ | [ | no |
auto_minor_version_upgrade | Specifies whether minor version engine upgrades will be applied automatically to the underlying | bool | false | no |
automatic_failover_enabled | Specifies whether a read-only replica will be automatically promoted to read/write primary if the existing primary fails. | bool | true | no |
cache_usage_limits | Sets the cache usage limits for storage and ElastiCache Processing Units for the cache.(data_storage,ecpu_per_second) | any | {} | no |
create | Create the resource? | bool | true | no |
create_cache | Create the elasticache Redis? | bool | false | no |
create_cache_password | Create the password? | bool | false | no |
create_elasticache_parameter_group | Create the parameter group? | bool | false | no |
create_elasticache_replication_group | Create the replication group? | bool | false | no |
create_elasticache_serverless | Create the elasticache Redis serverless? | bool | false | no |
create_elasticache_subnet_group | Create the subnet group? | bool | false | no |
create_elasticache_user | Create the user? | bool | false | no |
create_elasticache_user_group | Create the user group? | bool | false | no |
daily_snapshot_time | The daily time that snapshots will be created from the new serverless cache.(Only for the serverless module) | string | "03:00" | no |
data_tiering_enabled | Enables data tiering | bool | false | no |
description_parameter | The description of the ElastiCache parameter group. | string | null | no |
description_redis | User-created description for the replication group. Must not be empty | string | "" | no |
description_serverless | User-created description for the serverless. Must not be empty | string | "" | no |
description_subnet | The Description of the ElastiCache Subnet Group. | string | null | no |
enabled_limits | Enable customization of cache_usage_limits(Only for the serverless module) | bool | false | no |
engine | Name of the cache engine to be used for the clusters in this replication group. | string | "redis" | no |
engine_version | Version number of the cache engine to be used for the cache clusters in this replication group. | string | "6.x" | no |
family | The family of the ElastiCache parameter group. | string | "redis6.x" | no |
final_snapshot_identifier | The name of your final node group (shard) snapshot. | string | null | no |
global_replication_group_id | The ID of the global replication group to which this replication group should belong. | string | null | no |
kms_key_id | The ARN of the key that you wish to use if encrypting at rest. | string | null | no |
log_delivery_configuration | block allows the streaming of Redis SLOWLOG or Redis Engine Log to CloudWatch Log | list(map(string)) | [] | no |
maintenance_window | Specifies the weekly time range for when maintenance on the cache cluster is performed. | string | "sat:03:00-sat:06:00" | no |
major_engine_version | The version of the cache engine that will be used to create the serverless cache.(Only for the serverless module) | string | "7" | no |
multi_az_enabled | Specifies whether to enable Multi-AZ Support for the replication group. | bool | false | no |
node_type | Instance class to be used. | string | null | no |
notification_topic_arn | ARN of an SNS topic to send ElastiCache notifications to | string | null | no |
num_cache_clusters | Number of cache clusters (primary and replicas) this replication group will have. | number | 3 | no |
num_node_groups | Number of node groups (shards) for this Redis replication group. | number | null | no |
parameter_group_name | The name of the ElastiCache parameter group. | string | null | no |
parameters | List of DB parameters to apply | list(map(string)) | [] | no |
password | Password for the user. | list(string) | [] | no |
password_create | Password Create | string | null | no |
port | Port number on which each of the cache nodes will accept connections. | number | 6379 | no |
preferred_cache_cluster_azs | List of EC2 availability zones in which the replication group's cache clusters will be created. | list(string) | null | no |
random_password_length | The length of the string desired. | number | 16 | no |
replicas_per_node_group | Number of replica nodes in each node group. | number | null | no |
replication_group_id | Replication group identifier. This parameter is stored as a lowercase string. | string | null | no |
security_group_ids | One or more Amazon VPC security groups associated with this replication group. | list(string) | [] | no |
security_group_names | List of cache security group names to associate with this replication group. | list(string) | null | no |
serverless_name | Name Redis Serverless. This parameter is stored as a lowercase string. | string | null | no |
snapshot_arns_to_restore | The list of ARN(s) of the snapshot that the new serverless cache will be created from(Only for the serverless module) | list(string) | null | no |
snapshot_name | Name of a snapshot from which to restore data into the new node group. | string | null | no |
snapshot_retention_limit | Number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. | number | 7 | no |
snapshot_window | Daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. | string | "00:00-02:00" | no |
subnet_group_name | The Name of the ElastiCache Subnet Group. | string | null | no |
subnet_ids | The Subnet IDs of the ElastiCache Subnet Group. | list(string) | [ | no |
tags | A map of tags to add to all resources | map(string) | {} | no |
transit_encryption_enabled | Whether to enable encryption in transit. | bool | true | no |
user_group_id | The user group identifier. | string | null | no |
user_group_ids | User Group ID to associate with the replication group. | list(string) | null | no |
user_id | The ID of the user. | string | null | no |
user_name | The username of the user. | string | null | no |
Name | Description |
---|---|
cache_instance_endpoint | The DNS address of the Primary Cache |
cache_instance_password | The cache password (this password may be old, because Terraform doesn't track it after initial creation) |
db_instance_endpoint_reader | The DNS address of the Reader Cache |
Module is maintained by Emidio Neto, Leonardo Jardim and Yuri Azeredo
Apache 2 Licensed. See LICENSE for full details.