/terraform-aws-elasticache-redis

A Terraform module to create an AWS Redis ElastiCache cluster.

Primary LanguageHCLOtherNOASSERTION

terraform-aws-elasticache-redis

A Terraform module to create an AWS Redis ElastiCache cluster

Terraform versions

Terraform 0.12. Pin module version to ~> v1.0. Submit pull-requests to master branch.

Usage

module "redis" {
  source = "umotif-public/elasticache-redis/aws"
  version = "~> 1.0.0"

  name_prefix           = "core-example"
  number_cache_clusters = 2
  node_type             = "cache.t3.small"

  engine_version           = "5.0.6"
  port                     = 6379
  maintenance_window       = "mon:03:00-mon:04:00"
  snapshot_window          = "04:00-06:00"
  snapshot_retention_limit = 7

  automatic_failover_enabled = true

  at_rest_encryption_enabled = true
  transit_encryption_enabled = true
  auth_token                 = "1234567890asdfghjkl"

  apply_immediately = true
  family            = "redis5.0"
  description       = "Test elasticache redis."

  subnet_ids = module.vpc.private_subnets
  vpc_id     = module.vpc.vpc_id

  ingress_cidr_blocks = ["0.0.0.0/0"]

  parameter = [
    {
      name  = "repl-backlog-size"
      value = "16384"
    }
  ]

  tags = {
    Project = "Test"
  }
}

Assumptions

Module is to be used with Terraform > 0.12.

Examples

Authors

Module managed by Marcin Cuber linkedin.

Requirements

Name Version
terraform >= 0.12.6, < 0.14
aws >= 2.41, < 4.0

Providers

Name Version
aws >= 2.41, < 4.0

Inputs

Name Description Type Default Required
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 The password used to access a password protected server. Can be specified only if transit_encryption_enabled = true. string "" no
auto_minor_version_upgrade n/a string true 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
description The description of the all resources. string "Managed by Terraform" no
engine_version The version number of the cache engine to be used for the cache clusters in this replication group. string "5.0.6" no
family The family of the ElastiCache parameter group. string "redis5.0" no
ingress_cidr_blocks List of Ingress CIDR blocks. list(string) [] no
kms_key_id The ARN of the key that you wish to use if encrypting at rest. If not supplied, uses service managed encryption. Can be specified only if at_rest_encryption_enabled = true string "" no
maintenance_window Specifies the weekly time range for when maintenance on the cache cluster is performed. string "" no
name_prefix The replication group identifier. This parameter is stored as a lowercase string. string n/a yes
node_type The compute and memory capacity of the nodes in the node group. string n/a yes
notification_topic_arn An Amazon Resource Name (ARN) of an SNS topic to send ElastiCache notifications to. Example: arn:aws:sns:us-east-1:012345678999:my_sns_topic string "" no
number_cache_clusters The number of cache clusters (primary and replicas) this replication group will have. number n/a yes
parameter A list of Redis parameters to apply. Note that parameters may differ from one Redis family to another
list(object({
name = string
value = string
}))
[] no
port The port number on which each of the cache nodes will accept connections. number 6379 no
security_group_ids List of Security Groups. list(string) [] no
snapshot_retention_limit The number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. number 30 no
snapshot_window The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster. string "" no
subnet_ids List of VPC Subnet IDs for the cache subnet group. list(string) n/a yes
tags A mapping of tags to assign to all resources. map(string) {} no
transit_encryption_enabled Whether to enable encryption in transit. bool true no
vpc_id VPC Id to associate with Redis ElastiCache. string n/a yes

Outputs

Name Description
elasticache_auth_token The Redis Auth Token
elasticache_parameter_group_id The ElastiCache parameter group name.
elasticache_replication_group_id The ID of the ElastiCache Replication Group.
elasticache_replication_group_member_clusters The identifiers of all the nodes that are part of this replication group.
elasticache_replication_group_primary_endpoint_address The address of the endpoint for the primary node in the replication group.
security_group_arn The ARN of the Redis ElastiCache security group.
security_group_description The description of the Redis ElastiCache security group.
security_group_egress The egress rules of the Redis ElastiCache security group.
security_group_id The ID of the Redis ElastiCache security group.
security_group_ingress The ingress rules of the Redis ElastiCache security group.
security_group_name The name of the Redis ElastiCache security group.
security_group_owner_id The owner ID of the Redis ElastiCache security group.
security_group_vpc_id The VPC ID of the Redis ElastiCache security group.

License

See LICENSE for full details.

Pre-commit hooks

Install dependencies

MacOS

brew install pre-commit terraform-docs tflint

brew tap git-chglog/git-chglog
brew install git-chglog