如何在调用Terraform自定义模块时修改嵌套参数值?
解决Terraform自定义模块中修改GitHub分支保护嵌套参数的问题
问题本质
你的自定义模块仅通过var.approval_count变量绑定了github_branch_protection_v3资源中required_pull_request_reviews嵌套块的required_approving_review_count参数,并未对外暴露required_approving_review_count单独参数或整个嵌套块的输入接口,因此直接传入这些未定义的参数会触发「参数不存在」错误。
解决方案
方案1:使用模块已暴露的变量直接传值(最简方式)
既然模块已经通过var.approval_count控制目标参数,调用模块时直接给该变量赋值即可覆盖默认值:
module "branch_protection" { source = "./path/to/your/module" # 填写模块要求的其他必填参数 approval_count = 2 # 替换为你需要的审批数量 }
方案2:修改模块实现更灵活的嵌套块控制(如需调整多个参数)
如果需要同时修改required_pull_request_reviews里的其他参数(如dismiss_stale_reviews),可以修改模块代码,添加一个可选的嵌套块变量:
- 在模块的
variables.tf中新增变量:
variable "approval_count" { type = number default = 1 description = "默认PR审批数量" } variable "pr_review_settings" { type = object({ required_approving_review_count = number dismiss_stale_reviews = optional(bool, false) require_code_owner_reviews = optional(bool, false) # 按需添加其他需要控制的参数 }) default = { required_approving_review_count = var.approval_count } description = "PR评审规则配置,可覆盖默认值" }
- 修改模块内的资源配置,引用新增的变量:
resource "github_branch_protection_v3" "main" { # 填写资源的其他必填参数(如repository、branch等) required_pull_request_reviews { required_approving_review_count = var.pr_review_settings.required_approving_review_count dismiss_stale_reviews = var.pr_review_settings.dismiss_stale_reviews require_code_owner_reviews = var.pr_review_settings.require_code_owner_reviews } }
- 调用模块时,可按需覆盖单个或多个参数:
module "branch_protection" { source = "./path/to/your/module" # 仅修改审批数量 pr_review_settings = { required_approving_review_count = 3 } # 或同时修改多个参数 # pr_review_settings = { # required_approving_review_count = 2 # dismiss_stale_reviews = true # require_code_owner_reviews = true # } }
注意事项
- Terraform严格校验模块输入,只有在模块
variables.tf中定义的参数才能被传入,不要尝试传递模块未暴露的参数。 - 如果模块由第三方维护无法修改代码,只能使用模块已提供的
approval_count变量调整值,或联系维护者添加更灵活的输入接口。
内容的提问来源于stack exchange,提问作者TheJackson
相关产品推荐
相关产品推荐

