参考記事
terraformのbackendをs3にしてinitするまでの最低限の手順 - Qiita
tfstate管理用のS3バケットを作る
Backend Type: s3 - Terraform by HashiCorp
AWSのコンソールからバケットを作ります。この時、Documentにある通り、
Warning! It is highly recommended that you enable Bucket Versioning on the S3 bucket to allow for state recovery in the case of accidental deletions and human error.
バージョニングを有効にしておくのと、
Terraform is an administrative tool that manages your infrastructure, and so ideally the infrastructure that is used by Terraform should exist outside of the infrastructure that Terraform manages.
バケット自身はTerraformの管理外にしておくのが良いそうです
backendの設定を書く
どこでも良いと思いますが、自分は provider "aws"
セクションと同じ所に書きました
1 | $ cat provider.tf |
backendの設定を反映
1 | $ terraform init |
元々ローカルで .tfstate
ファイルをコミットしてあった人は、既存のtfstateファイルを削除し、.gitignoreに追加し、.tfstate
ファイルを管理外にして完了です
ハマったところ
terraform initすると、 Error: No valid credential sources found for AWS Provider.
と出てハマった件
1 | $ terraform init |
公式DocのExample Configurationには、 profile
の行が書かれていないのですが、 profile
行がないとcredentialsが無視されているようです
これが仕様なのかどうなのかと言及している記事も見かけましたが、是非はどうなんでしょう