この用語をシェア
概要・定義
Terraformは、HashiCorp社が開発したオープンソースのIaC(Infrastructure as Code)ツールです。2014年に初版がリリースされ、インフラストラクチャをコードで定義・管理することで、クラウドリソースの作成、更新、削除を自動化します。
TerraformはHCL(HashiCorp Configuration Language)という宣言的な設定言語を使用し、複数のクラウドプロバイダーやサービスに対応しています。AWS、Azure、Google Cloud Platform、Kubernetes、GitHub、DataDogなど、3000以上のプロバイダーに対応しており、マルチクラウド環境での一貫した管理を実現します。
主要な特徴・利点
1. 宣言的設定
インフラストラクチャの理想的な状態を定義し、Terraformが現在の状態と理想状態の差分を自動的に検出・適用します。
2. マルチクラウド対応
同一の設定言語と操作方法で、複数のクラウドプロバイダーやサービスを管理できます。
3. プラン・実行の分離
変更前に実行計画を確認できるため、予期しない変更を防ぐことができます。
4. 状態管理
terraformステートファイルで管理対象リソースの状態を追跡し、チーム開発での一貫性を保ちます。
5. 依存関係の自動解決
リソース間の依存関係を自動的に解析し、適切な順序で作成・削除を行います。
主要コンポーネント
1. 設定ファイル(.tf)
HCLで記述されたインフラストラクチャの定義ファイルです。
2. State(状態ファイル)
管理対象リソースの現在の状態を記録するファイルです。
3. Provider
各クラウドサービスやAPIと通信するためのプラグインです。
4. Module
再利用可能なTerraform設定のまとまりです。
5. Backend
状態ファイルの保存場所と実行環境を管理します。
使用例・実装方法
基本的なEC2インスタンスの作成
# main.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "web_server" {
ami = "ami-0c55b159cbfafe1d0"
instance_type = "t3.micro"
tags = {
Name = "WebServer"
Environment = "production"
}
}
output "instance_ip" {
value = aws_instance.web_server.public_ip
}