0

別のディレクトリにモジュールがあります。そこで、backend.tf を追加し、Linux 環境変数からプロバイダー データを設定します。

しかし、エラーを与えるテラフォーム。

私の構造は以下のように表示されています。

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 を呼び出します。(動的変数とデフォルト変数)

助けてください !

4

2 に答える 2

2

Terraform スクリプトの変数の値は、いくつかの異なる方法で提供できます。

入力変数の構成

環境変数を介してそれらを提供しようとしているので、必要な命名パターンに従う必要があります。

$ TF_VAR_terraform_bucket=bucket_name
$ TF_VAR_organisation=org_name

次に、実行するterraform planか、terraform applyterraform が変数をロードします。

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.tf、 、vars.tfおよびvpc.tfvpcフォルダー内にあるかどうかは、構造のフォーマットではわかりません。

module "my_vpc" {
   source = "../../vpc"
   instance_tenancy = "default"
   bucket = "${var.TERRAFORM_BUCKET}-vpc"
   profile = "${var.ORGANISATION}"
   key    = "${var.ORGANISATION}"
}
于 2019-01-15T15:37:15.490 に答える