mizoguche.info

Terraform で AWS をテラフォーミングしたときに困ったこと

AWS の設定するとき、いちいちコンソールからいじってた情弱だったが、Terraform を使い始めて文明開化の音がした。

けど、やっぱり初めて使うものですからわからんこと/困ったことがあった。

.gitignore にいれるべきではないもの

terraform gitignore - Google 検索で上の方に出てくる .gitignore はアプリケーション開発用の .gitignore なのでこれは使ってはいけない。

これを使うと .tfstate ファイルが無視されてしまい、AWS の状態が保持できなくなる。

what’s a good git-ignore policy for a terraform repository? - Google グループ

We recommend checking in both your plan files (*.tf) and your .tfstate files. This will allow others to modify the infrastructure. Without state, existing infrastructure won’t be found.

terraform apply するたびに状態をコミットするべき、ということみたい。

データベースのパスワードをコミットするかは要検討なものの、 それ以外に.gitignore に追加するべきファイルはなさそう。

デフォルト設定では RDS で日本語が使えない

デフォルトのパラメータグループだとちょこちょこ latin1 になる設定があるっぽい。これを UTF-8 に設定するパラメータグループを作る。

AWS - RDSで日本語が文字化けする問題 - Qiita

上記記事の、Step1〜2 を行ったあと、terraform apply する。

Terraform の設定ファイル内において、パラメータグループは parameter_group_name で設定できるので、上記記事内手順の DB Parameter Group Name に設定した値をそのまま parameter_group_name に設定するとよい。

AWS: aws_db_instance - Terraform by HashiCorp

parameter_group_name - (Optional) Name of the DB parameter group to associate.

apply するたびに RDS のインスタンスが削除・作成される

一度作成した RDS のインスタンスがterraform apply するたびに削除されて再作成される。

これはどうやらバグみたいで、パッチはすでにマージされていて、0.3.7 で修正される模様。

RDS resources with passwords always get destroyed / rebuilt · Issue #689 · hashicorp/terraform

Alright the fix for this was just merged and should come out with 0.3.7! :dancer:

まとめ

いろいろ困ったこともあったけれど、Terraform がない生活にはもう戻れない。