5

私は Terraform を初めて使用し、2 つのサブネットと VPC を使用してインフラストラクチャを構築しようとしています。2つのモジュールを作成しました

  • VPC
  • サブネット

VPC モジュールは VPC を作成し、出力として vpc_id を返します。サブネット モジュールで使用しようとしているのと同じ vpc_id を返しますが、テラフォーム プランを実行すると、vpc_id の入力を求められます。

VPCモジュールの出力値からvpc_idが欲しいのですが、誰か助けてください。

以下はコードです、

ルート tf ファイル、

 provider "aws" {
  shared_credentials_file = var.shared_cred
  profile                 = "default" 
  region                  = var.aws_region
}

module "vpc" {
  source = "./vpc"
  name   = "terraformVPC"
  cidr   = "10.50.40.0/27"
}

module "private_subnet" {
  source      = "./subnet"
  subnet_name = "private_subnet"
  subnet_cidr = "10.50.40.16/28"
  #VPC_id = aws_vpc.moduleVPC.id
  VPCid = module.vpc.outvpc_id # this is the issue
}

module "public_subnet" {
  source      = "./subnet"
  subnet_name = "public_subnet"
  subnet_cidr = "10.50.40.0/28"
  VPCid      = module.vpc.outvpc_id
}

サブネット リソース

resource "aws_subnet" "module_subnet" {
  cidr_block = var.subnet_cidr
  vpc_id     = var.VPCid

  tags = {
    Name = var.subnet_name
  }
}

サブネットモジュールの変数宣言

variable "subnet_name" {
  description = " define th subnet name"
}

variable "subnet_cidr" {
  description = "define th subnet cidr block"
}

variable "VPCid" {
  description = "Assign VPC id to subnet"
}

VPC 出力

output "outvpc_id" {
  value = "${aws_vpc.moduleVPC.id}"
}
4

3 に答える 3