LoginSignup
16
4

More than 1 year has passed since last update.

TerraformをインストールしてTerraformでAWS上にEC2作ってみる

Last updated at Posted at 2022-11-25

はじめに

Terraformの勉強を始めたので備忘録を兼ねて行ったことを投稿しようと思います。

Terraformの実行環境構築

Terraformはtfenvでバージョン管理ができるようなので今回はtfenvでTerraformをインストールします。

tfenvのインストール

macなのでbrewコマンドでインストールします。

brew install tfenv

tfenvでTerraformをインストール

最新バージョンのterraformをインストールします。

tfenv install latest

インストールしたTerraformのバージョンを確認します

❯ tfenv list
  1.3.5
No default set. Set with 'tfenv use <version>'

インストールしたTerraformのバージョンがデフォルトバージョンとなるように設定します

❯ tfenv use 1.3.5
Switching default version to v1.3.5
Default version (when not overridden by .terraform-version or TFENV_TERRAFORM_VERSION) is now: 1.3.5

Terraformでもバージョンを確認します

❯ terraform version
Terraform v1.3.5
on darwin_arm64

Terraformの作業用ディレクトリを作成

作業用ディレクトリを作成して、その中に移動します。

mkdir terraform
cd terraform

Terraformの構成ファイルを作成

Terraformの構成ファイルの拡張子は.tfです。
terraform.tfファイルを作成してTerraform自体の情報を定義します。

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }

  required_version = ">= 1.0.0"
}

provider.tfファイルを作成してAWS Providerの情報を定義します。

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

  default_tags {
    tags = {
      Managed = "terraform"
    }
  }
}

regionリソースを作成するリージョン
profileTerraformから利用するAWSのプロファイル名
※AWSプロファイルの設定は今回割愛
default_tagsはTerraformで作成・管理するAWSリソース全てにタグを付与する設定
※この設定をすることでどのリソースがTerraformで作成・管理されたものか判別

ec2.tfファイルを作成してEC2インスタンスの情報を定義します。

resource "aws_instance" "test" {
  ami           = "ami-0404778e217f54308"
  instance_type = "t3.micro"

  tags = {
    Name = "tf_test"
  }
}

ami作成したいインスタンスAMI
instance_type作成したいインスタンスタイプ
※以上の2項目を最低限指定するとVPCやセキュリティグループはデフォルトで作成
tags作成したリソースを判別しやすくする

構成ファイルの整形

Terraformにはコードフォーマッターが用意されているので、これで整形します。

terraform fmt

Terraformでリソースを作成

作成した構成ファイルをもとにTerraformでリソースを作成していきます。

Terraformの初期化

以下のコマンドを実行して構成ファイルの定義内容で初期化を行います。

terraform init

Terraformの実行計画

構成ファイルを実行した際の実行計画が確認できます。
具体的にどんなリソースが作成されるのか確認します。
※実環境には影響を与えないので安全に実行できます。

terraform plan

Terraformの実行計画を反映

terraform planで作成されるリソースに問題がなければその内容を実環境に反映させます。

terraform apply

※実環境に影響を与えるので実行前に確認のダイアログが表示されるのでyesと入力

作成したインスタンスの確認

ここで作成したインスタンスを確認しましょう。
Nameタグにtf_testが設定されたインスタンスが作成されているはずです。
以下のコマンドでも確認できます

terraform show

TerraformでEC2を削除

作成したインスタンスの確認ができたら削除を行います。

Terraformの削除の実行計画

terraform planコマンドにオプション-destroyを付与することで、削除の実行計画を確認することができます。

terraform plan -destroy

Terraformの削除の実行計画を反映

削除の実行計画が問題なければ、反映させます。

terraform destroy

destroyはTerraform管理下にあるリソースを全て削除します
意図しない環境で実行しないように十分注意してください

※確認のダイアログが表示されるのでyesと入力

削除したインスタンスの確認

ここで削除したインスタンスを確認しましょう。

さいごに

はじめてTerraform使ってAWS上にEC2を作ってみましたが、やはりコードで管理ができるようになると、どんな設定をしたのかが全てコードに残るので、それだけでもかなりの恩恵を感じられました。
次回は作ったEC2にアクセスするための設定をTerraformで行いたいと思います。

16
4
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
16
4