Terraform チートシート - 有用なコマンドと例
すべての Terraform コマンドのリスト
目次
ここに、Terraformのチートシートがあります。これは、必須のコマンド、構成要素、リソース管理、モジュール、変数、ステートの処理、およびベストプラクティスが含まれています。
Terraformは、HashiCorpによって開発されたオープンソースのインフラストラクチャ・アス・コード(IaC)ツールです。このツールは、宣言型の構成ファイルを使用して、複数のクラウドプロバイダー(例:AWS、Azure、GCP)にわたるインフラストラクチャを定義およびプロビジョニングできます。Terraformの主な目的は、インフラストラクチャのプロビジョニングを自動化し、一貫性を確保し、手動のエラーを減らすことです。Terraformは、マルチクラウド、モジュール型、ステート駆動型のワークフローをサポートしており、現代のDevOps実践の中心的なツールとなっています。
Terraformの主な利点:
- 宣言型構文: コードで望ましいインフラストラクチャの状態を定義できます。
- プロバイダ非依存性: AWS、Azure、GCP、Kubernetesなど、さまざまなプロバイダで動作します。
- ステート管理: インフラストラクチャの変更を追跡し、競合を回避します。
インストールとセットアップガイド
https://developer.hashicorp.com/terraform/tutorials#get-started
Terraformのインストールプロセスは非常に簡単です。
-
Linux (Ubuntu/Debian):
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install terraform
-
Windows (WSL):
wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip unzip terraform.zip
-
macOS (Homebrew):
brew install terraform
確認
terraform --version
Terraform CLI コマンド
ここにすべてのTerraformコマンドのリストがあります:
コマンド | 説明 |
---|---|
terraform init |
新しいまたは既存のTerraform構成ディレクトリを初期化します |
terraform validate |
構成が有効かどうかを確認します |
terraform plan |
変更を適用せずに実行計画を表示します |
terraform apply |
望ましい状態に達するために必要な変更を適用します |
terraform destroy |
Terraformで管理されているインフラストラクチャを破棄します |
terraform fmt |
標準形式に構成ファイルを再フォーマットします |
terraform show |
現在の状態または計画を表示します |
terraform refresh |
実際のインフラストラクチャで状態を更新します |
terraform providers |
構成で使用されているプロバイダを表示します |
terraform graph |
リソースの依存関係をグラフとして可視化します |
terraform workspace list |
利用可能なすべてのワークスペースを一覧表示します |
terraform workspace new |
新しいワークスペースを作成します |
terraform workspace select |
指定されたワークスペースに切り替えます |
terraform workspace show |
現在のワークスペースの名前を表示します |
terraform workspace delete |
指定されたワークスペースを削除します |
terraform output |
状態ファイルからの出力値を表示します |
terraform import |
既存のリソースをTerraformにインポートします |
terraform taint |
次のapplyで再作成されるようにリソースをマークします |
terraform untaint |
リソースを汚染解除します |
terraform state list |
状態ファイル内のリソースを一覧表示します |
terraform state show |
状態内の単一リソースの属性を表示します |
構成の基本
ファイル拡張子
.tf
: 主な構成ファイル(HCL構文).tfvars
: 変数の値
Terraform ブロックの種類
- プロバイダの例
provider "aws" { region = "us-east-1" }
- リソースの例
resource "aws_instance" "web" { ami = "ami-0abcdef" instance_type = "t2.micro" }
- 変数の例
variable "instance_count" { type = number default = 2 }
- 出力の例
output "instance_ip" { value = aws_instance.web.public_ip }
- モジュールの例
module "vpc" { source = "./modules/vpc" cidr_block = var.vpc_cidr }
変数の使用
- 変数の宣言
variable "region" { description = "AWSリージョン" default = "us-east-1" }
- 値の割り当て
- CLI:
terraform apply -var="region=us-west-2"
- tfvarsファイル:
terraform apply -var-file="prod.tfvars"
- CLI:
- 型:
string
,number
,bool
,list
,map
,object
ステートの管理
- ステートファイル:
terraform.tfstate
- リモートステート(S3の例)
backend "s3" { bucket = "my-tf-state" key = "state.tfstate" region = "us-east-1" }
- ステートの表示:
terraform show
terraform state list
ループと条件
- カウント
resource "aws_instance" "web" { count = 3 ... }
- for_each
resource "aws_s3_bucket" "b" { for_each = var.bucket_names bucket = each.value }
- 条件
instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
関数
- 文字列の補間:
resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
- リスト、マップの例:
locals { my_map = { a = 1, b = 2 } }
プロビジョナラー
リソースの初期設定に使用されます。例:
resource "aws_instance" "web" {
...
provisioner "local-exec" {
command = "echo インスタンスが作成されました"
}
}
ベストプラクティス
- すべての
.tf
ファイルをバージョン管理してください - プロバイダのバージョンをロックして、一貫したデプロイを保証してください
- リモートバックエンドを使用してステート管理(S3、Azure Blobなど)
- リモートバックエンドのステートファイルを暗号化してください
- 再利用可能なモジュールを使用してインフラストラクチャをモジュール化してください
- 構成を文書化してください
- 本番環境にデプロイする前にステージング環境でテストしてください
その他の参考資料
- ヘルプ:
terraform --help
または[command] --help
でコマンド固有のヘルプ - デバッグ:
TF_LOG=INFO
またはTF_LOG=DEBUG
を設定して詳細なログを取得 - フォーマット:
terraform fmt
このチートシートは、Terraformの使用に関する最も一般的で高度な側面を素早くアクセスできるリファレンスを提供しており、初心者から上級者まで実用的です。 良い一日をお過ごしください!
有用なリンク
- https://developer.hashicorp.com/terraform
- Dockerチートシート
- Docker Composeチートシート - 例付きで最も役立つコマンド
- Kubernetesチートシート
- FlutterプロジェクトとバックエンドをAWS Amplifyにデプロイ
- Hugoで生成されたウェブサイトをAWS S3にデプロイ
- AWS Lambdaのパフォーマンス: JavaScript vs Python vs Golang
- AWS SAMとレイヤードLambda(Python)
- AWS SAM + AWS SQS + Python PowerTools
- Minio - AWS S3の代替。Minioの概要とインストール