Terraform跨子模块传递输出值遇必填参数缺失错误
问题解决方案
1. 修正根模块调用AKS时的参数名
错误核心是根模块传递给AKS模块的参数名和AKS模块定义的变量名不匹配:你在根模块里传的是serviceprinciple_id和serviceprinciple_key,但AKS模块需要的是client_id和client_secret,直接修改参数名即可:
module "aks" { source = "./modules/aks/" service_principal_name = var.service_principal_name client_id = module.ServicePrincipal.client_id # 对应AKS模块的var.client_id client_secret = module.ServicePrincipal.client_secret # 对应AKS模块的var.client_secret location = var.location resource_group_name = var.rgname depends_on = [ module.ServicePrincipal ] }
2. 修正ServicePrincipal模块的client_secret输出类型
你的ServicePrincipal模块输出的client_secret是列表类型(用了*.value语法),但AKS模块的client_secret变量应该是字符串类型,需要取列表第一个元素转为字符串:
output "client_secret" { description = "Password for service principal." value = azuread_service_principal_password.main[0].value # 取第一个元素,转为字符串 }
3. 确认AKS模块的变量定义
确保AKS模块的variables.tf里正确定义了必填的client_id和client_secret变量,示例:
variable "client_id" { description = "Service Principal Client ID for AKS" type = string nullable = false # 标记为必填 } variable "client_secret" { description = "Service Principal Client Secret for AKS" type = string nullable = false sensitive = true # 建议标记为敏感,避免输出泄露 }
内容的提问来源于stack exchange,提问作者piyush sachdeva
相关产品推荐
相关产品推荐

