なっく日報

技術やら生活やらのメモ

Terraformを使っていてGrunt/Gulpのことを思い出してもやもやする話

ちょっと今日もやもやしたことがあるので書き残しておきます。

Terraformが何かの説明はしないので、わかる人は読んでくださいということで。

Cloud Deployment Managerの方が良さそう

最近GCPをTerraformで触ってみているのですが、

cloud.google.com

の存在を知り、GCPに限って使うならこっちの方が高機能でいいなと。

  • 全リソース(GCEとかNetworkとか)の設定をファイルとして管理できる
  • プレビュー機能(dry-run的な)あり(WebのUIからも変更点が見られる)
  • YAML/Python/Jinja2で設定が書ける

それでも、Terraformを使い続ける理由があるとすれば、AWSとかAzureとか複数のサービスにまたがって統一的なインターフェースを提供してくれていることかなと思ったんですが、そこでなぜか去年のGrunt/Gulpの話が頭に浮かびました。

スクランナー!

去年あたりはフロントのJSを結構触っていたので、↓みたいなGrunt/Gulpのようなタスクランナーの話で頭を悩ましてました。

qiita.com

d.hatena.ne.jp

t32k.me

  • Terraform → 統一的なインターフェースで、いろんなサービスのリソースを操作できる
  • Grunt/Gulp → 統一的なインターフェースで、いろんなタスクを操作できる

的な抽象化レイヤーであるところに共通点があるなと感じました。

すると当然、TerraformにもGrunt/Gulp同様の↓の問題が起きます。

  • TerraformのProviderで定義されているリソースの設定で、全てを設定できるわけではない
  • サービス提供者側の機能が増えたとき追従するのにタイムラグがある
  • バグったときに、原因究明の難易度があがる

安心と信頼のHashiCorpだから大丈夫でしょう!

Grunt/Gulpと比較して、Terraformの代替ツールが雨後の筍のようにポコポコ生まれてくることはなさそうだし、そもそもHashiCorpプロダクトだから大丈夫では? という話はあるでしょう。

が、インフラというクリティカルな領域で、抽象化レイヤーを挟んだことが原因でバグったら辛すぎるなとも思います。

実際、なんやかんやで嵌ったりしているという話はチラチラと聞きます(最新バージョンでは諸々解消されているかもしれませんが)

まとまらない

もやもやを書いただけなので、結論はありません。

AWSとか別サービスでTerraformを使ってはいないので、そちらだとまた話が違うかもしれません。