フロントエンドエンジニアがterraformを始めたときに学んだこと
フロントエンドエンジニアとして、AWSのリソース(S3, Cloudfront, ECS/fargate, ALBなど) をterraformで作ることがあったので、その時に学んだことのメモ
terraformとは
いわゆる Infrastructure as Code(IaC)で、主にAWSやGCPのリソースを作成するのに使われる。
書き方を覚える
公式のチュートリアルをやった。これに限らず、公式ドキュメントがよくできていた。 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
のガイドに載っていた。
これでlocalでvalidateできるようになってからはかなりスムーズになった。
実行方法
terraform plan
して大丈夫そうだったら terraform apply
する。planの段階でdeleteがないことはちゃんと確認しないと大事故になる。 in-place update
であれば、動作に影響なく設定変更だけが反映される。
その他
terraform plan
で問題なくても、terraform apply
でエラーになることがある。AWSのルールに依存するものがこれに該当する。自分は、ALBのリスナールールは、1つにつき5個までしかパスを設定できないのを本番で踏み抜いて焦った。
docs.aws.amazon.com