HashiCorp公式のTerraformチュートリアル(AWS)をやってみた

HashiCorp公式のTerraformチュートリアル(AWS)をやってみた

Clock Icon2024.09.18

本記事では、HashiCorpの公式サイトで公開されているTerraform Tutorials「Get Started - AWS」の内容を紹介します。

https://developer.hashicorp.com/terraform/tutorials/aws-get-started

少し環境を変えて実施したい方向けに、サンプルコードも共有します。

Terraform Tutorialsについて

HashiCorpの公式サイトでは、HashiCorp製品のチュートリアルが提供されています。

本ブログでは、AWSのチュートリアルを紹介しますが、サイト上にはAzureやGoogle Cloud、OCI版のチュートリアルも用意されています。

普段使っているクラウドサービスを使ってチュートリアルを実行することが可能です。

HCP TerraformやTerraformの認定試験向けの内容も用意されています。

https://developer.hashicorp.com/terraform/tutorials

チュートリアルの概要

Terraformの基本を学び、AWS環境にリソース(EC2)をデプロイすることを体験できるハンズオン形式のチュートリアルです。

https://developer.hashicorp.com/terraform/tutorials/aws-get-started

  • 所要時間: 約1時間
  • 難易度: 初級
  • 前提知識: AWSの基本的な知識

事前準備

以下を事前に準備しておきます。

  • AWSアカウント
  • ローカルPCにAWS CLIのインストール
  • リソース作成権限が付与された、AWSアカウント認証情報

チュートリアル中でt2.microのEC2インスタンスを1台作成します。

無料利用枠で収まる場合もあるかと思いますが、料金が発生する可能性もあります。

オプション: tenvの導入

Terraformのインストール等は、チュートリアル上でも手順があります。

Terraformを直接インストールする手順が紹介されています。

複数の環境でTerraformを使っていいて、それぞれ異なるバージョンを使っている場合、バージョン切り替えを楽にしたいときがあります。

バージョン管理ツールを導入することで、切り替えが楽になります。

tenvはTerraformのバージョン管理ツールです。これを機に導入しておくのが良いと思います。

https://dev.classmethod.jp/articles/try-tenv-terraform-version-manager/

内容

https://developer.hashicorp.com/terraform/tutorials/aws-get-started

内容 備考
What is Infrastructure as Code with Terraform? IaCやTerraformの概要 インタラクティブラボがついていますが、後の章「Build」と同じ内容のためスキップしてもOK
Install Terraformのインストール方法、ローカルDockerをTerraformで管理 PowerShellでTerraformの入力補完を有効化したい場合は以下を参照
PowerShellでTerraformの入力補完(Auto Complete)を有効にする
Build リソース(EC2)を作成
Change リソース(EC2)の設定を変更
Destroy リソース(EC2)を削除
Variable リソース(EC2 Nameタグ)設定を変数化
Outputs リソース(EC2 インスタンスID・パブリックIPアドレス)の設定値を出力
Remote state State管理をローカルからHCP Terraformに移行 HCP Terraformが必要(Freeプラン可)
Home - HCP Terraform | Terraform | HashiCorp Developer

サンプルコード

以下の要望もあるかと思い、サンプルコードを作ってみました。

  • リージョン(チュートリアル内だとus-west-2)を変えて実行したい
  • AWSアカウント内にデフォルトVPCが存在しない
    • チュートリアル内に手動で作る手順はあるが、せっかくならTerraformでやりたい

ハンズオン「Build」でお使いください。そのまま、以降の手順も実施可能です。

main.tf
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.16"
    }
  }

  required_version = ">= 1.2.0"
}

provider "aws" {
  region = "ap-northeast-1"
}

# 追加: VPC関連リソースを作成
resource "aws_vpc" "this" {
  cidr_block = "10.0.0.0/16"
}
resource "aws_subnet" "this" {
  vpc_id     = aws_vpc.this.id
  cidr_block = "10.0.0.0/20"
}

# 追加: 空のセキュリティグループ作成
resource "aws_security_group" "this" {
  name   = "ExampleAppServerInstance"
  vpc_id = aws_vpc.this.id
}

resource "aws_instance" "app_server" {
  ami = "ami-0c6359fd9eb30edcf"
  # ami                    = "ami-0f75d1a8c9141bd00" # 置き換え
  instance_type          = "t2.micro"
  vpc_security_group_ids = [aws_security_group.this.id] # 追加
  subnet_id              = aws_subnet.this.id           # 追加

  tags = {
    Name = "ExampleAppServerInstance"
  }
}

サンプルコードのリージョンは、ap-northeast-1としました。

他のリージョンでやりたい場合は、コード内のregionamiを置き換えてください。

AMI IDを簡単に取得したい場合は、以下のコマンドをお使いください。

Amazon Linux2023の最新と一つ前のAMI IDを取得できます。

aws ec2 describe-images \
 --owners amazon \
 --filters "Name=name,Values=al2023-ami-2023.*-x86_64" "Name=state,Values=available" \
 --query "sort_by(Images, &CreationDate)[-2:].ImageId"

感想

Terraformの基本がコンパクトにまとまっており、良いチュートリアルでした。

これからTerraformを始めたい方へのファーストステップとしてオススメです。

次のステップとしては、同サイト上の他のチュートリアルをやってみるのが良いと思います。

Fundamentals」のチュートリアルはどれもTerraformを使う上で役立つので、ぜひやってみてほしいです。

以上、AWS事業本部の佐藤(@chari7311)でした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.