5
4

More than 1 year has passed since last update.

【Terraform】複数ユーザーでAWSのインフラ管理する場合、S3にtfstateファイルを保管しよう

Posted at

はじめに

udemyを使ってTerraformの勉強をしたので、複数ユーザーでAWSのインフラ管理する場合についての学習備忘録です。

複数ユーザーでAWSのインフラ管理する

各々の環境でTerraformを実行すると、tfstateが各々の環境に作成され、整合性が取れなくなります。
そのため、tfstateファイルは、S3を使って管理します。

管理外のバケットが本番にできることや、ご適用を防ぐため、terraform管理対象tfstateの保管先は、別のアカウントにするのが望ましいです。

tfstateをS3へ保管する

tfstateファイルをS3バケットで保管するための設定をしましょう。

はじめにAWSコンソールからS3バケットを作成します。

スクリーンショット 2022-10-16 20.07.15.png

バケットポリシーを編集します

最初に、ブロックパブリックアクセス (バケット設定)を一旦OFFにします。
次に、ポリシージェネレーターでバケットポリシーを作成します。

スクリーンショット 2022-10-16 20.11.58.png

バケットのARNは、「バケットのARN/*」の形で入力します。
スクリーンショット 2022-10-16 20.14.55.png

作成できたポリシーをバケットポリシーに入力して完了です。
Sidはいらないので削除してもOKです。
最後に、ブロックパブリックアクセス (バケット設定)をONに戻します。

terraformブロックの編集

terraformブロックにbackendを追加して、作成したバケット名を記入します。

main.tf
terraform {
  required_version = ">=0.13"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.0" 
    }
  }
  backend "s3" {
    bucket  = "作成したバケット名"
    key     = "tfstateのファイル名(****.tfstate)"
    region  = "リージョン"
    profile = "作成したプロフィール"

  }
}

最後に初期化します

$ terraform init

特にエラーが表示されなければ、これで設定は完了です。
作成したS3バケットにtfstateファイルが作成されるようになります。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4