フロントエンドエンジニアがterraformを始めたときに学んだこと

フロントエンドエンジニアとして、AWSのリソース(S3, Cloudfront, ECS/fargate, ALBなど) をterraformで作ることがあったので、その時に学んだことのメモ

terraformとは

いわゆる Infrastructure as Code(IaC)で、主にAWSGCPのリソースを作成するのに使われる。

書き方を覚える

公式のチュートリアルをやった。これに限らず、公式ドキュメントがよくできていた。 learn.hashicorp.com

Visual Studio Codeにterraformの拡張があるので、それを使うと補完が効くので便利だった。

運用方法

環境差分(beta, staging, production)については、自分の場合もともと運用ルールが決まっていたので考える必要がなかった。具体的には、環境ごとにディレクトリをわけ、共通のmoduleを利用するスタイルだった。

テスト方法

terraformの適用結果を保存しているstateファイルはprivateなS3に持っていたため、localでは terraform initできないようになっていた。最初は、毎回CI環境まで持っていって terraform plan していたが、途中で initに --backend=false というオプションがあることに気づいた。 terraform validateのガイドに載っていた。

www.terraform.io

これでlocalでvalidateできるようになってからはかなりスムーズになった。

実行方法

terraform plan して大丈夫そうだったら terraform apply する。planの段階でdeleteがないことはちゃんと確認しないと大事故になる。 in-place updateであれば、動作に影響なく設定変更だけが反映される。

その他

terraform planで問題なくても、terraform applyでエラーになることがある。AWSのルールに依存するものがこれに該当する。自分は、ALBのリスナールールは、1つにつき5個までしかパスを設定できないのを本番で踏み抜いて焦った。 docs.aws.amazon.com

参考になったサイト

qiita.com

tech.lucheholdings.com