tfstateファイルをS3経由で共有 (チームでTerraformを運用する際に必須の設定について)
この記事では、tfstateファイルをS3経由で共有・管理する方法、また、なぜそれが必要なのかについて説明します。
この記事では、tfstateファイルをS3経由で共有・管理する方法、また、なぜそれが必要なのかについて説明します。
この記事の内容です。
対象読者
- チームで、tfstateファイルをローカルではなくS3経由で共有・管理したい方
環境
- Terraform v1.5.0
前提条件
- なし
なぜtfstateをS3経由で共有管理する必要があるのか
なぜtfstateをS3経由で共有・管理する必要があるのか?について説明します。
まず、tfstateファイルはAWSへデプロイしたインフラ構成を記録・管理するためのファイルです。
そのため、1人でインフラ構成を管理をしているなら問題は発生しないのですが、チームでインフラ構成を管理していると誰の環境に最新のtfstateファイルが存在しているのかわからなくなってしまいます。
そのまま運用を行うと、デグレードが発生しやすくなり、問題が発生しやすくなります。
これをどのように解決するのかについてですが、S3でtfstateファイルを管理し、それを各メンバーの環境から参照させることで、常に最新のtfstateファイルが1つだけでかつそれを参照させる解決します。
tfstateをS3で管理
設定追加
main.tfのterraformブロックへ、backendブロックを追加します。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.5.0"
}
}
# 以下を追加
backend "s3" {
key = "terraform.tfstate" # S3に保存する際のパスおよびファイル名指定
region = "ap-northeast-1" # S3バケットのリージョン
bucket = "test-bucket" # 保存先のバケット名
}
}
設定反映
もし、既にTerraformを運用している際は、tfstateファイルをS3で管理するようにした設定を反映させる必要があります。
これは簡単で、対象のmain.tfが存在するディレクトリで以下のコマンドを実行するだけです。
terraform init
上記コマンドを実行すると、処理を継続してもよいかを問われるので
yes
を入力しEnter/Returnを押してください。
参考にしたページ
developer.hashicorp.com