Terraformを使っていてGrunt/Gulpのことを思い出してもやもやする話
ちょっと今日もやもやしたことがあるので書き残しておきます。
Terraformが何かの説明はしないので、わかる人は読んでくださいということで。
Cloud Deployment Managerの方が良さそう
最近GCPをTerraformで触ってみているのですが、
の存在を知り、GCPに限って使うならこっちの方が高機能でいいなと。
- 全リソース(GCEとかNetworkとか)の設定をファイルとして管理できる
- プレビュー機能(dry-run的な)あり(WebのUIからも変更点が見られる)
- YAML/Python/Jinja2で設定が書ける
それでも、Terraformを使い続ける理由があるとすれば、AWSとかAzureとか複数のサービスにまたがって統一的なインターフェースを提供してくれていることかなと思ったんですが、そこでなぜか去年のGrunt/Gulpの話が頭に浮かびました。
タスクランナー!
去年あたりはフロントのJSを結構触っていたので、↓みたいなGrunt/Gulpのようなタスクランナーの話で頭を悩ましてました。
- Terraform → 統一的なインターフェースで、いろんなサービスのリソースを操作できる
- Grunt/Gulp → 統一的なインターフェースで、いろんなタスクを操作できる
的な抽象化レイヤーであるところに共通点があるなと感じました。
すると当然、TerraformにもGrunt/Gulp同様の↓の問題が起きます。
- TerraformのProviderで定義されているリソースの設定で、全てを設定できるわけではない
- サービス提供者側の機能が増えたとき追従するのにタイムラグがある
- バグったときに、原因究明の難易度があがる
安心と信頼のHashiCorpだから大丈夫でしょう!
Grunt/Gulpと比較して、Terraformの代替ツールが雨後の筍のようにポコポコ生まれてくることはなさそうだし、そもそもHashiCorpプロダクトだから大丈夫では? という話はあるでしょう。
が、インフラというクリティカルな領域で、抽象化レイヤーを挟んだことが原因でバグったら辛すぎるなとも思います。
実際、なんやかんやで嵌ったりしているという話はチラチラと聞きます(最新バージョンでは諸々解消されているかもしれませんが)
まとまらない
もやもやを書いただけなので、結論はありません。
AWSとか別サービスでTerraformを使ってはいないので、そちらだとまた話が違うかもしれません。