LoginSignup
0
1

More than 1 year has passed since last update.

TerraformでVPCを構築しよう

Last updated at Posted at 2022-10-16

はじめに

Terraformを利用して、VPCを構築するテンプレートのサンプルです。

Terraformのバージョンは v1.1.6とする。

コードはGitHubにもあります。

今回は、akane というシステムの dev 環境を想定しています。
同じ構成で違う環境を作成する場合は、{環境名}のディレクトリを別途作成します。

ディレクトリ構成
akane (システム)
  ├── common (共通テンプレート)
  │   ├── network.tf (スタック)
  │   ├── outputs.tf (リソースのアプトプット生成)
  │   └── variables.tf (パラメータ型定義)
  └── dev (dev 環境)
      └── main (dev 環境のテンプレート)
          ├── locals.tf (dev 環境の共通パラメータ)
          ├── main.tf (dev 環境のパラメータ)
          ├── outputs.tf (リソースのアプトプット出力)
          └── providers.tf (AWS プロバイダー)

AWS リソース構築内容

  • VPC (10.0.0.0/16)

AWS システム構成図

vpc.png

実行環境の準備

AWSでTerraformを動かすための設定を参考にしてください。

AWS リソース構築手順

  1. 下記を実行してスタックを作成

    cd akane/dev/main
    terraform init
    terraform apply
    
  2. 下記を実行してスタックを削除

    cd akane/dev/main
    terraform destroy
    

構築テンプレート

1. 共通テンプレート

network.tf
module "vpc" {
  source = "terraform-aws-modules/vpc/aws"

  name = "${var.system_name}-${var.env_type}-vpc"
  cidr = var.vpc_cidr
}
outputs.tf
##############################
# Network
##############################
output "network_vpc_id" {
  value       = module.vpc.vpc_id
  description = "The name of the VPC id."
}
variables.tf
variable "system_name" {
  type = string
}

variable "env_type" {
  type = string
}

variable "vpc_cidr" {
  type = string
}

2. 環境毎のテンプレート

locals.tf
locals {
  tags = {
    "EnvType"     = "dev"
    "SystemName"  = "akane"
    "Terraform"   = "true"
  }
}
main.tf
module "common" {
  source = "../../common"

  system_name = local.tags.SystemName
  env_type    = local.tags.EnvType
  vpc_cidr    = "10.0.0.0/16"
}

outputs.tf
##############################
# Network
##############################
output "network_vpc_id" {
  value       = module.common.network_vpc_id
  description = "The name of the VPC id."
}
providers.tf
provider "aws" {
  region = "ap-northeast-1"
  default_tags {
    tags = local.tags
  }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1