Skip to content

tomarv2/terraform-aws-elasticache

Repository files navigation

Terraform module for AWS Elasticache

➡️ Terraform module for Azure Cache for Redis

➡️ Terraform module for Google Memorystore

Versions

  • Module tested for Terraform 1.0.1.
  • AWS provider version 4.35
  • main branch: Provider versions not pinned to keep up with Terraform releases
  • tags releases: Tags are pinned with versions (use in your releases)

Usage

Option 1:

terrafrom init
terraform plan -var='teamid=tryme' -var='prjid=project1'
terraform apply -var='teamid=tryme' -var='prjid=project1'
terraform destroy -var='teamid=tryme' -var='prjid=project1'

Note: With this option please take care of remote state storage

Option 2:

Recommended method (stores remote state in remote backend(S3, Azure storage, or Google bucket) using prjid and teamid to create directory structure):
  • Create python 3.8+ virtual environment
python3 -m venv <venv name>
  • Install package:
pip install tfremote --upgrade
  • Set below environment variables:
export TF_AWS_BUCKET=<remote state bucket name>
export TF_AWS_BUCKET_REGION=us-west-2
export TF_AWS_PROFILE=<profile from ~/.ws/credentials>

or

  • Set below environment variables:
export TF_AWS_BUCKET=<remote state bucket name>
export TF_AWS_BUCKET_REGION=us-west-2
export AWS_ACCESS_KEY_ID=<aws_access_key_id>
export AWS_SECRET_ACCESS_KEY=<aws_secret_access_key>
  • Updated examples directory with required values.

  • Run and verify the output before deploying:

tf -c=aws plan -var='teamid=foo' -var='prjid=bar'
  • Run below to deploy:
tf -c=aws apply -var='teamid=foo' -var='prjid=bar'
  • Run below to destroy:
tf -c=aws destroy -var='teamid=foo' -var='prjid=bar'

Note: Read more on tfremote

Please refer to examples directory link for references.

Note:

  • For more information on redis: link

Requirements

Name Version
terraform >= 1.0.1
aws ~> 4.35

Providers

Name Version
aws ~> 4.35

Modules

Name Source Version
global git::[email protected]:tomarv2/terraform-global.git//aws v0.0.1

Resources

Name Type
aws_elasticache_cluster.this resource
aws_elasticache_parameter_group.this resource
aws_caller_identity.current data source
aws_region.current data source

Inputs

Name Description Type Default Required
config Redis configuration map(any) {} no
extra_tags Additional tags to associate map(string) {} no

Outputs

Name Description
cluster_address Elasticache Cluster address
cluster_id Elasticache Id
parameter_group Elasticache Parameter Group