Terraform入門】インフラ自動化ツールの基本と使い方
■ はじめに
近年、クラウド時代の到来とともにインフラ構築の自動化
が注目を集めています。その中でもHashiCorp社のTerraform
は、コード化によるインフラ管理の実現で人気の高いオープンソースツールです。この記事では、Terraformの基本概念から使い方までを解説します。
■ Terraformとは何か
Terraformは、インフラリソースのプロビジョニングを宣言的に記述し管理するためのツール
です。AWS、Azure、GCPなどマルチクラウド環境に対応しており、コードによってインフラ構成を定義します。これにより、インフラ構築の自動化とバージョン管理が可能になります。
■ Terraformの基本概念
Terraformは以下のような基本概念で成り立っています。
-
Provider
:各クラウドプロバイダやサービスとの連携を行うプラグイン -
Resource
:管理対象となるインフラリソース(VM、ネットワーク、ストレージなど) -
Variables
:リソースで使う変数の定義 -
Data Source
:参照専用の情報源 -
Module
:再利用可能なリソースのセット -
State
:構築したリソースの状態管理用ファイル
コードはHCL(HashiCorp Configuration Language)というTerraform専用の記述言語
を使います。
■ Terraformのインストールと環境構築
TerraformはWindows、macOS、Linuxで動作します。各OSごとにバイナリをダウンロードしてパスを通すだけでセットアップ完了です。クラウドのアクセスキーは環境変数や別ファイルで管理します。エディタはVS CodeにTerraformプラグインを導入すると便利です。
■ Terraformの使い方
実際にTerraformを使ってインフラ構築を進めていきます。
- プロジェクトフォルダ内で
terraform init
を実行し、必要なプロバイダをダウンロードする。プロバイダ追加時は再実行が必要。 -
*.tf
ファイルにHCLでリソース定義を記述する。変数はvariables.tf
やterraform.tfvars
に切り出すのが一般的。 -
terraform plan
で実行計画を確認し、変更内容をチェックする。 -
terraform apply
を実行し、インフラをデプロイする。 -
terraform destroy
でリソースを削除できる。
State(terraform.tfstate)は運用フェーズではバックエンドを使ってリモートに保存・管理するのが推奨されます。
■AWS上での活用例
AWSを使った一連の流れを見てみましょう。VPC、サブネット、インターネットゲートウェイ、セキュリティグループ、EC2インスタンスを構築し、WebサーバーをデプロイするユースケースをTerraformで実装します。
provider "aws" {
region = "us-east-1"
}
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
}
}
# VPC
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
# Public Subnet
resource "aws_subnet" "public_1" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
}
# Internet Gateway
resource "aws_internet_gateway" "main" {
vpc_id = aws_vpc.main.id
}
# EC2 Instance
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = "t2.micro"
subnet_id = aws_subnet.public_1.id
user_data = <<EOF
#!/bin/bash
sudo apt update
sudo apt install -y apache2
sudo systemctl start apache2
sudo systemctl enable apache2
EOF
}
AMIはデータソースを使って動的に取得し、user_data
でApacheの自動起動設定も追加しました。コードを記述したらterraform apply
を実行すれば、AWS上にインフラが構築されます。
■ さいごに
この記事ではTerraformの基本と使い方について解説しました。インフラのコード化は運用の効率化とミス防止に大きく貢献します。実際のプロジェクトではモジュール化による再利用やCI/CDパイプラインとの連携など、より実践的なスキルが求められます。ここで培った知識を生かし、学習を深めていきましょう。
Discussion