【问题标题】:Terraform backend.tf via modulesTerraform backend.tf 通过模块
【发布时间】:2019-06-09 13:49:57
【问题描述】:

我在另一个目录中有模块。所以我想添加 backend.tf 并从 linux environment variable 设置提供程序数据。

但是 terraform 给出错误。

我的结构如下所示。

main.tf
└── vpc
├── backend.tf
├── export.sh
├── vars.tf
└── vpc.tf

## main.tf
module "my_vpc" {
      source = "../../vpc"
      instance_tenancy = "default"

}

## backend.tf
terraform {
backend "s3" {
        region = "${var.aws_region}"
        bucket = "${var.TERRAFORM_BUCKET}-vpc"
        profile = "${var.ORGANISATION}"
        key    = "${var.ORGANISATION}"

    }
 }

 provider aws {

    profile = "${var.ORGANISATION}"
    region = "${var.aws_region}"
 }

我已经从终端导出变量 ORGANISATION、REGION 和 TERRAFORM_BUCKET 变量,但它给出了这个错误:

   Error: module "my_vpc": missing required argument "aws_region"

   Error: module "my_vpc": missing required argument "TERRAFORM_BUCKET"

   Error: module "my_vpc": missing required argument "ORGANISATION"

我该如何解决这个问题?

注意:通过环境变量从模块调用 backend.tf。 (动态和默认变量)

请帮忙!

【问题讨论】:

  • 将您的变量定义为“export TF_VAR_aws_region=us-east-1”,以便正确识别。

标签: amazon-web-services terraform devops infrastructure-as-code


【解决方案1】:

Terraform 脚本中的变量值可以通过几种不同的方式提供。

Input Variable Configuration

由于您尝试通过环境变量提供它们,因此您应该遵循所需的命名模式。

$ TF_VAR_terraform_bucket=bucket_name
$ TF_VAR_organisation=org_name

然后当你执行terraform planterraform apply 时,terraform 会加载变量。

如果您没有将aws_region 变量定义为环境变量,那么您需要将其放入.tfvars 文件并使用terraform plan -var-file config.tfvars 或使用terraform plan -var us-east-1 通过命令行传递它.

这一切都假设在您的 vars.tf 文件中定义了变量。

variable "organisation" {
   type = "string"
}
variable "terraform_bucket" {
   type = "string"
}
variable "aws_region" {
   type = "string"
}

*** 编辑 1

仔细考虑您的问题,如果模块内部需要变量,那么您需要更新对模块的调用以在使用它时包含这些变量。

我无法通过您的结构格式判断backend.tfvars.tfvpc.tf 是否在vpc 文件夹中。

module "my_vpc" {
   source = "../../vpc"
   instance_tenancy = "default"
   bucket = "${var.TERRAFORM_BUCKET}-vpc"
   profile = "${var.ORGANISATION}"
   key    = "${var.ORGANISATION}"
}

【讨论】:

    【解决方案2】:

    这就是 docs 关于后端配置中的变量的说法。

    只能指定一个后端,配置不能 包含插值。 Terraform 将对此进行验证

    这可能会有所帮助 - #17288

    【讨论】:

      猜你喜欢
      • 2019-10-19
      • 2021-04-28
      • 1970-01-01
      • 2021-02-12
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 2020-02-05
      相关资源
      最近更新 更多