【CI CD】Terraformとは - j-komatsu/myCheatSheet GitHub Wiki

Terraformとは

読み方

Terraform(テラフォーム)

概要

Terraformは、HashiCorp社が開発したインフラをコードとして管理するためのツールです。
クラウドやオンプレミス環境のインフラを宣言的に定義し、自動で適用できます。

初学者向けの説明

Terraformは「インフラの設計書」をコード化するツールです。

  • 手作業が不要:一度コードを書けば、何度でも同じ環境を作れる
  • 変更が簡単:コードを修正すれば、すぐに設定を変更できる
  • どこでも使える:AWS、Azure、Google Cloudなど、多くのクラウドに対応

専門家向けの説明

TerraformはHCL(HashiCorp Configuration Language)を用いた宣言型のインフラ構成管理ツールです。

  • Immutable Infrastructure の考え方を採用し、変更管理を安全に行える
  • ステート管理(State)を用いて現在のインフラ状態を記録・比較
  • **idempotent(冪等性)**を維持し、一貫した環境構築が可能
  • マルチクラウド対応:AWS / GCP / Azure / OCI など多くのプロバイダをサポート

Terraformの特徴

特徴 説明
宣言的アプローチ 「どうしたいか」 を記述し、Terraformが最適な手順を実行
ステート管理 既存のインフラ状態を管理し、差分を適用
プロバイダ対応 AWS / GCP / Azure / Kubernetes など、多様な環境で利用可能
モジュール化 再利用可能なコードとして、モジュール化が可能
冪等性 何度適用しても同じ結果になる

Terraformの構成要素

構成図(テキスト表現)

Terraform CLI → プロバイダ(AWS/GCP/Azure)→ クラウド環境
Terraform CLI → ステートファイル(現在のインフラ状態を管理)
Terraform CLI → HCLファイル(Terraformコード)
  • Terraform CLI:Terraformの実行コマンド
  • プロバイダ(Provider):AWS、Azure、GCPなどのインフラリソースを管理するためのプラグイン
  • ステートファイル(State):Terraformが管理する環境の現状を保存
  • HCLファイル(Terraformコード):インフラを定義するコード

基本的なTerraformの使い方

1. Terraformのインストール

# macOS (Homebrew)
brew install terraform

# Linux (Ubuntu)
sudo apt-get update && sudo apt-get install -y terraform

2. Terraformプロジェクトの作成

mkdir terraform_project && cd terraform_project

3. Terraform設定ファイルの作成(例:AWS EC2)

main.tf:

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

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

4. Terraformの初期化

terraform init

5. 設定の確認

terraform plan

6. インフラの適用

terraform apply

7. インフラの削除

terraform destroy

例: AWS VPCの作成

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

resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
}

resource "aws_subnet" "subnet" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"
}

まとめ

機能 説明
宣言的管理 インフラをコードで管理し、再現性を担保
ステート管理 インフラの現状を把握し、変更を適用
モジュール化 使い回せるコード構造で管理可能
マルチクラウド AWS/GCP/Azureなど、複数の環境に対応

Terraformを活用すると、手動での作業を減らし、インフラ管理を効率化できます。