在Terraform中,可以通过命令行界面(CLI)传递参数给Terraform配置文件中的变量。如果你有一个object
类型的变量,并希望通过CLI传递值给它,你可以使用-var
或-var-file
选项来实现。
Terraform的object
类型变量允许你定义一个复杂的结构,它可以包含多个属性。例如:
variable "example_object" {
type = object({
property1 = string
property2 = number
property3 = list(string)
})
default = {
property1 = "default_value"
property2 = 0
property3 = []
}
}
要通过CLI传递值给object
类型的变量,你可以使用-var
选项,并传递一个JSON对象。例如:
terraform apply -var='example_object={"property1":"value1","property2":123,"property3":["item1","item2"]}'
如果你在传递object
类型的变量时遇到问题,可能是因为JSON格式不正确或者属性名称与Terraform配置中的定义不匹配。
问题示例:传递的JSON格式错误。
解决方法:确保JSON格式正确无误。可以使用在线JSON验证工具来检查你的JSON字符串。
问题示例:属性名称拼写错误或类型不匹配。
解决方法:仔细检查传递的JSON对象中的属性名称和类型,确保它们与Terraform配置文件中的变量定义完全一致。
假设你有以下的Terraform配置文件main.tf
:
provider "example" {}
resource "example_resource" "example" {
property1 = var.example_object.property1
property2 = var.example_object.property2
property3 = var.example_object.property3
}
variable "example_object" {
type = object({
property1 = string
property2 = number
property3 = list(string)
})
}
你可以使用以下命令来应用配置,并传递object
类型的变量:
terraform apply -var='example_object={"property1":"Hello","property2":42,"property3":["foo","bar"]}'
确保在运行Terraform命令之前,你的工作目录中包含了所有的Terraform配置文件,并且你的Terraform环境已经正确初始化。
领取专属 10元无门槛券
手把手带您无忧上云