はじめに
udemyを使ってTerraformの勉強をしたので、複数ユーザーでAWSのインフラ管理する場合についての学習備忘録です。
複数ユーザーでAWSのインフラ管理する
各々の環境でTerraformを実行すると、tfstateが各々の環境に作成され、整合性が取れなくなります。
そのため、tfstateファイルは、S3を使って管理します。
管理外のバケットが本番にできることや、ご適用を防ぐため、terraform管理対象
とtfstateの保管先
は、別のアカウントにするのが望ましいです。
tfstateをS3へ保管する
tfstateファイルをS3バケットで保管するための設定をしましょう。
はじめにAWSコンソールからS3バケットを作成します。
バケットポリシーを編集します
最初に、ブロックパブリックアクセス (バケット設定)を一旦OFFにします。
次に、ポリシージェネレーターでバケットポリシーを作成します。
バケットのARNは、「バケットのARN/*」の形で入力します。
作成できたポリシーをバケットポリシーに入力して完了です。
Sidはいらないので削除してもOKです。
最後に、ブロックパブリックアクセス (バケット設定)をONに戻します。
terraformブロックの編集
terraformブロックにbackend
を追加して、作成したバケット名を記入します。
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ファイルが作成されるようになります。