Skip to content
Latchkey

Ansible vs Terraform: 構成管理 vs プロビジョニング

Terraform は state を伴って宣言的にインフラをプロビジョニングし追跡します。Ansible は冪等なタスクで既存のマシンを構成しオーケストレーションします。

Terraform は、追跡される state ファイルを用いてクラウドリソースを作成・管理する宣言的な IaC です。Ansible はエージェントレスな自動化ツールで、冪等な playbook を用いて SSH 経由でサーバーを構成しタスクをオーケストレーションします。両者は少し重なりますが、異なる主要な問題を解決します - プロビジョニング vs 構成。

AnsibleTerraform
主な役割構成 / オーケストレーションインフラのプロビジョニング
モデルやや命令的、冪等宣言的 + state
state 追跡なし(タスクを push)state ファイル
エージェントエージェントレス(SSH)API 駆動
最適な用途OS/app 構成、アドホックなタスククラウドリソースのライフサイクル

CI で

Terraform を使ってクラウドリソースを立ち上げて追跡し、その後 Ansible でマシンを構成したりオーケストレーション手順を実行したりします - この 2 つはしばしば一緒に使われます。pipeline がクラウドインフラのプロビジョニングだけなら、Terraform 単体の方がクリーンです。主に既存サーバーを構成したり手続き的なタスクを実行したりするなら、Ansible の方が適します。どちらも自動化ステップとして CI でうまく動きます。

高速化する

Terraform の provider と Ansible の collection を cache し、両方を CI で実行します。plan/apply と playbook の実行は CI runner 上で起こります。より高速な managed runner はそれらを短縮します。

結論

クラウドリソースのプロビジョニングと追跡: Terraform。マシンの構成や手続き的なタスクのオーケストレーション: Ansible。多くのチームは両者を組み合わせます - Terraform が構築し、Ansible が構成します。

関連ガイド