-
-
Notifications
You must be signed in to change notification settings - Fork 254
Description
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]
}