Terraform の概要とIaCの概要についてまとめました。
Terraformの公式ドキュメント
Terraformのに関する公式ドキュメントのリンクは以下です。以下のリンクを参照してTerraformをインストールを実施します。

Terraformのインストールに関する公式ドキュメント
Terraformのインストールは以下のリンクから詳細を確認できます。


Terraformとは
Terraformは、インフラの自動構築ツールです。
コードを利用して、サーバーの構築、管理等を行います。
Terraformの仕組み
Terraformはざっくりと以下の仕組みで動作します。
[ユーザー] ⇒ 1.terraform applyコマンドを実行 ⇒ [Terraform] ⇒ 2.APIを通じて動作 ⇒ [AWS]
AWSは、多くの処理がAPIを通して実行可能です。Terraformは、コードを実行することでAWSをAPIを通じで操作します。
IaC(Infrastructure as Code)とは
IaCはInfrastructure as Codeの頭文字で、プログラムのような、コードを利用してサーバーを管理する手法のことです。
Red Hat公式サイトではIaCについて以下のように説明されています。
IaC (Infrastructure as Code) は、手動のプロセスではなく、コードを使用してインフラストラクチャの管理とプロビジョニングを行います。
IaC を使用すると、インフラストラクチャ仕様を含む設定ファイルが作成され、設定の編集と提供が容易になります。また、毎回同じ環境をプロビジョニングできるようになります。IaC は、設定仕様をコード化および文書化することにより構成管理を支援します。これにより、設定が文書化されることなくアドホックに変更されることを回避できます。

AWS公式サイトでは、IaCについて以下のように説明されています。
Infrastructure as Code (IaC) とは何ですか?
Infrastructure as Code (IaC) とは、手動のプロセスや設定の代わりにコードを使用してコンピューティングインフラストラクチャをプロビジョニングおよびサポートできることをいいます。どのようなアプリケーション環境であっても、オペレーティングシステム、データベース接続、ストレージなどの多くのインフラストラクチャコンポーネントが必要です。デベロッパーは、アプリケーションを開発、テスト、デプロイするためのインフラストラクチャを定期的に設定、更新、メンテナンスする必要があります。手動のインフラストラクチャ管理は時間がかかり、エラーも発生しやすくなります。このことは、アプリケーションを大規模に管理する場合に特に当てはまります。Infrastructure as Code (IaC) により、その状態に至るまでのステップをすべて含めなくても、インフラストラクチャの望ましい状態を定義できます。インフラストラクチャ管理が自動化されるため、デベロッパーは環境の管理ではなく、アプリケーションの構築と改善に集中できます。組織は Infrastructure as Code (IaC) として使用して、コストを管理し、リスクを軽減するとともに、新しいビジネスチャンスに迅速に対応します。
AWS(Amazon Web Services)とは

AWSは、オンラインネットショップ大手で知られるAmazon社がサーバーのリソースを外部に貸し出しているクラウドコンピューティングサービスです。
詳細は以下のAWS公式リンクから詳細を確認できます。

Terraformの使い方
Terraformの使い方を以下の流れで説明します。今回はTerraformの公式ドキュメントを参考にEC2をAWS上へTerraformで建ててみます。
- TerraformをWindowsにインストールする
- AWS作業用のフォルダをWindowsパソコンに作成する
- コードを書く
- terraform fmtコマンドでコードを書いたファイルをフォーマットする
- terraform init コマンドを実行する
- terraform validateコマンドでコードを書いたファイルの構成を検証する
- terraform planコマンドでコマンド実行後の差分を確認する
- terraform apply コマンドを実行する
参考にするドキュメントは以下です。

Terraformをインストールする
まずは以下のTerraform公式サイトに記載されている内容を参考にWindowsにTerraformをインストールします。

Windowsにフォルダを作成する
WindowsにTerraformを実行するために必要なファイルを格納するフォルダを作成します。

コードを書く
以下のTerraform 公式サイトに記載されているチュートリアルを参考に、コードを記載します。

例えば以下のコードで、AWS上にUbuntuのインスタンスをEC2上に作成します。ファイル名はmain.tfとします。
provider "aws" {
region = "us-west-2"
}
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-*"]
}
owners = ["099720109477"] # Canonical
}
resource "aws_instance" "app_server" {
ami = data.aws_ami.ubuntu.id
instance_type = "t2.micro"
tags = {
Name = "learn-terraform"
}
}

terraform fmtコマンドの実行
コードが書かれたファイルを作成したら、terraform fmtコマンドで作成したファイルをフォーマットします。
terraform applyを実行する
terraform applyを実行してコードからEC2インスタンスを立ち上げます。applyする前に以下の実行を行います。
- terraform init コマンドで初期化処理を実行する
- terraform validateコマンドでコードを書いたファイルの構成を検証する
- terraform planコマンドでコマンド実行後の差分を確認する
- terraform apply コマンドを実行する

