Skip to content
Latchkey

Terraform vs Pulumi - CIにはどちらのIaCツールか?

Terraformは巨大なproviderエコシステムを備えた宣言的なHCLを使います。Pulumiは汎用のプログラミング言語でインフラを記述できます。

TerraformはHCLでインフラを定義し、最も広く採用されているIaCツールです。Pulumiは同じインフラをTypeScript、Python、Go、C#で、使い慣れた言語構文を使って定義できます。

TerraformPulumi
言語HCL(宣言的)TypeScript, Python, Go, C#
providerエコシステム最大大規模(TFブリッジを含む)
stateバックエンド多数のバックエンドPulumiサービスまたはセルフマネージド
テストplan/policyツールネイティブ言語のユニットテスト
チームへの適合Ops/プラットフォームの標準コードを好むアプリ開発者

CIにおいて

どちらもレビューでゲートされたplan-then-applyのpipelineに適合します。Terraformの宣言的なHCLと膨大なproviderエコシステムにより、成熟したCIパターンとpolicyツールを備えた、広く理解された標準となっています。Pulumiはチームが実際のプログラミング言語、ループ、ユニットテストを再利用でき、アプリ開発者にとってより自然な場合があります。PulumiはTerraformのproviderも利用できるため、エコシステムの差を縮めています。

pipeline向けの選択

最大のエコシステムと採用人材プールを持つ業界標準の宣言的ツールが欲しいなら - Terraform。チームのプログラミング言語でインフラを表現し、ネイティブなテストを行いたいなら - Pulumi。どちらの場合もapplyをレビューでゲートし、stateを保護しましょう。

結論

最大のエコシステムを持つ標準的な宣言的IaC - Terraform。実際のプログラミング言語とネイティブなテストを好むなら - Pulumi。どちらも、保護されたstateを備えたplan/applyのCIフローでうまく機能します。

関連ガイド