Memcached Module
This module creates an ElastiCache cluster that runs Memcached.
How do you connect to the Memcached cluster?
This module outputs a Terraform output variable that
contains a comma-separated list of addresses of the Memcached nodes. You can programmatically extract this variable in
your Terraform templates and pass it to other resources (e.g. as an environment variable in an EC2 instance). You'll
also see the variable at the end of each terraform apply
call or if you run terraform output
.
How do you scale this Memcached cluster?
- To scale vertically, increase the size of the nodes using the
instance_type
parameter (see here for valid values). - To scale horizontally, increase the number of nodes using the
num_cache_nodes
parameter.
For more info, see Scaling Memcached.
Sample Usage
- Terraform
- Terragrunt
# ------------------------------------------------------------------------------------------------------
# DEPLOY GRUNTWORK'S MEMCACHED MODULE
# ------------------------------------------------------------------------------------------------------
module "memcached" {
source = "git::git@github.com:gruntwork-io/terraform-aws-cache.git//modules/memcached?ref=v0.23.0"
# ----------------------------------------------------------------------------------------------------
# REQUIRED VARIABLES
# ----------------------------------------------------------------------------------------------------
# A list of CIDR-formatted IP address ranges that can connect to this
# ElastiCache cluster. For the standard Gruntwork VPC setup, these should be
# the CIDR blocks of the private app subnet in this VPC plus the private
# subnet in the mgmt VPC.
allow_connections_from_cidr_blocks = <list(string)>
# The compute and memory capacity of the nodes (e.g. cache.m3.medium).
instance_type = <string>
# The name used to namespace all resources created by these templates,
# including the ElastiCache cluster itself (e.g. mycache). Must be unique in
# this region. Must be a lowercase string.
name = <string>
# The initial number of cache nodes that the cache cluster will have. Must be
# between 1 and 20.
num_cache_nodes = <number>
# A list of subnet ids where the ElastiCache instances should be deployed. For
# the standard Gruntwork VPC setup, these should be the private peristence
# subnet ids.
subnet_ids = <list(string)>
# The id of the VPC in which the ElastiCache cluster should be deployed.
vpc_id = <string>
# ----------------------------------------------------------------------------------------------------
# OPTIONAL VARIABLES
# ----------------------------------------------------------------------------------------------------
# Specifies a list of Security Groups to allow connections from.
allow_connections_from_security_groups = []
# Specifies whether any database modifications are applied immediately, or
# during the next maintenance window.
apply_immediately = false
# Specifies whether the nodes in this Memcached node group are created in a
# single Availability Zone or created across multiple Availability Zones in
# the cluster's region. Valid values for this parameter are single-az or
# cross-az. If you want to choose cross-az, num_cache_nodes must be greater
# than 1.
az_mode = "single-az"
# Enable Encryption in-transit, can only be set on cluster creation.
enable_transport_encryption = false
# Specifies the weekly time range for when maintenance on the cache cluster is
# performed (e.g. sun:05:00-sun:09:00). The format is ddd:hh24:mi-ddd:hh24:mi
# (24H Clock UTC). The minimum maintenance window is a 60 minute period.
maintenance_window = "sat:07:00-sat:08:00"
# Version number of memcached to use (e.g. 1.5.16).
memcached_version = "1.5.16"
# Name of the parameter group to associate with this cache cluster. This can
# be used to configure custom settings for the cluster.
parameter_group_name = null
# The port number on which each of the cache nodes will accept connections
# (e.g. 6379).
port = 11211
# A set of tags to set for the Security Group created as part of this module.
security_group_tags = {}
# A set of tags to set for the ElastiCache Replication Group.
tags = {}
}
# ------------------------------------------------------------------------------------------------------
# DEPLOY GRUNTWORK'S MEMCACHED MODULE
# ------------------------------------------------------------------------------------------------------
terraform {
source = "git::git@github.com:gruntwork-io/terraform-aws-cache.git//modules/memcached?ref=v0.23.0"
}
inputs = {
# ----------------------------------------------------------------------------------------------------
# REQUIRED VARIABLES
# ----------------------------------------------------------------------------------------------------
# A list of CIDR-formatted IP address ranges that can connect to this
# ElastiCache cluster. For the standard Gruntwork VPC setup, these should be
# the CIDR blocks of the private app subnet in this VPC plus the private
# subnet in the mgmt VPC.
allow_connections_from_cidr_blocks = <list(string)>
# The compute and memory capacity of the nodes (e.g. cache.m3.medium).
instance_type = <string>
# The name used to namespace all resources created by these templates,
# including the ElastiCache cluster itself (e.g. mycache). Must be unique in
# this region. Must be a lowercase string.
name = <string>
# The initial number of cache nodes that the cache cluster will have. Must be
# between 1 and 20.
num_cache_nodes = <number>
# A list of subnet ids where the ElastiCache instances should be deployed. For
# the standard Gruntwork VPC setup, these should be the private peristence
# subnet ids.
subnet_ids = <list(string)>
# The id of the VPC in which the ElastiCache cluster should be deployed.
vpc_id = <string>
# ----------------------------------------------------------------------------------------------------
# OPTIONAL VARIABLES
# ----------------------------------------------------------------------------------------------------
# Specifies a list of Security Groups to allow connections from.
allow_connections_from_security_groups = []
# Specifies whether any database modifications are applied immediately, or
# during the next maintenance window.
apply_immediately = false
# Specifies whether the nodes in this Memcached node group are created in a
# single Availability Zone or created across multiple Availability Zones in
# the cluster's region. Valid values for this parameter are single-az or
# cross-az. If you want to choose cross-az, num_cache_nodes must be greater
# than 1.
az_mode = "single-az"
# Enable Encryption in-transit, can only be set on cluster creation.
enable_transport_encryption = false
# Specifies the weekly time range for when maintenance on the cache cluster is
# performed (e.g. sun:05:00-sun:09:00). The format is ddd:hh24:mi-ddd:hh24:mi
# (24H Clock UTC). The minimum maintenance window is a 60 minute period.
maintenance_window = "sat:07:00-sat:08:00"
# Version number of memcached to use (e.g. 1.5.16).
memcached_version = "1.5.16"
# Name of the parameter group to associate with this cache cluster. This can
# be used to configure custom settings for the cluster.
parameter_group_name = null
# The port number on which each of the cache nodes will accept connections
# (e.g. 6379).
port = 11211
# A set of tags to set for the Security Group created as part of this module.
security_group_tags = {}
# A set of tags to set for the ElastiCache Replication Group.
tags = {}
}
Reference
- Inputs
- Outputs
Required
allow_connections_from_cidr_blocks
list(string)A list of CIDR-formatted IP address ranges that can connect to this ElastiCache cluster. For the standard Gruntwork VPC setup, these should be the CIDR blocks of the private app subnet in this VPC plus the private subnet in the mgmt VPC.
instance_type
stringThe compute and memory capacity of the nodes (e.g. cache.m3.medium).
name
stringThe name used to namespace all resources created by these templates, including the ElastiCache cluster itself (e.g. mycache). Must be unique in this region. Must be a lowercase string.
num_cache_nodes
numberThe initial number of cache nodes that the cache cluster will have. Must be between 1 and 20.
subnet_ids
list(string)A list of subnet ids where the ElastiCache instances should be deployed. For the standard Gruntwork VPC setup, these should be the private peristence subnet ids.
vpc_id
stringThe id of the VPC in which the ElastiCache cluster should be deployed.
Optional
allow_connections_from_security_groups
list(string)Specifies a list of Security Groups to allow connections from.
[]
Specifies whether any database modifications are applied immediately, or during the next maintenance window.
false
az_mode
stringSpecifies whether the nodes in this Memcached node group are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region. Valid values for this parameter are single-az or cross-az. If you want to choose cross-az, num_cache_nodes must be greater than 1.
"single-az"
Enable Encryption in-transit, can only be set on cluster creation.
false
maintenance_window
stringSpecifies the weekly time range for when maintenance on the cache cluster is performed (e.g. sun:05:00-sun:09:00). The format is ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window is a 60 minute period.
"sat:07:00-sat:08:00"
memcached_version
stringVersion number of memcached to use (e.g. 1.5.16).
"1.5.16"
parameter_group_name
stringName of the parameter group to associate with this cache cluster. This can be used to configure custom settings for the cluster.
null
port
numberThe port number on which each of the cache nodes will accept connections (e.g. 6379).
11211
security_group_tags
map(string)A set of tags to set for the Security Group created as part of this module.
{}
tags
map(string)A set of tags to set for the ElastiCache Replication Group.
{}