Open5
Terraformのドキュメントを読む

環境
Terraform v1.12.1 on linux_amd64

Terraformとは
Terraformはクラウドやオンプレミスのリソースを人間が読みやすい構成ファイルに定義し、バージョン管理、再利用、共有することができるIaC (Infrastructure as Code)ツールである。
コアとなるTerraformのワークフローは次の3つの段階からなる。
- Write: 構成ファイルにリソースを定義する
- Plan: Terraformが実行計画を立てるのでレビューする
- Apply: 承認すると、Terraformが依存関係を適切に考慮し、提案された操作を実行する。

Terraform言語の構文
<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {
# ブロック本体
<IDENTIFIER> = <EXPRESSION> # 引数
}
- ブロックにはブロックタイプと0個以上のラベルを持つことができる。ブロック本体には任意の数の引数とネストされたブロックを含む。
- 引数はブロック内部に記載し、名前に対して値を割り当てることができる。

terraformブロック
Terraform自体の動作を定義することができる。
-
required_version
:必要なTerraform バージョンの指定 -
required_providers
:必要なプロバイダーの指定 -
backend
:状態データファイルの保存場所の指定。cloud
ブロックと同時には定義できない。 -
cloud
:HCP Terraformまたは Terraform Enterpriseを使用する場合。backend
ブロックと同時には定義できない。
terraform {
required_version = "<version>"
required_providers {
<PROVIDER> {
source = "<provider-address>"
version = "<version-constraint>"
}
}
backend "<TYPE>" {
"<ARGUMENTS>"
}
cloud {
organization = "<organization-name>"
workspaces {
tags = [ "<tag>" ]
name = "<workspace-name>"
project = "<project-name>"
}
hostname = "app.terraform.io"
token = "<TOKEN>"
}
}

providerブロック
特定のインフラストラクチャプラットフォームとの連携方法を定義する。
設定するプロバイダーはrequired_providers
ブロックに含まれている必要がある。
ブロック本体の設定引数のほとんどはプロバイダー自身によって定義されている。
provider "google" {
project = "my-project-id"
region = "asia-northeast1"
}