LoginSignup
2
2

More than 1 year has passed since last update.

【GCP入門】TerraformでGCPのVPCとサブネットを作成

Last updated at Posted at 2021-11-09

GCPも少し触り始めたので、まずはVPCとサブネットをTerraformで作成してみました。

provider

credentials で認証情報を持つjsonファイルのパスを指定しています。
AWSの場合、IAMユーザーを作成し、プログラムアクセス用の access_key_idsecret_access_key をcredentialファイルにセットしますが、GCPの場合はサービスアカウントを作成し、キーファイルのパスを指定するようです。今回は、key.json という名前でホームディレクトリに配置してみました。(GOOGLE_APPLICATION_CREDENTIALSの環境変数でパスを指定してもOKです)

なお、providerで指定する project はGCPのアカウントに紐付けられるプロジェクトIDです。
業務の計画やチームの意味で使う一般的な「プロジェクト」ではありません。(最初わからなくて自由に名付けることができるのかと思ってしまった)

provider.tf
terraform {
  required_version = ">= 1.0"
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 4.0"
    }
  }
}

provider "google" {
  project     = var.gcp_project
  region      = var.region
  zone        = var.zone
  credentials = file("~/.gcp/key.json")
}

variables

とりあえず使いそうな変数を variables.tf に宣言。
prefix に環境、プロジェクト名を入れたい派なので、ローカル変数で書いています。

variables.tf
variable "gcp_project" {
  default = "Your GCP Project ID"
}

variable "project" {
  default = "Your Project Name"
}

variable "env" {
  default = "dev"
}

variable "region" {
  default = "asia-northeast1"
}

variable "zone" {
  default = "asia-northeast1a"
}

locals {
  prefix = "${var.env}-${var.project}"
}

VPCとサブネットを作成

サブネットを2つ作成してみました。
なんと、VPCにはCIDRブロックを指定するパラメータはありません。
また、以下では指定していませんが、secondary_ip_range でセカンダリのIPレンジを指定することもできます。公式ドキュメントを読んでも、プライマリ、セカンダリの使い分けがまだピンときていません。。

vpc.tf
resource "google_compute_network" "vpc" {
  name                    = "${local.prefix}-vpc"
  auto_create_subnetworks = false
  routing_mode            = "REGIONAL"
  mtu                     = 1460
}

resource "google_compute_subnetwork" "public" {
  name          = "${local.prefix}-public-subnet"
  ip_cidr_range = "10.0.11.0/24"
  network       = google_compute_network.vpc.id
}

resource "google_compute_subnetwork" "private" {
  name          = "${local.prefix}-private-subnet"
  ip_cidr_range = "10.0.21.0/24"
  network       = google_compute_network.vpc.id
}

コンソール画面を確認するとこんな感じで作成されていました。
public、privateと名付けていますが、AWSみたくルートテーブルで用途を変えれるのかなと勝手に想像しています。次はファイアウォールとルートテーブルあたりを確認してみたいと思います。
image.png

参考リンク

2
2
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
2
2