オンプレ出身のエンジニアがクラウドに足を踏み入れると、似たような言葉が次々と出てくる。「プロビジョニング」「コンフィギュレーション管理」「オーケストレーション」——なんとなく全部「インフラを自動化する」ものだとわかるが、具体的に何が違うのか、どのツールを使えばいいのか、説明できる自信がない人は多い。
実は、これらは担う役割がまったく異なる。混同したまま使うと「TerraformでAnsibleの仕事をさせようとしてハマる」「Kubernetesに設定管理をやらせようとして混乱する」という事態が起きる。
この記事では、プロビジョニング・コンフィギュレーション管理・オーケストレーションの3つの概念を、代表ツールの具体例を交えながら整理する。それぞれの守備範囲と、どう組み合わせて使うかを理解することで、クラウドインフラ自動化の全体像が一気にクリアになるはずだ。

3つの概念の根本的な違い
まず結論から示す。
| 概念 | 「何をする」か | 代表ツール | 対象 |
|---|---|---|---|
| プロビジョニング | インフラを作る(存在させる) | Terraform、CloudFormation | EC2、VPC、RDS、IAMロールなど |
| コンフィギュレーション管理 | サーバーを設定する(望ましい状態に保つ) | Ansible、Chef、Puppet | OS設定、ミドルウェア、ユーザー設定など |
| オーケストレーション | ワークロードを調整する(複数コンテナ・サービスの協調) | Kubernetes、Amazon ECS | コンテナ、マイクロサービス群 |
日本語で言い換えると、「土地と建物を建てる(プロビジョニング)」→「部屋の家具・内装を整える(コンフィギュレーション管理)」→「入居者(アプリ)をどの部屋に何人配置するか管理する(オーケストレーション)」というイメージに近い。
オンプレ時代はこれらの境界が曖昧だったが、クラウドではサービス・ツールの分担が明確になっている。
プロビジョニングとは何か
プロビジョニングとは、「インフラリソースを存在させること」だ。EC2インスタンスを起動する、VPCを作る、S3バケットを作成する、RDSを立ち上げる——これらがすべてプロビジョニングにあたる。
オンプレの世界では、物理サーバーを発注・ラッキング・ケーブリングする一連の作業がプロビジョニングだった。クラウドでは、APIを呼ぶだけで数分以内に完了する。
1. IaC(Infrastructure as Code)によるプロビジョニング
現代のクラウドでは、プロビジョニングをコードで定義する「IaC」が標準だ。代表ツールは以下の2つ。
Terraform(HashiCorp)
マルチクラウド対応のIaCツール。AWS・Azure・GCPなど複数のクラウドを同一のコードベースで管理できる。宣言的な記法(HCL)で「あるべき状態」を書くと、Terraformが差分を計算して適用する。
# Terraform: EC2インスタンスを定義する例 resource "aws_instance" "web" { ami = "ami-0abcdef1234567890" instance_type = "t3.medium" tags = { Name = "web-server" Env = "production" } }
AWS CloudFormation
AWSネイティブのIaCサービス。YAML/JSONでテンプレートを書き、スタックとして管理する。AWSサービスとの統合が深く、ドリフト検出・変更セットのプレビューといった機能が充実している。
AWS CloudFormation vs Terraform の詳細な違いと選び方はこちらで解説している。
2. プロビジョニングが「作る」だけで終わる理由
重要なのは、TerraformはEC2を「起動」するところまでが担当範囲だという点だ。「その中にNginxをインストールする」「設定ファイルを配置する」「サービスを起動する」は、Terraformの仕事ではない。そこを担うのがコンフィギュレーション管理ツールだ。
コンフィギュレーション管理とは何か
コンフィギュレーション管理(Configuration Management)は、「サーバーが常に望ましい状態にあること」を保証する仕組みだ。
オンプレ時代、インフラチームが手動でサーバーに入り、設定ファイルを編集・ミドルウェアをインストールしていた作業を、コードで定義して自動化・継続的に検証するのがコンフィギュレーション管理の本質だ。
1. 代表ツール:Ansible
現在のクラウド環境で最も広く使われているのがAnsibleだ。エージェントレス(SSHで接続するだけ)で導入コストが低く、YAMLで手順(Playbook)を記述する。
# Ansible Playbook: NginxをインストールしてHTTPSを有効化する例 - name: Configure web server hosts: web_servers become: yes tasks: - name: Install nginx apt: name: nginx state: present - name: Start and enable nginx service: name: nginx state: started enabled: yes
2. 「冪等性(べきとうせい)」がコンフィギュレーション管理の核心
コンフィギュレーション管理ツールの共通の考え方が「冪等性(idempotency)」だ。何度実行しても、結果が同じ「あるべき状態」になる設計になっている。
例えば「Nginxがインストールされているべき」というPlaybookを10回実行しても、2回目以降は「すでに存在する」と判断してスキップされる。手動でのオペミス(二重インストール・設定の食い違い)が防止できる点がオンプレ時代との大きな違いだ。
3. クラウド時代のコンフィギュレーション管理の位置づけ
コンテナ・イミュータブルインフラが主流になった現代では、コンフィギュレーション管理の使いどころは変わってきた。コンテナを使う環境では「サーバーを設定変更する」のではなく「イメージを作り直す」のが基本になるため、Ansibleの出番はAMI(マシンイメージ)ビルド時や、コンテナ化されていないレガシーシステムの管理が中心になる。
一方、EC2ベースのシステムや、オンプレ資産と並走するハイブリッド構成では今もAnsibleが現役だ。
オーケストレーションとは何か
オーケストレーション(Orchestration)は、「複数のコンテナ・サービスが協調して動くよう調整する」仕組みだ。「オーケストラの指揮者」のイメージが語源に近い。
コンテナは単体で動かすのは簡単だが、本番環境では「Webコンテナを3台、APIコンテナを2台、DBコンテナを1台、常時稼働させ、1台が落ちたら自動で復旧させ、負荷に応じてスケールアウトする」といった複雑な運用が必要になる。この調整役がオーケストレーターだ。
1. Kubernetes(K8s)
コンテナオーケストレーションのデファクトスタンダード。マネージドサービスとして AWS EKS(Elastic Kubernetes Service)、Azure AKS、Google GKEで利用できる。
Podと呼ばれるコンテナの最小単位を、Deploymentで宣言的に管理する。
# Kubernetes: Nginx Deploymentを3レプリカで動かす例 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80
Kubernetesが担うのは以下のような機能だ。
・スケジューリング: どのノード(EC2など)にコンテナを配置するか決定
・セルフヒーリング: コンテナが落ちたら自動再起動
・スケーリング: CPU使用率に応じてレプリカ数を自動増減(HPA)
・ローリングアップデート: ダウンタイムなしでコンテナイメージを更新
・サービスディスカバリー: コンテナ間の通信を名前で解決
2. Amazon ECS(Elastic Container Service)
AWSネイティブのコンテナオーケストレーションサービス。KubernetesほどフルスペックではないがAWSとの統合が深く、学習コストが低い。Fargateと組み合わせると、EC2の管理も不要になる。
Amazon EKS(Kubernetes)の詳細は別記事で解説している。
3つをどう組み合わせるか——現場での実際の流れ
現代のクラウドインフラ構築は、これら3つのツール群を組み合わせたパイプラインで成り立っている。具体的な流れを見てみよう。
1. コンテナ中心のモダンな構成
| フェーズ | ツール例 | やること |
|---|---|---|
| ① インフラ構築 | Terraform / CloudFormation | VPC・EKSクラスター・RDS・ALBをコードで作成 |
| ② アプリのビルド | Docker + CI/CDパイプライン | アプリをDockerイメージ化してECRにプッシュ |
| ③ デプロイ | Kubernetes (EKS) | 新イメージでDeploymentをローリングアップデート |
| ④ 運用 | Kubernetes + CloudWatch | スケーリング・自動復旧・ログ収集 |
このパターンでは、コンフィギュレーション管理ツール(Ansible等)はほぼ登場しない。「サーバーを設定する」のではなく「Dockerイメージを差し替える」からだ。
2. EC2ベースのレガシー混在構成
| フェーズ | ツール例 | やること |
|---|---|---|
| ① インフラ構築 | Terraform | EC2・VPC・RDSを作成 |
| ② サーバー設定 | Ansible | Nginx・Java・設定ファイルの配置 |
| ③ AMI焼き込み | Packer + Ansible | 設定済みのカスタムAMIを作成 |
| ④ 展開 | Auto Scaling Group | カスタムAMIでEC2を水平展開 |
オンプレからリフト&シフトで移行したシステムや、コンテナ化が難しいアプリはこのパターンが多い。
3. CI/CDパイプラインとの関係
CI/CD(継続的インテグレーション・デリバリー)は、これらのツールを自動的に呼び出すパイプラインだ。コードのプッシュをトリガーに「Terraformでインフラを更新 → Dockerイメージをビルド → EKSへデプロイ」という一連の流れを自動実行する。
「プロビジョニング」と「オーケストレーション」の混同を防ぐ
よくある誤解として、「TerraformでKubernetesのDeploymentを管理できるからTerraformだけでいい」という考え方がある。技術的には可能だが、実務では推奨されない。
| Terraform | Kubernetes | |
|---|---|---|
| 変更頻度 | 低い(インフラ変更は週・月単位) | 高い(デプロイは日・時間単位) |
| 状態管理 | tfstateファイルで管理 | etcdで管理(リアルタイム) |
| 得意なこと | インフラのライフサイクル管理 | コンテナのスケジューリング・復旧 |
| 苦手なこと | 頻繁なアプリデプロイ管理 | VPC・EC2の作成・削除 |
Terraformは「EKSクラスターというインフラを作る」、Kubernetesは「そのクラスター上でコンテナを管理する」と役割を分担するのが正しい使い方だ。
Terraform実践設計(tfstate分割・モジュール化)の詳細はこちら。
クラウドネイティブ時代のコンフィギュレーション管理の変化
「コンテナが当たり前になったら、Ansibleはもう要らないのか?」という問いには「用途次第」と答えるのが正確だ。
1. Ansibleが引き続き使われる場面
・AMIのベースイメージ作成: Packer + Ansibleで設定済みのカスタムAMIを量産するパターンは現役
・コンテナ化できないアプリ管理: 古いERP・レガシーJavaアプリはEC2で動かし続ける必要がある
・ハイブリッド環境: オンプレサーバーとクラウドが混在する場合、Ansibleで一元管理する
・ネットワーク機器の設定: Cisco・Juniper等のネットワーク機器はAnsibleで設定管理する事例が増えている
2. コンテナ環境での「コンフィギュレーション管理」の代替
Kubernetesにはコンフィギュレーション管理に相当する仕組みが内包されている。
・ConfigMap: アプリの設定値(環境変数・設定ファイル)を管理
・Secret: パスワード・APIキーなどの機密情報を管理
・DaemonSet: 全ノードに特定のコンテナを1台ずつ配置(ログ収集エージェント等)
これらを使えば、Ansibleなしでコンテナの設定を管理できる。
AWSが提供する「コンフィギュレーション管理」サービス
AWSにはマネージドのコンフィギュレーション管理機能がある。
・AWS Systems Manager State Manager: EC2インスタンスの設定を継続的に望ましい状態に保つ。Ansibleの代替として使える
・AWS Systems Manager Patch Manager: OSパッチの適用を自動化
・AWS OpsWorks: Chef/Puppetのマネージドサービス(新規採用は減少傾向)
AWS Systems Manager(Session Manager)の詳細はこちら。
オンプレ時代にAnsibleを使っていたエンジニアにとって、AWS Systems Manager State Managerは「クラウドネイティブな代替」として検討価値が高い。
ツール選定の判断基準——現場での考え方
新しいプロジェクトでツールを選ぶ際の判断フローを整理する。
1. アプリはコンテナ化できるか?
・Yes → コンフィギュレーション管理ツールは不要。Terraform(インフラ)+ Kubernetes or ECS(オーケストレーション)で完結する
・No(EC2が必要) → Ansibleまたは AWS Systems Manager で設定管理する
2. マルチクラウドか、AWS専用か?
・マルチクラウド(AWS + Azure等) → Terraform(マルチクラウド対応)
・AWS専用でAWSとの深い統合が必要 → CloudFormationも選択肢に入る
3. チームのスキルセットは?
・Kubernetes経験あり → EKSを検討
・Kubernetes未経験・AWSに慣れている → ECS + Fargateから始めると学習コストが低い
Kubernetesの資格(CKA)学習ロードマップはこちら。

まとめ:3つの概念の守備範囲を表で整理する
最後に全体を整理する。
| 観点 | プロビジョニング | コンフィギュレーション管理 | オーケストレーション |
|---|---|---|---|
| 問いへの答え | 「何を作るか」 | 「どう設定するか」 | 「どう動かすか・管理するか」 |
| 対象 | インフラリソース(EC2・VPC・RDS等) | OS・ミドルウェア・設定ファイル | コンテナ・マイクロサービス群 |
| 代表ツール | Terraform・CloudFormation | Ansible・Chef・Puppet | Kubernetes・Amazon ECS |
| AWSマネージド代替 | CloudFormation・CDK | Systems Manager State Manager | EKS・ECS |
| 変更頻度 | 低い(週・月単位) | 中(週単位) | 高い(日・時間単位) |
| コンテナ環境での必要性 | 必須 | 場合による(EC2混在なら必要) | 必須 |
「プロビジョニング → コンフィギュレーション管理 → オーケストレーション」は対立するものではなく、それぞれが担う役割が異なるレイヤーで協調するものだ。プロジェクトの構成(コンテナか否か、マルチクラウドか否か)に応じて必要なツールを選び、無理に一つのツールで全部解決しようとしないのが現場での正しい判断だ。
PR
コンテナ・IaC・サーバーレスを組み合わせたクラウドネイティブ設計の実践パターンを体系的に学べる一冊。プロビジョニング・オーケストレーションを現場でどう使い分けるかの判断基準を養うのに最適。
