我的 Terraform 目录结构类似于:
├── deploy
│ ├── dev.tfvars
│ └── qa.tfvars
├── modules
│ ├── private
│ │ ├── bastion.tf
│ ├── db.tf
│ │ └── variables.tf
│ └── public
│ ├── web.tf
│ └── variables.tf
├── main.tf
在bastion.tf中,我试图从variables.tf中调用一个变量,如下所示:
resource "aws_eip" "bastion" {
instance = "var.eip"
vpc = true
}
其中,eip = 10.x.x.x
设置在dev.tfvars中。
main.tf的配置如下:
provider "aws" {}
terraform {
backend "s3" {}
}
module "private" {
source = "./modules/private"
}
在运行terraform validate时,它给了我一个错误 - The argument "eip" is required, but no definition was found。即使我尝试将 eip 提供给模块,例如:
module "private" {
source = "./modules/private"
eip = var.eip
}
尚未声明名为“eip”的输入变量。这个变量可以用变量“eip”{}块声明
我已经在variables.tfvariable "eip" {}
中定义了它从.tfvars 文件中获取值,但不知何故它不是。谁能建议我还能错过什么?