使用Terraform GCP Memorystore模块启用Redis只读副本遇参数错误求助
问题解决:Terraform Google Memorystore模块启用只读副本报错
报错原因
你使用的terraform-google-memorystore 4.0.0版本未将replica_count和read_replicas_mode作为模块输入变量暴露,所以直接在模块调用中传入这两个参数会触发"Unsupported argument"错误。虽然底层google_redis_instance资源本身支持这两个参数,但该版本模块没有提供对应的变量配置入口。
解决方案
方案1:升级模块到支持只读副本的版本
后续版本的terraform-google-memorystore模块已添加了只读副本相关的输入变量,建议升级到最新稳定版(比如>=5.0.0)。升级后,模块配置可保留原有逻辑,仅更新版本号:
module "memorystore_replica" { source = "terraform-google-modules/memorystore/google" version = "~> 6.0" # 使用最新稳定版,可按需调整 redis_version = "REDIS_6_X" name = "${module.project.project_name}-redisreadreplica-${module.locations.region_codes[var.region]}-instance" project = module.project.project_id region = var.region authorized_network = local.vpc connect_mode = var.redis_connection_type memory_size_gb = var.redis_memory_size_gb transit_encryption_mode = "DISABLED" labels = var.labels replica_count = 2 read_replicas_mode = "READ_REPLICAS_ENABLED" }
方案2:直接使用底层google_redis_instance资源(无需依赖模块)
如果不想升级模块,可以绕过封装的模块,直接调用Terraform GCP Provider的原生资源,手动配置只读副本参数:
resource "google_redis_instance" "replica" { depends_on = [module.enable_apis] project = module.project.project_id name = "${module.project.project_name}-redisreadreplica-${module.locations.region_codes[var.region]}-instance" tier = "STANDARD_HA" # 只读副本要求实例层级为STANDARD_HA memory_size_gb = var.redis_memory_size_gb connect_mode = var.redis_connection_type region = var.region authorized_network = local.vpc redis_version = "REDIS_6_X" transit_encryption_mode = "DISABLED" labels = var.labels replica_count = 2 read_replicas_mode = "READ_REPLICAS_ENABLED" }
注意:启用只读副本必须将实例层级设置为
STANDARD_HA,若之前使用BASIC层级,需先完成层级调整。
内容的提问来源于stack exchange,提问作者krish
相关产品推荐
相关产品推荐

