【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を活用すると、手動での作業を減らし、インフラ管理を効率化できます。