Terraform 未能识别 locals.tf 中的变量

77次阅读
没有评论

问题描述

在使用 Terraform 时遇到了一个问题,他在 locals.tf 文件中定义了一个变量 certificate_arn,但在运行计划(plan)时,Terraform 仍然要求用户提供 certificate_arn 的值。用户想知道出了什么问题。

解决方案

请注意以下操作可能因版本差异而有所不同,建议在操作前备份你的文件。

方案

用户遇到的问题是因为他在 variables.tf 文件中将 certificate_arn 定义为了一个变量。虽然他在 locals.tf 中正确地定义了 certificate_arn,并在 main.tf 中引用了它,但是 Terraform 会因为变量定义而要求用户提供值。解决这个问题的方法是删除 certificate_arn 的变量定义。
以下是解决问题的步骤:
1. 打开 variables.tf 文件。
2. 删除 variable “certificate_arn” 的定义部分。你可以删除整个块,或者注释掉这部分代码。
3. 保存文件并重新运行 Terraform 命令。

示例

以下是 variables.tf 文件修改前后的示例代码:

修改前 variables.tf:

variable "certificate_arn" {
  description = "The ARN for the certificate"
  type        = string
}

修改后 variables.tf:

# variable "certificate_arn" {
#   description = "The ARN for the certificate"
#   type        = string
# }

通过删除或注释掉 certificate_arn 的变量定义,Terraform 将不再要求用户提供该值,而会直接使用 locals.tf 中定义的值。

请注意,如果将来你决定将 certificate_arn 转换为变量,你需要删除 locals 中的定义,并在 main.tf 中使用 var.certificate_arn 来引用它。

作者评论:
1. AH. 我之前在某个地方看到过 variables.tf 是用于声明变量,而 locals.tf 用于赋值。我会找到那个问题并更新您的答案!谢谢!
2. 你也可以将所有内容放在同一个文件中,Terraform 并不太在乎文件的命名。

希望这个解决方案能帮助你解决 Terraform 中的问题。如果你有任何其他疑问,请随时提问!

正文完