-1

我的 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 文件中获取值,但不知何故它不是。谁能建议我还能错过什么?

4

1 回答 1

0

听起来您缺少变量声明...

从您的文件结构中:

├── deploy
│      ├── dev.tfvars
│      └── qa.tfvars
├── modules
│   ├── private
│   │   ├── bastion.tf
│       ├── db.tf
│   │   └── variables.tf
│   └── public
│       ├── web.tf
│       └── variables.tf
├── main.tf

每个级别似乎都没有一个伴侣variables.tf需要main.tf声明将由资源或子模块使用的变量。

如果您将代码上传到 GitHub 并发布链接,我可以帮助您解除封锁。

于 2020-08-21T13:01:17.900 回答