【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つの方式がある
- コード例を使って実際の環境構築が可能