TL;DR

  • リソースは、Terraform にどのインフラオブジェクトを作成・更新・削除するかを伝えるもので、resource ブロックで定義する。
  • resource "<リソースの種類>" "<ローカル名>" の形で書き、ローカル名で他のブロックから参照する。

内容

第3章 Terraformをはじめようの 3.3 節。公式ドキュメントは https://developer.hashicorp.com/terraform/language/resources 。

Terraform のリソース

リソースは、Terraform に対して、どのインフラオブジェクトを作成・更新・削除しようとしているかを伝える。対象は、コンピューティング、VPC、Web アプリケーション、データベースなどである。

リソースは resource ブロックで定義する。最初のラベルはリソースの種類で、プロバイダが提供する名前を使う。種類の名前の先頭にはプロバイダ名が付く(例: google_app_engine_application)。2 番目のラベルはローカル名で、他の resource ブロックなどからそのリソースを参照するときに使う。参照の例は、下の Google Cloud の例や、3.5 節にある。

AWS のリソース

AWS の EC2 インスタンス(aws_instance)は次のように書く。

resource "aws_instance" "web" {
  ami           = "ami-a1b2c3d4"
  instance_type = "t2.micro"
}

Google Cloud のリソース

Google App Engine のアプリケーション(google_app_engine_application)は次のように書く。project に、同じ構成で定義したプロジェクトのリソースを google_project.my_project.project_id の形で参照している。

resource "google_project" "my_project" {
  name       = "My Project"
  project_id = "your-project-id"
  org_id     = "1234567"
}
 
resource "google_app_engine_application" "app" {
  project     = google_project.my_project.project_id
  location_id = "us-central"
}

キーワード