0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraformとは

Last updated at Posted at 2025-08-24

Terraformとは

  • terraformはIacと呼ばれるツールの一種で、インフラの構成をソースコードとして管理できる機能

Terraform vs Ansible vs CloudFormation 比較表

Terraform、Ansible、CloudFormationは、どれもインフラの自動化に利用される強力なツールですが、それぞれに得意な領域と設計思想があります。
以下にその主な違いをまとめました。

項目 Terraform Ansible AWS CloudFormation
主な役割 インフラのプロビジョニング
(箱を作る)
サーバーの構成管理
(箱の中身を設定する)
インフラのプロビジョニング
(箱を作る)
アプローチ 宣言的
(あるべき姿を定義)
命令的
(実行手順を定義)
宣言的
(あるべき姿を定義)
対応範囲 マルチクラウド
(AWS, Azure, GCPなど)
マルチプラットフォーム
(クラウド/オンプレミス)
AWS専用
構文 HCL YAML YAML / JSON
状態管理 ユーザーが状態ファイル(.tfstate)を管理 ステートレス
(状態を管理しない)
AWSが状態を管理
得意なこと 複数クラウド環境の構築・破棄 OS内部の設定、アプリのデプロイ AWS環境の構築・破棄

まとめ

  • Terraform: マルチクラウド環境のインフラをコードで管理したい場合に最適。
  • Ansible: 構築済みのサーバーに対して、ソフトウェアのインストールや設定変更を自動化したい場合に強力。
  • CloudFormation: インフラがAWSで完結しており、AWSネイティブなIaCツールを使いたい場合に最適。

多くの場合、これらは競合するだけでなく、Terraformでインフラを構築し、Ansibleでそのインフラを構成するといった形で連携して使われます。

TerrafomでEC2構築

1)brewでterraformインストール

brew install terraform
terraform -v

2).tfファイルを作成して、下記のコードを反映

  region = "ap-northeast-1" //東京リージョン
  access_key = "******" //作成したアクセスキー
  secret_key = "******" //作成したシークレットキー
}

// awsインスタンスの組み立て方は↓を参考
// https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
resource "aws_instance" "iac-instance" {
  ami           = "ami-011bdd6d8e8705a3c" 
  instance_type = "t3.micro"

  tags = {
   Name = "test instance"
  }
}

3)下記コマンドを叩き、定義ファイルを実行するにあたってterraformがAWSに接続するためのプラグインをインストールしてくれる。
terraform init

4)下記コマンドの叩き、事前にどんなリソースを作成できるのか確認できる。
terraform plan

また、terraform planを実行すると、Terraformは以下の3つを比較します。
① あなたが書いたコード(あるべき姿)
② .tfstateファイル(Terraformが認識している前回の姿)
③ 実際のAWS上のリソース(現在の姿)
この比較により、何を追加・変更・削除すべきかを判断します。このファイルがないと、毎回すべてのリソースをAWSに問い合わせる必要があり、また、どのリソースをTerraformが管理しているのか分からなくなります。

5)下記コマンドの叩き、実際に環境構築する。
terraform apply

6)下記のコマンド or EC2を立ち上げるソースをコメントアウトしてapplyコマンドで削除可能
terraform destroy

.tfstate

  • インフラの現在の状態が記述されている

.lock.hcl

  • プロバイダのバージョンを固定し、実行環境の差異をなくす
    • 再現性の担保:
      • プロバイダ(AWSプロバイダなど)は日々アップデートされます。もしこのファイルがないと、AさんのPCでinitしたときと、BさんのPCでinitしたときで、ダウンロードされるプロバイダのバージョンが異なってしまう可能性があります。
    • チーム開発での一貫性:
      • .terraform.lock.hclをGitなどのバージョン管理システムに含めることで、チームメンバー全員が全く同じバージョンのプロバイダを使うことが保証されます。これにより、「私の環境では動いたのに…」といった問題を未然に防ぎます。

provider

  • Terraformと外部API(AWSなど)を繋ぐ「翻訳機」または「プラグイン」
    • AWS、Azure、Google Cloudなど、各プラットフォームはそれぞれ独自のAPIを持っています。プロバイダは、これらの複雑なAPIの違いを吸収し、Terraformの統一された構文(HCL)で操作できるようにしてくれます。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?