Infrastructure as Code とは
コードによるインフラ管理
**Infrastructure as Code(IaC)**は、手動設定の代わりに機械可読な設定ファイルを使用してインフラストラクチャを管理・デプロイするアプローチです。
メリット
- バージョン管理 — Gitでインフラ管理、変更履歴
- 再現性 — どこでも同じ環境
- 自動化 — 手動作業なしで高速デプロイ
- ドキュメント — コードがドキュメントになる
IaCツール
- Terraform — クラウド非依存、宣言型
- AWS CloudFormation — AWS向け
- Pulumi — 通常の言語でのIaC(Python、TypeScript)
- Ansible — 構成管理
宣言型 vs 命令型
- 宣言型(Terraform):望ましい状態を記述
- 命令型(スクリプト):達成手順を記述
プラクティス
- リモートストレージでの状態保存
- コード再利用のためのモジュール
- 自動適用のためのCI/CD
- ポリシーとチェック(OPA、Sentinel)
Terraformの例
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}