アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

Terraform入門ガイド:初心者でもわかるIaCの基礎と始め方 AWS編

Featured image of the post

インフラ構築の現場で注目されている「Infrastructure as Code(IaC)」を、あなたはもう活用していますか?本記事では、IaCツールの代表格であるTerraformについて、まったくの初心者でも理解できるように、その基本概念から使い方、具体的な活用例までを詳しく解説します。クラウド環境をより効率的に、より安全に運用したいと考えている方にとって、Terraformはまさに必須のスキルです。今から始めるTerraform入門で、インフラ自動化の第一歩を踏み出しましょう。


[目次を開く]

Terraformとは何か?

近年、インフラの構築や管理において、「Infrastructure as Code(IaC)」というアプローチが主流となりつつあります。これは、インフラの設定や構成をコードとして記述し、ソフトウェア開発と同様にバージョン管理や再利用を可能にする考え方です。その中で代表的なツールの一つがTerraformです。

Terraformは、HashiCorp社によって開発されたオープンソースのIaCツールで、AWS、GCP、Azureなどの複数のクラウドサービスを一貫した方法で構築・管理することができます。インフラの構成を宣言的に記述し、それに基づいてリソースをプロビジョニングするため、環境構築の再現性や効率性を大幅に向上させることが可能です。

Terraformのメリット

Terraformには多くの利点があります。以下にその主な特徴を紹介します。

宣言的な構文でわかりやすい

Terraformでは、「このような状態にしたい」という望ましい状態を記述するスタイルを採用しています。たとえば、「このリージョンにEC2インスタンスを1つ作成する」といった具合に、設定ファイル(HCL形式)で記述します。これにより、コードを読むだけで構成の全体像が把握しやすくなります。

複数クラウドに対応

Terraformは、プロバイダーという仕組みを通じて、AWS、GCP、Azureなど主要なクラウドサービスに対応しています。これにより、同じ構文・ツールで複数のクラウド環境を横断的に扱うことができるため、マルチクラウド戦略を取る企業にも適しています。

モジュール化と再利用性

Terraformでは、構成をモジュールとして切り出すことができ、同じコードを複数の環境(本番・ステージングなど)で再利用できます。これにより、コードの保守性とスケーラビリティが向上します。

差分管理による効率的な変更

Terraformは現在のリソースの状態とコードで記述された理想の状態を比較し、**差分(差異)**を検出します。これにより、変更が必要な部分だけを効率的に適用することが可能です。

Terraformの基本的な使い方

ここでは、Terraformを使ってAWS上にEC2インスタンスを立ち上げる基本的な流れを紹介します。

前提条件として、AWS認証情報を設定してください。

設定方法をみる

TerraformがAWSと通信するには、**アクセスキー(AWS_ACCESS_KEY_IDシークレットキー(AWS_SECRET_ACCESS_KEY)**を設定する必要があります。

以下のいずれかの方法で認証情報を設定しましょう。


方法1:環境変数で設定

ターミナルに以下を入力(値はご自身のAWS IAMユーザーのキーに置き換えてください):

export AWS_ACCESS_KEY_ID="あなたのアクセスキー"
export AWS_SECRET_ACCESS_KEY="あなたのシークレットキー"

セッション中のみ有効です。毎回設定するのが面倒な場合は、.bashrc.zshrcなどに追加しましょう。


方法2:~/.aws/credentials に設定(AWS CLIがインストールされている場合)

AWS CLIの導入方法を以下を参照してください。
📄Arrow icon of a page linkAWS CLIの導入方法:簡単ガイド

AWS CLIがインストールされている場合は、以下のコマンドでも設定できます:

aws configure

もしくは手動で以下のような内容を ~/.aws/credentials に記述:

[default]
aws_access_key_id = あなたのアクセスキー
aws_secret_access_key = あなたのシークレットキー

1. Terraformのインストール(各OS別)

Terraformは公式サイトから各OS向けに提供されています。以下に主要なOS別のインストール手順を紹介します。

macOSの場合

Homebrewを使うのが簡単です。

brew tap hashicorp/tap
brew install hashicorp/tap/terraform
terraform -v

Windowsの場合

  1. 公式サイト(https://developer.hashicorp.com/terraform/downloads)からWindows版のZipファイルをダウンロード。
  2. 任意のディレクトリに解凍。
  3. 解凍したディレクトリのパスを「システムの環境変数」→「Path」に追加。
  4. コマンドプロンプトまたはPowerShellで以下を実行し、インストール確認。
terraform-v

Linux(Debian/Ubuntu系)の場合

APTリポジトリを追加し、インストールします。

sudo apt-get update &&sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg |sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com jammy main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

sudo apt update

sudo apt install terraform

terraform -v

2. プロジェクトディレクトリの作成

mkdir terraform-aws-ec2
cd terraform-aws-ec2

3. main.tfファイルの作成

以下はシンプルなEC2インスタンスの作成例です。

provider "aws" {
  region = "ap-northeast-1"
}

data "aws_ami" "amazon_linux" {
  most_recent = true

  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-*-x86_64-gp2"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["amazon"]
}

resource "aws_instance" "example" {
  ami           = data.aws_ami.amazon_linux.id
  instance_type = "t2.micro"

  tags = {
    Name = "MyTerraformInstance"
  }
}

GitやGithubで管理する場合は、.gitignore も作成しておきましょう。

.gitignoreの作成例を開く
# Terraform状態ファイル
*.tfstate
*.tfstate.*

# Terraformの実行時ロックファイル
.terraform.lock.hcl

# Terraform作業ディレクトリ
.terraform/

# crash log
crash.log

# overrideファイル(個人設定など)
override.tf
override.tf.json
*_override.tf
*_override.tf.json

# 変数ファイルに機密情報を記述する場合
*.tfvars
*.tfvars.json

# プランファイル(例:terraform plan -out=plan.out)
*.plan
*.tfplan
planfile

# バックアップファイル
*.bak

# OSやエディタによる一時ファイル
.DS_Store
Thumbs.db
*.swp
*.swo

# IDE設定
.vscode/
.idea/

4. Terraformの初期化

terraform init

5. 実行計画の作成と適用

Terraformを使って、設定ファイル(.tf)に基づいたリソースの作成を行います。

terraform plan

まず plan コマンドで、Terraformがどのようなリソースを作成または変更するかの**実行計画(ドライラン)**を表示します。問題なければ以下のコマンドで本番反映します:

terraform apply

実行後に yes と入力すれば、TerraformがAWS上にリソースを構築します。AWSコンソールからTerraformで作成されたインスタンスが表示されているか確認してみましょう。

Image in a image block

上記のようにインスタンスが表示されていれば成功です。

6. 作成したリソースのクリーンアップ

テスト目的で作成したインフラを残したままだと、課金が発生したり、管理が煩雑になったりするため、不要になったリソースは削除しましょう。

Terraformでは、作成した全リソースを以下のコマンドで削除できます。

terraform destroy

コマンドを実行すると、Terraformが現在の状態を確認し、削除対象のリソース一覧を表示します。問題なければ yes を入力して削除を確定してください。

Image in a image block

上記のようにインスタンスが終了済みになっていれば成功です。

注意点:

  • 削除対象に重要なリソースが含まれていないか、事前に plan コマンドで確認するのがおすすめです。
  • 誤って削除すると復元できない場合があるため、特に本番環境では慎重に操作しましょう。

よくあるTerraformの活用シーン

ステージング・本番環境の一元管理

本番と開発環境で同じ構成を再現したい場合、Terraformのコードを使えばほぼ同一のインフラを構築できます。

災害復旧(DR)構成の自動化

障害発生時に迅速に代替インフラを用意するためのテンプレートを用意しておくことで、復旧時間を大幅に短縮できます。

CI/CDとの連携

GitHub ActionsやGitLab CIなどのCI/CDツールと連携し、インフラの変更をプルリクエストベースで管理する運用も可能です。

Terraform利用時の注意点

状態管理(Stateファイル)の扱い

Terraformはインフラの状態をterraform.tfstateファイルに記録します。これをチームで扱う場合は、リモートバックエンド(S3やTerraform Cloud)を使い、状態を一元管理することが推奨されます。

リソースの命名規則

Terraformでは、リソース名がコードの保守性や変更時の影響範囲に関わるため、命名規則を統一することが重要です。


まとめ

Terraformは、インフラの自動化とコード管理を実現する強力なIaCツールです。初心者でも、基本的なコマンドと構文を覚えれば、すぐに実践で活用することができます。クラウド環境の複雑化が進む中、インフラの再現性や可視化が求められる現場において、Terraformは不可欠な存在となりつつあります。

これからIaCを学びたい方は、まずはシンプルな構成から始め、少しずつモジュール化や複雑な構成に挑戦していくのがよいでしょう。Terraformの習得は、あなたのインフラ運用スキルを大きく飛躍させる第一歩となるはずです。

プログラミング学習でつまずいていませんか?

独学で挫折しそうな方も、プロのメンターがしっかりサポートします。

  • プログラミング学習の進め方がわからない
  • 独学で行き詰まった時の質問相手がほしい
  • 何から始めればいいかわからない
まずは30分の無料相談

相談は完全無料・オンラインで気軽に

あなたを爆速で成長させるメンタリングプログラムはこちら

メンタープログラムバナー

プログラミングを学ぶならテックアカデミー

テックアカデミー
無料相談はこちら