【Terraform】Terraformとは?インストールからAWSリソースの構築まで徹底解説!!

【Terraform】 Terraformとは? インストールから AWSリソースの構築まで徹底解説!! インフラ
スポンサーリンク

はじめに

この記事で分かること
  • Terraformとは?
  • TerraformでAWSリソース(EC2)の構築方法
ぴんくうさぎ
ぴんくうさぎ

AWSコンソールでぽちぽち色々作ったけど、

どこで何の設定しているかすぐ忘れちゃうな〜

みどりがめ
みどりがめ

そんなときはTerraformの導入を検討すると良いよ!

Terraformとは?

Terraformとは、インフラをコードで管理する(IaC:Infrastructure as Code)ためのオープンソースのソフトウェアツールです。主な導入メリットは以下の通りです。

  • 人為的なミスを削減できる
    インフラをコードで管理することで、実行する担当者が異なる場合でも、同じ品質、環境が担保されます。
  • バージョン管理ができる
    Gitでバージョン管理することも可能になります。これにより、修正点や履歴を追いやすくなります。
  • 人件費の削減につながる
    Terraformではコマンド一つで自動的にインフラを構築できるので、オペレーションコストを大きく削減することができます。導入初期の習得コストはありますが、長期的には人件費の削減に繋がります。

Terraformの環境構築

tfenvのインストール

tfenvはTerraformのバージョンマネージャーです。これにより使用するTerraformのバージョンを簡単に切り替えることができます。

brew install tfenv

Terraformのインストール

以下のコードでは、先ほどインストールしたtfenvを使用して、最新バージョンのTerraformをインストールしています。

tfenv install latest

list-remoteコマンドで現在インストール可能なTerraformのバージョンを確認することができます。

tfenv list-remote

listコマンドで、インストール済みのバージョンを確認できます。

tfenv list

versionコマンドでデフォルトで使用するバージョンを確認できます。

terraform version

useコマンドで使用するバージョンを変更することができます。

tfenv use 1.4.6

AWSリソース(EC2)の構築

IAMユーザーの作成

AWSで「AdministratorAccess」権限を持つIAMユーザーを作成してください。
また、アクセスキーを生成して、csvファイルをダウンロードしてください。
具体的な手順は以下の記事が分かりやすかったです。

IAMユーザーの作成方法 - 国内初AWS認定!AWSエンジニア特化型求人サイト「CloudBuilders」
はじめに こんにちはわったんです。最近AWSのマネージメントコンソールにもドキュメントがあることを知…
Creating an IAM user in your AWS account - AWS Identity and Access Management
Use the AWS Management Console, AWS CLI, or IAM API commands to create an IAM user and credentials.

プロファイルの作成

IAMユーザーの認証情報を管理するためのプロファイルを作成します。

まずは、AWS CLIをインストールします。AWS CLIはAWSサービスをコマンド実行するためのツールです。プロファイルを作成するコマンドの実行に使用します。

brew install awscli

以下のコマンドでプロファイルを作成します。
「AWS Access Key」、「AWS Secret Key」をそれぞれ問われるので、IAMユーザーの情報ダウンロードしたcsvを入力します。

また、「Default region name」は特にこだわりがなければ、ap-northeast-1(東京リージョン)としましょう。

aws configure --profile terraform

プロファイルは「~/.aws/credentials」に作成されます。catコマンドで確認してみましょう。

cat ~/.aws/credentials

Terraformファイルの作成

いよいよ本題となる、Terraformのファイルを作成していきます。

VSCodeを使用している方は、以下のプラグインをインストールされることをお勧めします。
入力補完が効くようになります。

HashiCorp Terraform - Visual Studio Marketplace
Extension for Visual Studio Code - Syntax highlighting and autocompletion for Terraform


任意の作業用ディレクトリを作成します。

mkdir terraform
cd terraform

Terraformの設定情報を記述するファイルを作成します。

touch setting.tf
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
    }
  }
}

provider "aws" {
  region  = "ap-northeast-1"
  profile = "terraform"

  default_tags {
    tags = {
      key = "sample"
    }
  }
}

terraformブロックでは、Terraformの内容を定義するために使用します。
required_providersブロックでは、プロバイダを指定します。今回はAWSを使用します。


providerブロックでは、作成するリソースのリージョンを指定しています。また、profileでプロファイル名を指定しています。先ほど作成済みのterraformを指定しています。

続いて、作成するEC2インスタンスの情報を記述するファイルを作成します。

touch ec2.tf
resource "aws_instance" "sample" {
  ami = "ami-0404778e217f54308"
  instance_type = "t2.micro"
}

aws_instanceは、EC2インスタンスを作成するために使用されます。その後のsampleはリソースの名前です。適宜変更してください。amiでは、EC2インスタンスを起動する際のAMIのIDを指定します。
instance_typeでは、起動するインスタンスタイプを指定します。今回はt2.microを指定しています。

Terraformの実行

まずは、initコマンドで初期化を行います。Terrafromが必要とするモジュールをダウンロードします。
gitのinitとは違い、割と気楽に叩いて問題ないコマンドです。

terraform init

次にplanコマンドで「このコードにより、何が作成され、削除され、更新されるか」を確認することができます。

terraform plan

applyコマンドでplanした内容を適用することができます。
AWSコンソールで実際にEC2インスタンスが作成されているか確認しましょう。

terraform apply

最後に後始末として、destroyコマンドでリソースを削除します。
AWSコンソールでEC2インスタンスが削除されているか確認しましょう。

terraform destroy

終わりに

本記事はここまでとなります。

ご覧いただきありがとうございました。ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです!🐢

コメント