HashiCorp Terraformで始めるAWSのIaC:コードでAWSを管理する

AWS

Terraform の概要とIaCの概要についてまとめました。

Terraformの公式ドキュメント

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

Terraform | HashiCorp Developer
Explore Terraform product documentation, tutorials, and examples.

Terraformのインストールに関する公式ドキュメント

Terraformのインストールは以下のリンクから詳細を確認できます。

Install | Terraform | HashiCorp Developer
Explore Terraform product documentation, tutorials, and examples.
Install Terraform | Terraform | HashiCorp Developer
Install Terraform on Mac, Linux, or Windows by downloading the binary or using a package manager (Homebrew or Chocolatey...

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 は、設定仕様をコード化および文書化することにより構成管理を支援します。これにより、設定が文書化されることなくアドホックに変更されることを回避できます。

IaC (Infrastructure as Code) とは
IaC (Infrastructure as Code) は、手動のプロセスではなく、コードを使用してインフラストラクチャの管理とプロビジョニングを行います。

AWS公式サイトでは、IaCについて以下のように説明されています。

Infrastructure as Code (IaC) とは何ですか?
Infrastructure as Code (IaC) とは、手動のプロセスや設定の代わりにコードを使用してコンピューティングインフラストラクチャをプロビジョニングおよびサポートできることをいいます。どのようなアプリケーション環境であっても、オペレーティングシステム、データベース接続、ストレージなどの多くのインフラストラクチャコンポーネントが必要です。デベロッパーは、アプリケーションを開発、テスト、デプロイするためのインフラストラクチャを定期的に設定、更新、メンテナンスする必要があります。

手動のインフラストラクチャ管理は時間がかかり、エラーも発生しやすくなります。このことは、アプリケーションを大規模に管理する場合に特に当てはまります。Infrastructure as Code (IaC) により、その状態に至るまでのステップをすべて含めなくても、インフラストラクチャの望ましい状態を定義できます。インフラストラクチャ管理が自動化されるため、デベロッパーは環境の管理ではなく、アプリケーションの構築と改善に集中できます。組織は Infrastructure as Code (IaC) として使用して、コストを管理し、リスクを軽減するとともに、新しいビジネスチャンスに迅速に対応します。

Infrastructure as Code とは - IaC の説明 - AWS
Infrastructure as Code の概要、企業が Infrastructure as Code を使用する方法と理由、AWS で Infrastructure as Code を使用する方法。

AWS(Amazon Web Services)とは

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

詳細は以下のAWS公式リンクから詳細を確認できます。

AWS (アマゾン ウェブ サービス) とは?【AWS公式】
アマゾン ウェブ サービス (AWS) は安全なクラウドサービスプラットフォームで、ビジネスのスケールと成長をサポートする処理能力、データベースストレージ、およびその他の機能を提供します。数百万のお客様が、現在どのように AWS を活用して...

Terraformの使い方

Terraformの使い方を以下の流れで説明します。今回はTerraformの公式ドキュメントを参考にEC2をAWS上へTerraformで建ててみます。

  • TerraformをWindowsにインストールする
  • AWS作業用のフォルダをWindowsパソコンに作成する
  • コードを書く
  • terraform fmtコマンドでコードを書いたファイルをフォーマットする
  • terraform init コマンドを実行する
  • terraform validateコマンドでコードを書いたファイルの構成を検証する
  • terraform planコマンドでコマンド実行後の差分を確認する
  • terraform apply コマンドを実行する

参考にするドキュメントは以下です。

Create infrastructure | Terraform | HashiCorp Developer
Authenticate to AWS and create infrastructure with Terraform. Write and validate Terraform configuration, initialize a c...

Terraformをインストールする

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

Install | Terraform | HashiCorp Developer
Explore Terraform product documentation, tutorials, and examples.

Windowsにフォルダを作成する

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

コードを書く

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

Create infrastructure | Terraform | HashiCorp Developer
Authenticate to AWS and create infrastructure with Terraform. Write and validate Terraform configuration, initialize a c...

例えば以下のコードで、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 コマンドを実行する

タイトルとURLをコピーしました