【CI CD】Infrastructure as Code (IaC) - j-komatsu/myCheatSheet GitHub Wiki

Infrastructure as Code (IaC)

1. IaCとは(読み方:インフラストラクチャー・アズ・コード)

Infrastructure as Code(IaC) とは、サーバーやネットワークなどのITインフラをコード(スクリプトや構成ファイル)として管理し、自動化する手法のことです。


2. 初学者向けの説明

● たとえ話

従来のインフラ管理は「手作りの料理」と同じで、1つ1つのサーバーを手作業で設定する必要がありました。しかし、IaCを使うと「レシピ(コード)」を作成し、それを元に何度でも同じ環境を再現できます。

● 特徴(表で整理)

項目 説明
自動化 手作業なしでインフラを構築できる
一貫性 毎回同じ環境を作成できる
可読性 設定内容がコードとして残る
バージョン管理 Gitなどで変更履歴を追える

● 基本的な流れ(Mermaid.jsで図示)

flowchart TD;
    A[コードを書く] --> B[適用する]
    B --> C[環境が構築される]
    C --> D[変更が必要ならコード修正]
    D --> B

3. 専門者向けの詳細説明

● IaCの種類

IaCには以下の2つの管理方式があります。

管理方式 説明
宣言的(Declarative) "最終的な状態"を定義し、それに自動的に合致させる
命令的(Imperative) 手順を逐次指示して環境を構築する

● 主要なIaCツール

ツール 方式 特徴
Terraform 宣言的 マルチクラウド対応、HCL(専用言語)使用
Ansible 宣言的 エージェント不要、YAMLで記述
CloudFormation 宣言的 AWS専用、JSON/YAMLで記述
Pulumi 宣言的 プログラミング言語(Python, TypeScript等)で記述

4. サンプルコード

以下の例は、Terraformを使ってAWS上にEC2インスタンスを作成するものです。

provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "example" {
  ami           = "ami-12345678"
  instance_type = "t2.micro"
}

● 入力と出力

項目 内容
入力 Terraformのスクリプト(上記コード)
出力 AWS上にEC2インスタンスが作成される

5. まとめ

  • IaCはインフラ管理をコード化し、自動化・再現性を向上させる
  • 主要なツールにはTerraform、Ansible、CloudFormationなどがある
  • 宣言的と命令的の2つの方式がある
  • コード例を使って実際の環境構築が可能