Skip to content

Trying to upgrade regional redis to global redis but having issue #265

@apunati

Description

@apunati

Describe the Bug

We are trying to upgrade the regional redis cluster to global redis where we are using cloud-pose community module. We added required resource block for global replication group creation. But during the plan we are getting below error.

Error: Invalid count argument

on .terraform/modules/elasticache_secondary/main.tf line 136, in resource "aws_elasticache_parameter_group" "default":
136: count = local.enabled && local.create_parameter_group ? 1 : 0

The "count" value depends on resource attributes that cannot be determined
until apply, so Terraform cannot predict how many instances will be created.
To work around this, use the -target argument to first apply only the
resources that the count depends on.

Note; We are using latest version even though same issue.

Expected Behavior

Ideally it should create the global replication group and associated with replication group. But its not happening and through error from community module.

Steps to Reproduce

Just Need to use global replication resource block which I added below and associate with replication group
resource "aws_elasticache_global_replication_group" "example" {
for_each = var.required_inputs

global_replication_group_id_suffix = try(each.value.global_replication_group_suffix, var.default_inputs.global_replication_group_suffix, "global")

Use the replication group ID from the CloudPosse module with validation

primary_replication_group_id = try(module.elasticache[each.key].id, "")

depends_on = [module.elasticache]
}

Screenshots

No response

Environment

-OS: [Linux]
Module verison: 1.9.2

Additional Context

Trying to creating replication group with cloud pose module

module "elasticache" {
source = "cloudposse/elasticache-redis/aws"
version = "1.9.2"
for_each = var.required_inputs

name = try(each.value.name, var.default_inputs.name, null)
description = try(each.value.description, var.default_inputs.description, null)
vpc_id = try(each.value.vpc_id, var.default_inputs.vpc_id)
availability_zones = try(each.value.availability_zones, var.default_inputs.availability_zones, [])
subnets = try(each.value.subnets, var.default_inputs.subnets, [])
multi_az_enabled = try(each.value.multi_az_enabled, var.default_inputs.multi_az_enabled, false)
at_rest_encryption_enabled = try(each.value.at_rest_encryption_enabled, var.default_inputs.at_rest_encryption_enabled, true)
transit_encryption_enabled = try(each.value.transit_encryption_enabled, var.default_inputs.transit_encryption_enabled, false)
cluster_mode_enabled = try(each.value.cluster_mode_enabled, var.default_inputs.cluster_mode_enabled, false)
cluster_size = try(each.value.cluster_size, var.default_inputs.cluster_size, 1)
cluster_mode_num_node_groups = try(each.value.cluster_mode_num_node_groups, var.default_inputs.cluster_mode_num_node_groups, 0)
cluster_mode_replicas_per_node_group = try(each.value.cluster_mode_replicas_per_node_group, var.default_inputs.cluster_mode_replicas_per_node_group, 0)
instance_type = try(each.value.instance_type, var.default_inputs.instance_type, "cache.t3.medium")
automatic_failover_enabled = try(each.value.automatic_failover_enabled, var.default_inputs.automatic_failover_enabled, false)
apply_immediately = try(each.value.apply_immediately, var.default_inputs.apply_immediately, true)
engine_version = try(each.value.engine_version, var.default_inputs.engine_version, "7.1")
family = try(each.value.family, var.default_inputs.family, "redis7.x")
cloudwatch_metric_alarms_enabled = try(each.value.cloudwatch_metric_alarms_enabled, var.default_inputs.cloudwatch_metric_alarms_enabled, false)
create_security_group = try(each.value.create_security_group, var.default_inputs.create_security_group, true)
additional_security_group_rules = try(each.value.additional_security_group_rules, var.default_inputs.additional_security_group_rules, [])
security_group_create_before_destroy = try(each.value.security_group_create_before_destroy, var.default_inputs.security_group_create_before_destroy, true)
security_group_name = try(each.value.security_group_name, var.default_inputs.security_group_name, [])
snapshot_window = try(each.value.snapshot_window, var.default_inputs.snapshot_window, "06:30-07:30")
snapshot_retention_limit = try(each.value.snapshot_retention_limit, var.default_inputs.snapshot_retention_limit, 0)
parameter = try(each.value.parameter, var.default_inputs.parameter, [])
context = try(each.value.context, var.default_inputs.context, {})
parameter_group_description = try(each.value.parameter_group_description, var.default_inputs.parameter_group_description, "")
}

and associating with below resource block

resource "aws_elasticache_global_replication_group" "example" {
for_each = var.required_inputs

global_replication_group_id_suffix = try(each.value.global_replication_group_suffix, var.default_inputs.global_replication_group_suffix, "global")

Use the replication group ID from the CloudPosse module with validation

primary_replication_group_id = try(module.elasticache[each.key].id, "")

depends_on = [module.elasticache]
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug🐛 An issue with the system

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions