IaC をちょっと調べてみた
August 10, 2021
まえがき
IaC は全然触ったことがないのですが、以下のようなモチベーションを持っていて、ぼちぼち勉強しようかと思っています。
- さすがに少しは触っておいたほうが良い
- そのうち仕事でも使いそう
- web console ポチポチするのつらい
- インフラ構築を自動化して楽したい
この記事は、IaC 全体の話と、まず試してみるにはどれが良さそうかを調べるにとどめます。
結論を先に言うと、個人で試してみたいと思ったのは Pulumi ですが、本記事とは別で、試用できれば記事にするかもしれません。
IaC 概要
IaC (Infrastructure as Code) は、クラウド上のインフラをコード化して、インフラの構築自動化や管理する方法です。
クラウドのベンダーが独自で出しているもの、マルチクラウド対応のサードパーティ製のツールがあります。
IaC の種類
- マルチクラウド対応
- クラウドベンダー製
メリット
- クラウドベンダー製のメリット
- クラウドベンダーからのサポートを直接受けられる
- 最新の機能がいち早く利用できるようになる
- サードパーティ製のメリット
- ベンダーロックインを避けられる
- 一つの言語で複数のクラウドに対応できる
参考: IaC Frameworks: Vendor-Specific or Multi-Cloud? - DevOps.com
個人的には、マルチクラウド対応できるサードパーティ製 (OSS) ツールが魅力的である。AWS, Azure, GCP いずれを使う可能性もあるので。
GitHub Star
Terraform と Plumi の比較

TerraForm の方が古く、ユーザー数が多いと思われる。ただし、後発の Pulumi はより先進的な機能を取り込んでおり、開発者にとって魅力的であるとも取れる。
参考: https://vesoft-inc.github.io/github-statistics/
言語
- Pulumi
- 様々な言語で記述できる ( 参考 )
- 馴染みある汎用的な言語で導入コストが低い
- 開発者によって採用する言語が異なり保守が難しくなる可能性がある
- Terraform
- Terraform 独自言語の Hashicorp Configuration Language (HCL)
- 厳しい宣言的な記述
- 条件分岐させるような設定にはトリックが必要(可能だが複雑な方法になる)
Thanks to integration with Terraform providers, Pulumi is able to support a superset of the providers that Terraform currently offers.
- 参考:
まとめ
自分一人のような小規模な案件では Pulumi を試すのが良い機会。多数のメンバーがいるプロジェクトでは、これまでの実績、コードの保守性の観点から Terraform を使うのが良さそう、というお気持ち。
個人の趣味の範囲で Pulumi 使ってみようかな。