IaC

IaC あいえーしー

Infrastructure as Codeインフラ自動化TerraformCloudFormation冪等性DevOps
IaCについて教えて

簡単に言うとこんな感じ!

「インフラの構成をコードで管理する」アプローチだよ。サーバーやネットワークの設定をGUI画面でポチポチするんじゃなくて、設定ファイルに書いておけば何度でも同じ構成を再現できるし、変更履歴もGitで管理できるんだ。


IaCとは

IaC(Infrastructure as Code、インフラストラクチャー・アズ・コード)とは、サーバー・ネットワーク・データベースなどのインフラ構成をコード(設定ファイル)として定義・管理・自動化するアプローチです。従来は管理コンソールやSSHでの手動操作でインフラを構築していましたが、IaCではすべてをコードで表現します。

IaCの最大のメリットは再現性です。同じコードを実行すれば開発・ステージング・本番で同一のインフラ構成を作成できます。また、コードをGitで管理することで変更履歴の追跡・レビュー・ロールバックが可能になり、「誰が・いつ・何を変更したか」が常に明確です。さらに、手動作業によるミスや設定の食い違い(コンフィギュレーションドリフト)を防止できます。

IaCには**宣言型(Declarative)手続き型(Imperative)**の2つのアプローチがあります。宣言型はTerraformCloudFormationのように「あるべき状態(desired state)」を記述し、ツールが差分を計算して適用します。手続き型はAnsibleの一部やBashスクリプトのように「実行する手順」を記述します。現代のIaCは宣言型が主流です。


IaC主要ツール分類

ツール種別対象クラウド特徴
Terraformプロビジョニングマルチクラウド宣言型・HCL言語・最も普及
CloudFormationプロビジョニングAWS専用AWSネイティブ・JSON/YAML
Bicep / ARMプロビジョニングAzure専用Azureネイティブ
PulumiプロビジョニングマルチクラウドPython/TS等の汎用言語で記述
AWS CDKプロビジョニングAWSTypeScript/Python等でCloudFormation生成
Ansible構成管理クロスプラットフォームエージェントレス・YAML
Chef / Puppet構成管理クロスプラットフォームエージェント型・OSS

歴史と背景

  • 2006年:AWS EC2の登場でクラウドプロビジョニングの自動化ニーズが高まる
  • 2011年ChefPuppetが構成管理ツールとして普及。「Infrastructure as Code」という言葉が一般化
  • 2013年Ansibleがエージェントレスの構成管理で急速に普及
  • 2014年Terraform が HashiCorp によりリリース。マルチクラウドIaCの標準に
  • 2018年AWS CDK リリース。プログラミング言語でインフラを記述する流れが加速
  • 2020年代GitOps の普及でIaCの変更がCIパイプライン経由で自動適用される運用が定着

IaCの価値

手動管理 vs IaC 手動管理 IaC ✗ 変更履歴が残らない ✗ 同じ構成を再現できない ✗ ミスが多い・属人化する ✗ テスト・レビューができない ✗ ドリフトが発生しやすい ✓ Gitで変更履歴を管理 ✓ 何度でも同じ構成を再現 ✓ PRレビューで変更をチェック ✓ CIパイプラインで自動適用 ✓ ドリフト検知で一貫性を維持

関連用語