PR

「Terraform」でAWS環境をコードで構築!インストール手順と使い方を解説

AWS
記事内に広告が含まれています。
この記事でわかること
  • Terraformのインストール方法
  • Terraformの利用方法

最近では、インフラをコードで書くIaC(Infrastructure as Code)というツールが広まってきています。

IaCを利用することで、一度作成した環境を簡単に複製することができます。例えば、開発環境と一部の設定値が違うだけの本番環境を簡単に設定ミスなく構築できるので、利便性が高い技術です。

この記事では、AWSの環境構築を例にIaCツールのひとつである「Terraform」の導入方法と使い方を解説します。

クラウドエンジニアにとって、役立つ内容となっています。ぜひ最後までご覧ください。

Terraformとは

TerraformとはHashiCorp社が開発したIaCツールの一つです。

IaCツールとは、これまで人間が手作業で設定してきたOSとミドルウェアの構築や設定値をコードを書くことで構築できるツールです。

これによって開発環境、検証環境、本番環境といった、設定値が少し違うだけの環境をコピーして作成することができ、構築時間の短縮やヒューマンエラーによる設定ミスなどを防止できます

Terraformで作成できるクラウドサービス

Terraformは、AWSやAzure、GoogleCloudなどのメガクラウドに対応しています。どれか一つのクラウドサービスで使い方を習得すると、ほかのクラウドに対しても応用が可能です。

Terraformを利用するために必要なツール

クラウドサービスによって異なりますが、Terraformを利用するには事前にツールが必要となります。

例えばAWSの場合だと、AWSリソースをコマンドで操作できる「AWS CLI」を導入しておく必要があります。

※AWS CLIの導入方法や初期設定方法は以下の記事を参照下さい。

「awsをコマンドで操作するには?awscliのインストール手順と使い方を解説!」

Terraformのインストール手順

Terraformは、こちらの公式サイトからダウンロードしてください。

インストール手順はこちらです。

Terraformのインストール手順
  • Step1
    ダウンロードしたzipファイルを解凍し、任意のフォルダに配置
  • Step2
    配置したディレクトリをシステムの「PATH」環境変数に追加
環境変数の設定方法
  • 「環境変数」の設定画面を開く。
  • 「システム環境変数」の中で「Path」を選択して「編集」をクリック。
  • 「新規」ボタンをクリックし、Terraformバイナリ(Windowsの場合「terraform.exe」)を配置したディレクトリのパスを追加します。

動作確認

Terraformが正常にインストールされたか確認します。

コマンドプロンプト、または、PowerShellを開き、以下のコマンドを実行してください。

terraform --version

バージョン情報が表示されればインストールは完了です。

C:\Users\xxxxxx>terraform --version
Terraform v1.10.0
on windows_386

Terraformの使い方

ここからは、実際に Terraformを使ってインフラを構築する手順を紹介します。

ここでは例として、AWS EC2インスタンスを作成します。

作業ディレクトリを作成

Terraformの動作確認用に作業ディレクトリを作成しておきます。作業ディレクトリは任意の場所に作成してください。

コマンドで作成する時は以下のコマンドを実行してください。

mkdir my-terraform-project
cd my-terraform-project

main.tfファイルを作成

Terraformはmain.tfファイルに記述したコードで作成するリソースや設定値を定義します。

例えば、EC2を作成する場合のmain.tfファイルは次のようになります。

provider "aws" {
  region = "ap-northeast-1"  # 東京リージョンを指定
}

resource "aws_instance" "example" {
  ami           = "ami-023ff3d4ab11b2525"  # 使用するAMI ID
  instance_type = "t2.micro"      # インスタンスタイプ

  tags = {
    Name = "example-instance"
  }
}

上記のコードは東京リージョンにEC2(Amazon Linux 2023 )を作成する内容となっています。

AMI IDは、OSイメージを識別する様なものです。

どの様なAMI IDを利用できるかは、AWSマネジメントコンソールから確認してください。

Terraformの初期化(init)

Terraformでインフラを構築するには、まず、初期プラグインをダウンロードする必要があります。

以下のコマンドを実行して初期プラグインをダウンロードします。

terraform init

以下のように「Terraform has been successfully initialized!」と表示されれば初期化が成功です。

C:\workspace\my-terarform-project>terraform init
Initializing the backend...
Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v5.78.0...
- Installed hashicorp/aws v5.78.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

プランの確認(plan)

Terraformでは、実際に環境を構築する前に、どのようにリソースが追加、変更されるかを確認できます。

プランを実行するには、main.tfファイルがあるディレクトリで以下のコマンドを実行します

terraform plan

以下のような結果が表示されるので、追加・変更される内容が想定通りであることを確認します。

C:\workspace\my-terarform-project>terraform plan

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the
following symbols:
  + create

Terraform will perform the following actions:

  # aws_instance.example will be created
  + resource "aws_instance" "example" {
      + ami                                  = "ami-023ff3d4ab11b2525"
      + arn                                  = (known after apply)
      + associate_public_ip_address          = (known after apply)
      + availability_zone                    = (known after apply)
      
      ・・・省略・・・
    
    }

Plan: 1 to add, 0 to change, 0 to destroy.

インフラの適用(apply)

Planの結果が問題ないことを確認したら、以下のコマンドでmain.tfの内容を適用します。

terraform apply

「Enter a Value:」と表示されるので、yesと入力します。

結果が以下となれば、正常に構築が完了しました。


・・・省略・・・

  Enter a value: yes

aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed]
aws_instance.example: Creation complete after 14s [id=i-0b582eb05f4c47fb2]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Terraformではこの様に、「init」→「plan」→「apply」のフローで実行します。

planの結果は正常でも、applyでエラーとなることがあります。

この場合の多くは、TerraFormを利用せずに手動でリソースを構築したことが原因であることが多いです。これは、TerraFormが管理しているAWSの状態と実際のAWSの状態が異なるために発生します。(例えば、追加しようとしたリソースがすでに存在する場合など)

そのため、TerraFormを利用する場合は、リソースの構築は必ずTerraForm経由で行うようにしてください。

インフラの破棄(destroy)

Terraformで作成したリソースをすべて破棄したい場合は、以下のコマンドを実行します。検証のために作成したリソースの削除などで削除漏れが防止できます。

terraform destroy

これも適用の確認を求められたらyesと入力します。

個別のリソースを削除したい場合は、main.tfから該当のリソースのコードを削除し、applyすることで削除できます。

まとめ

  • Terraformを利用することで同じ環境がコピーして作成できる
  • Terraformは「Init」→「plan」→「apply」の手順で実施する
  • Terraformでインフラを作成する場合は、必ずTerraform経由でリソースを操作する

TerraFormをはじめとしたIaCツールはクラウド開発で利用されることが多くなってきています。

AWSでの生産性の高い開発に慣れてきたら、次はIaCツールでインフラ構築の生産性を向上させてみてください。

本記事が皆様の参考になれば幸いです。

関連記事:【AWS】LambdaをJavaで作成するには?環境構築方法からデプロイ方法まで徹底解説!

コメント

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