- 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は、こちらの公式サイトからダウンロードしてください。
インストール手順はこちらです。
- 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-projectmain.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 )を作成する内容となっています。
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」のフローで実行します。
インフラの破棄(destroy)
Terraformで作成したリソースをすべて破棄したい場合は、以下のコマンドを実行します。検証のために作成したリソースの削除などで削除漏れが防止できます。
terraform destroyこれも適用の確認を求められたらyesと入力します。
まとめ
- Terraformを利用することで同じ環境がコピーして作成できる
- Terraformは「Init」→「plan」→「apply」の手順で実施する
- Terraformでインフラを作成する場合は、必ずTerraform経由でリソースを操作する
TerraFormをはじめとしたIaCツールはクラウド開発で利用されることが多くなってきています。
AWSでの生産性の高い開発に慣れてきたら、次はIaCツールでインフラ構築の生産性を向上させてみてください。
本記事が皆様の参考になれば幸いです。



コメント