Open2

Terraform Tips集

ねこぉねこぉ

マルチアカウントでリソースを構築したい

module やresource に providers を明示的に定義.

  • provider.tf
# providerを複数定義する
provider "aws" {
  region = "us-east-1"
  alias  = "uses1"
}

provider "aws" {
  region = "us-east-1"
  alias  = "uses1"
}
   :
   :
  • main.tf
module "vpc" {
  providers = { aws = aws.apne1 }   # providersでリソース作成するリージョンを明示的に指定
  source    = "./modules/vpc/network"
         :
         :
}

module "r53" {
  providers = { aws = aws.uses1 }
  source    = "./modules/route53/record"
         :
         :
}

ねこぉねこぉ

for_eachする 形式いろいろ

  • map の場合は, そのまま使える
locals { 
  list_rtb_prefix = {"dmz", "app", "db", "edp"}
}

resource "aws_route_table" "this" {
  for_each = local.list_rtb_prefix
}
  • listの場合は, tosetを使う. for_each はlmapに対応しているのでlist -> mapへ変換する.
locals { 
  list_rtb_prefix = [ "dmz", "app", "db", "edp"]
}

resource "aws_route_table" "this" {
  for_each = toset(local.list_rtb_prefix)
}