AWSのIaC(Infrastructure as Code)は何を使うべきか(2022/10)

2022年10月にAWSのIaC用ソリューションを検討した結果を記載する。

結論

今ならTerraformでいい。

IaCソリューションあれこれ

  • Terraform
    • それ自体も優秀だが、周辺ツールの充実度や資料の探しやすさも優れている。
  • CDK for Terraform
    • 将来的にはこれが有望な印象。
    • だがまだ早い。GAして間もないため本番環境での利用を前提するのはためらわれる。事例や資料も決して多いとは言えない。採用するのはもうすこしこなれてからにしたい。
  • AWS CLI
    • 便利だが構成管理までしたいのでメインにできない。
    • とはいえ最新のAWSのソリューションは、他のツールの更新が間に合わなくてAWS CLIでしか利用できないことがある。メインで使わないとしても補助として必要。
  • CloudFormation
    • Terraformのほうが使いやすい。
  • CDK
    • CloudFormationのラッパーみたいなものらしい。そこまで頑張らなくても感。

Terraformをどこで実行する?

個人開発だと一人で全て管理するため、基本的にローカルから実行する。ただCI/CDではTerraform CloudやEC2のようなリモートの実行ができる必要があるだろう。

チームで実施するのであれば、共通の環境を一つ用意して実行できるのがおそらくベストだろう(お金かかるけど)。

.tfstateファイルをどこに保存する?

.tfstateファイルはS3に保存する。

他の構成ファイルはgit管理のため、.tfstateファイルだけ別。

もとより.tfstateファイルをgit管理するのは公式曰くアンチパターンとされているが、なにぶん今回はTerraformをpublicリポジトリで運用しているため、知らない間に機密情報を含んでしまっているリスクが致命的すぎる。公開される情報は管理できないと困る。.tfstateの中身を全部完全にチェックするのは現実的でないし。

ファイルの削除保護はS3のバージョニングで対応する。