【发布时间】:2019-03-20 13:55:36
【问题描述】:
我创建了以下 terraform.tfvars 文件:
ec2_image = "ami-00035f41c82244dab"
ec2_instance_type = "t2.micro"
并在 main.tf 文件中按如下方式使用它:
resource "aws_instance" "OneServer" {
ami = "${var.ec2_image}"
instance_type = "${var.ec2_instance_type}"
}
然后我执行“terraform plan”命令,它抱怨:
错误:资源“aws_instance.OneServer”配置:未知变量 参考:'ec2_image';用“变量”块定义它
所以我把main.tf文件改成如下:
variable "ec2_image" {}
variable "ec2_instance_type" {}
resource "aws_instance" "OneServer" {
ami = "${var.ec2_image}"
instance_type = "${var.ec2_instance_type}"
}
那么命令“terraform plan”就可以正常工作了。
我不明白为什么需要这些变量块。这样做有什么意义?
【问题讨论】:
-
我知道,显然看过了。但是在哪里提到-当使用 tfvars 文件时- tf 文件中仍然需要变量块。我完全理解使用 tf 变量文件时需要变量块,但使用 tfvars 变量文件时不需要。
-
我不确定我是否理解您的后续问题,但@MattSchuchard 发布的链接对此进行了解释。您必须在链接语法中定义所有输入变量(可选地包括默认值和/或类型),然后如果您愿意,您可以使用包括 tfvars 文件在内的多个选项或通过 CLI 传递 var 来覆盖/设置这些变量的值或使用
TF_VAR_环境变量。
标签: terraform