環境にワークスペースを使用する
Terraform のワークスペースを使って、同じ構成内で異なる環境(dev、staging、prod など)の状態を分けて管理する方法を学びます。
「環境にワークスペースを使用する」はCoddyKit上の無料Terraform Infrastructure as Codeレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTerraform Infrastructure as Code学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Terraform Infrastructure as Codeコースには全4レッスンが含まれています。
Terraformワークスペースとは
Terraformのワークスペースを使うと、同じTerraform設定に対して複数の個別のstateを管理できます。「dev」「staging」「prod」のような独立した環境と考えるとよいでしょう。
つまり、1組の.tfファイルを使い、コードを変更せずに異なる場所へインフラをデプロイできます。これにより、再利用性と一貫性が高まります。
「default」ワークスペース
ディレクトリで初めてTerraformを初期化するとき(terraform initを使用)、自動的にdefaultワークスペースが使用されます。
別のワークスペースを作成して選択しない限り、最初に実行するterraform applyのstateはこのdefaultワークスペースに保存されます。このワークスペースは常に存在します。
新しいワークスペースを作成する
新しい環境を作成するには、terraform workspace newコマンドを使用します。このコマンドを実行すると、現在のコンテキストも作成したワークスペースに自動的に切り替わります。
devワークスペースを作成してみましょう。
terraform workspace new devこれでTerraformは、このdev環境用に個別のstateを作成します。
利用可能なワークスペースを一覧表示する
terraform workspace listコマンドを使用すると、現在の設定ディレクトリで利用できるすべてのワークスペースを確認できます。
現在アクティブなワークスペースにはアスタリスク(*)が付き、異なる環境を把握しやすくなります。
terraform workspace listワークスペースを切り替える
既存のワークスペースを切り替えるには、terraform workspace selectコマンドの後にワークスペース名を指定します。このコマンドでアクティブな環境が変わります。
defaultワークスペースに戻してみましょう。
terraform workspace select defaultこれ以降のTerraform操作は、default環境のstateを対象にします。
「terraform.workspace」を使用する
組み込みのterraform.workspace変数で現在のワークスペース名を参照すると、設定を動的にできます。リソース名や環境固有のタグを設定する場合に最適です。
この例を実行してみましょう。まずterraform init、次にterraform workspace new dev、最後にterraform applyを実行します。バケット名とタグを確認してください。
provider "aws" {
region = "us-east-1" # Or your preferred region
}
resource "aws_s3_bucket" "example" {
bucket = "my-unique-bucket-${terraform.workspace}-12345"
acl = "private"
tags = {
Environment = terraform.workspace
ManagedBy = "CoddyKit"
}
}
output "bucket_name" {
description = "Name of the S3 bucket created."
value = aws_s3_bucket.example.bucket
}分離されたstateファイル
ワークスペースで最も重要なのは、それぞれが完全に分離されたstateファイルを保持することです。
つまり、同じ設定ファイルで定義されていても、devワークスペースにデプロイしたリソースがprodワークスペースのリソースに影響することはありません。Terraformは、作業ディレクトリ内の非表示ディレクトリ(.terraform/environments)でこれらのstateファイルを管理します。
ワークスペースを削除する
環境が不要になったら、terraform workspace delete <name>を使用してそのワークスペースを削除できます。
- 重要:現在アクティブなワークスペースは削除できません。
- 必ず確認してください:ワークスペースを削除する前に、
terraform destroyを使用して関連するすべてのリソースを削除してください。そうしないと、孤立したリソースが残る可能性があります。
terraform workspace select default
terraform workspace delete devワークスペースと個別のディレクトリの比較
ワークスペースは同じ設定の小さな差異を管理するのに適していますが、常に最適な選択とは限りません。次の点を考慮してください。
- ワークスペース:同じ中核インフラ設計で、環境ごとの差異(リソース数やタグなど)が小さい場合に適しています。
- 個別のディレクトリ:インフラ設計が大きく異なる場合や、異なるチームが完全に分離された環境を管理する場合に適しています。
プロジェクトの複雑さとチーム構成に最も合った方法を選択してください。
ワークスペースの確認
Terraformワークスペースについて学びました。理解度を確認してみましょう。
振り返り:環境向けのワークスペース
よくできました。単一の設定から複数の環境を管理できる強力な機能、Terraformワークスペースについて学びました。次の重要なポイントを覚えておきましょう。
- ワークスペースは、環境(devやprodなど)ごとに分離されたstateファイルを提供します。
terraform workspace new、list、selectを使用して管理します。terraform.workspace変数を使うと、環境に応じて設定を動的に変更できます。- 孤立したインフラが残らないよう、ワークスペースを削除する前に必ずリソースを削除してください。
これにより、柔軟で整理されたインフラのデプロイが可能になります。
よくある質問
「環境にワークスペースを使用する」レッスンは無料ですか?
はい。「環境にワークスペースを使用する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Terraform Infrastructure as Codeコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Terraform Infrastructure as Codeコースには全4レッスンが含まれています。
「環境にワークスペースを使用する」で何を学びますか?
Terraform のワークスペースを使って、同じ構成内で異なる環境(dev、staging、prod など)の状態を分けて管理する方法を学びます。 ブラウザで直接実行するハンズオンコードでTerraform Infrastructure as Codeを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Terraform Infrastructure as Codeを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTerraform Infrastructure as Codeは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「環境にワークスペースを使用する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTerraform Infrastructure as Codeレッスンでコードを書いて実行できますか?
はい。すべてのTerraform Infrastructure as Codeレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Terraformモジュールの概要
- 再利用可能なモジュールの作成
- 環境にワークスペースを使用する
- レジストリへのモジュール公開