Mímisbrunnr知恵の泉

← クラウドインフラ 一覧

🎓 レベル:基礎 | 重要度:A(必須)

📎 前提:Kubernetesの全体像(宣言的・調整ループ) | 関連:Terraformの基礎(HCL・state)Docker Composeで複数コンテナ

要点(BLUF)

概念 ── 手順書からコードへ

従来のインフラ構築は、管理画面のクリックやSSHでの手作業+手順書(Word/Wiki)でした。問題は、(1) 同じ環境を再現できない、(2) 誰がいつ何を変えたか追えない、(3) 手作業はミスる。

IaC はこれをコードに置き換えます。「VMを1台・このネットワークに・このサイズで」をテキストで宣言し、ツールに実行させる。Docker Compose(Docker Composeで複数コンテナ)がコンテナ構成をファイルにしたのと同じことを、クラウド資源全体に広げたものです。

flowchart LR
    code["インフラのコード(宣言)"] --> tool["IaCツール(Terraform等)"]
    tool --> diff["現実との差分を計算"]
    diff --> apply["差分だけ適用"]
    apply --> infra["クラウド資源(VM・NW・DB)"]
    infra -->|"実状態を読み戻す"| diff

仕組み ── 宣言的・冪等性・ドリフト

宣言的(declarative):「どうやるか(手順)」でなく「どうあってほしいか(状態)」を書く。これは K8s(Kubernetesの全体像(宣言的・調整ループ))と同じ思想。対義は手続き的(命令の列)。

冪等性(idempotency)同じコードを何度適用しても結果は同じ。1回目で作り、2回目以降は「もうある」と認識して何もしない。だから「途中で失敗→もう一度実行」が安全。

再現性(reproducibility):同じコードから同じ環境が起こせる。dev で確かめた構成を prod でそのまま再現(モジュール化と環境分離)。

ドリフト(drift):コード(あるべき姿)と現実がズレること。誰かが管理画面で手で変えると発生。IaC は「コードを正」とし、plan で差分を可視化して現実をコードへ戻す

flowchart TB
    desired["コード=あるべき状態"] --> compare["plan で比較"]
    actual["現実の状態(手で変更されドリフト)"] --> compare
    compare -->|"差分を表示"| review["人がレビュー"]
    review -->|"apply で収束"| actual

動く例 ── 宣言の最小形

HCL(Terraform の言語)の雰囲気。「何を」を書くだけで、作る手順は書きません(疑似・要最新確認)。

# 「このネットワークに、このサイズのVMを1台」を宣言
resource "cloud_instance" "web" {
  name         = "web-01"
  machine_type = "small"
  zone         = "asia-northeast1-a"
  network      = cloud_network.main.id
}
terraform plan     # 現実との差分を表示(何が作られ・変わり・消えるか)
terraform apply    # 差分だけ適用。もう一度 apply しても変化なし(冪等)

plan適用前に影響を確認できるのがIaCの安全装置。手作業には無い「実行前プレビュー」です。

なぜ IaC なのか

⚠️ よくある誤解・落とし穴

対応ラボ

なし(概念トピック)。実際に plan/apply を回す手は次の Terraformの基礎(HCL・state) のローカル Terraform ラボで。

関連

第5章 IaC 目次