ファーストビュー画像
ヘッダーロゴ
ホームアイコン
>
>
【Terraform】tfstateファイルをS3で管理する
インフラ

【Terraform】tfstateファイルをS3で管理する

作成日2024/08/17
更新日2024/08/17
アイキャッチ
# AWS
# Terraform

前回の記事ではTerraformのAWSリソース作成環境を構築しました。
terraform applyコマンドの実行時にローカル環境にterraform.tfstateというファイルが作成されているはずです。
Terraformではapplyコマンド実行後のリソースの状態をterraform.tfstateファイルで管理しています。

今回は複数人でTerraform環境を管理していると想定して、最新のterraform.tfstateファイルをS3で管理する手順を解説します。

S3バケットの作成

AWSのマネジメントコンソールからS3のページに移動し、「バケットを作成」をクリックします。

任意のバケット名を入力します。
ここではterraform-sample-s3としています。

意図しない障害時などに復旧できるようバケットのバージョニングを有効にします。

その他の設定はデフォルトのまま「バケットを作成」をクリックします。
S3が正常に作成されたら完了です。

backendの設定

前回の記事で作成したプロジェクトにbackend.tfファイルを作成します。
公式のexampleを参考に以下の内容でファイルを編集します。

bucketの箇所は先ほど作成したバケット名を指定します。
keyの箇所はterraform.tfstateファイルへのパスを指定しています。今後環境ごとにディレクトリを分けていきたいため、devディレクトリ配下に指定しています。

terraform {
  backend "s3" {
    bucket = "terraform-sample-s3"
    key    = "dev/terraform.tfstate"
    region = "ap-northeast-1"
  }
}

これで設定は完了です。
backendの設定を反映されるためinitコマンドを実行します。

docker compose run --rm terraform init

設定に問題がなければ以下のように初期化が完了します。

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Reusing previous version of hashicorp/aws from the dependency lock file
- Using previously-installed hashicorp/aws v5.61.0

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

前回の記事で設定したVPCを作成するため、applyコマンドを実行します。

docker compose run --rm terraform apply

以下のメッセージが表示されれば正常に作成が完了しています。

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

applyコマンド実行後、マネジメントコンソールから作成したバケット内にtfstateファイルが作成されていることが確認できれば設定は完了です。

最後に作成したVPCを削除しておきます。

docker compose run --rm terraform apply

以上でterraform.tfstateファイルをS3で管理する設定は完了です。

share on
xアイコンfacebookアイコンlineアイコン