Skip to content

Commit

Permalink
cluster support
Browse files Browse the repository at this point in the history
  • Loading branch information
Mehdikarimian committed Apr 24, 2022
1 parent 8283753 commit dcc4470
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 38 deletions.
23 changes: 15 additions & 8 deletions examples/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,22 @@ module "vpc" {
}

module "redis" {
source = "Mehdikarimian/elasticache-redis-cluster/aws"
version = "0.1.0"
namespace = "simple-redis-cluster"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
node_type = "cache.t3.small"
parameter_group_name = "default.redis6.x"
namespace = "test"
source = "Mehdikarimian/elasticache-redis-cluster/aws"
version = "0.2.0"
vpc_id = module.vpc.vpc.id
subnet_ids = module.vpc.private_subnets.*.id
node_type = "cache.t3.small"
cluster_description = "test cluster"
subnet_name = "subnet"
parameter_group_name = "TestParameterGroup"
apply_immediately = true

cluster_mode = true
number_shard = 2
replicas_per_node_group = 1
security_group_name = "simple-redis-cluster-security-group"

security_group_name = "redis-production-security-group"
tags = {
Name = "simple-redis-cluster"
Enviroment = "Production",
Expand Down
52 changes: 42 additions & 10 deletions main.tf
Original file line number Diff line number Diff line change
@@ -1,22 +1,54 @@
locals {
subnet_group_name = var.subnet_name == "" ? var.namespace : "${var.namespace}-${var.subnet_name}"
parameter_group_name = var.cluster_mode ? "default.${var.family}.cluster.on" : "${var.namespace}.${var.family}"
}
resource "aws_elasticache_subnet_group" "default" {
name = "${var.namespace}-redis-subnet"
name = local.subnet_group_name
subnet_ids = var.subnet_ids

tags = var.tags
}

resource "aws_elasticache_parameter_group" "redis" {
count = var.parameter_group_name == "" ? 0 : 1
name = var.parameter_group_name
family = var.family


dynamic "parameter" {
for_each = var.cluster_mode ? concat([{ name = "cluster-enabled", value = "yes" }], var.parameter) : var.parameter
content {
name = parameter.value.name
value = parameter.value.value
}
}

lifecycle {
create_before_destroy = true
}

tags = var.tags
}

resource "aws_elasticache_replication_group" "default" {
replication_group_id = var.cluster_id
replication_group_description = var.cluster_description
security_group_ids = [aws_security_group.redis-security-group.id]
node_type = var.node_type
port = var.port
parameter_group_name = var.parameter_group_name
replication_group_id = var.cluster_id
description = var.cluster_description
security_group_ids = [aws_security_group.redis-security-group.id]
node_type = var.node_type
port = var.port

subnet_group_name = aws_elasticache_subnet_group.default.name
automatic_failover_enabled = var.automatic_failover_enabled
replicas_per_node_group = var.replicas_per_node_group
num_cache_clusters = var.num_cache_clusters
automatic_failover_enabled = var.cluster_mode ? true : var.number_replica > 1 ? var.automatic_failover_enabled : false
apply_immediately = var.apply_immediately

parameter_group_name = var.parameter_group_name == "" ? local.parameter_group_name : aws_elasticache_parameter_group.redis[0].name

num_cache_clusters = var.cluster_mode ? null : var.number_replica

num_node_groups = var.cluster_mode ? var.number_shard : null
replicas_per_node_group = var.cluster_mode ? var.number_replica : null


tags = var.tags
}
6 changes: 5 additions & 1 deletion security-groups.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# this security group for ecs - Traffic to the ECS cluster should only come from the ALB
locals {
security_group_name = var.security_group_name == "" ? "${var.namespace}" : "${var.namespace}_${var.security_group_name}"
}

resource "aws_security_group" "redis-security-group" {
name = var.security_group_name
name = local.security_group_name
vpc_id = var.vpc_id

ingress {
Expand Down
60 changes: 42 additions & 18 deletions variables.tf
Original file line number Diff line number Diff line change
@@ -1,47 +1,57 @@
variable "namespace" {
}

variable "num_cache_clusters" {
description = "Number of cache cluster to create (will be support at version 1 or above)"
default = 1
}

variable "cluster_id" {
description = "cluster name"
default = "redis-cluster"
default = "redis-cluster"
}

variable "cluster_description" {
description = "cluster description"
default = ""
default = ""
}

variable "port" {
description = "running port"
default = 6379
}

variable "automatic_failover_enabled" {
description = ""
default = true
default = 6379
}

variable "security_group_name" {
default = ""
description = "redis security group name"
}

variable "replicas_per_node_group" {
description = "number of replicas run per node group"
variable "subnet_name" {
default = ""
}

variable "parameter_group_name" {
description = "parameter group name"
variable "family" {
default = "redis6.x"
}

variable "node_type" {
description = "node type"
}

variable "cluster_mode" {
default = false
}

variable "automatic_failover_enabled" {
description = ""
default = false
}

variable "number_replica" {
description = ""
default = 2
}

variable "number_shard" {
default = 2
description = ""
}

variable "subnet_ids" {
description = "subnets"
}
Expand All @@ -52,5 +62,19 @@ variable "vpc_id" {

variable "tags" {
description = "tags"
type = map(string)
type = map(string)
}


variable "apply_immediately" {
default = false
}

variable "parameter_group_name" {
default = ""
}


variable "parameter" {
default = []
}
2 changes: 1 addition & 1 deletion versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.27"
version = "~> 4.11.0"
}
}
}

0 comments on commit dcc4470

Please sign in to comment.