ローカルのWindowsにTerraformをインストールする

ファイルに定義を記述することでインフラ環境を再現・構築できるようにする方法を Infrastructure as Code (IaC) と言います。テキストコードの自動実行なので、手動でのサーバ構築やネットワーク設定に比べて人為的なミスがなく誰でも同じインフラ環境が再現できます。また、テキストファイルなのでインフラのバージョン管理ができることになります。IaC ツールとして代表的なものにAWSのCloudFormationやHashiCorpのTerraformなどがあります。CloudFormationはAWS専用なのに対して、TerraformはAWS、Azure、GCPなど多くのクラウドプラットフォームに対応していますが、今回の記事では後者の Terraform を中心に学習していきます。ここではローカルのWindows環境からTerraformを使用してAWSのインフラを作成していきます。

目次

Terraformのインストール

WindowsにTerraformをインストールする

Chocolateyをインストールする

Windowsのパッケージ管理ツールの Chocolatey を使って Terraformのインストールしていきますので、先にChocolateyのインストールをしておく必要があります。

あわせて読みたい
Windows|Chocolateyインストールと実用コマンド ChocolateyはWindowsのパッケージ管理ツールです。Webシステムの開発をするにあたってローカル環境のWindowsにも各種ツールをインストールすることも多々あります。Choc...

Terraformをインストールする

以下も同様にPoserShellで次のコマンドを実行してください。

【インストールの実行】
choco install terraform
->スクリプトの実行の確認が表示されるのでここでは「A」を入力します。
Do you want to run the script?([Y]es/[A]ll - yes to all/[N]o/[P]rint): A

【インストールの確認】
terraform -version
terraform -help

Windowsのローカル環境からAWS上にインフラを作成する

TerraformからAWS上にインフラを作成する場合、AWS CLIのインストールとアクセスキーの設定が必要となります。CLIの設定が完了してからTeraformの設定をしていきましょう。

AWS CLIのインストールと設定

以下のインストーラをダウンロードして実行してください。

https://awscli.amazonaws.com/AWSCLIV2.msi

AWS CLIのバージョンが表示されればインストール成功です。

aws --version

次に、AWS CLIのデフォルトプロフィールの設定を行います。

アクセスキーとがシークレットについては「AWS CLIの設定方法」を参考に作成・取得してください。

【デフォルトプロファイル作成のコマンドを実行】
aws configure
->以下のプロンプトが表示されます。
AWS Access Key ID [None]: ********************
AWS Secret Access Key [None]: ****************************************
Default region name [None]: ap-northeast-1
Default output format [None]: json

デフォルトプロファイルの作成を確認します。

aws configure list-profiles
->defaultと表示されれば成功です。

参考URL:https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

AWS CLI のプロフィールの設定は以下のパスに2ファイル作成されます。(Windows 11)
C:\Users\ユーザ名\aws
config
credentials

Terraformの設定

まずは任意の場所にプロジェクトフォルダを作成します。ここでは tutorial としておきます。そこにmain.tfとvariable.tfの2ファイルを作成します。

以下の例では東京リジョンにAmazon Linux 2023のマシンイメージのEC2インスタンスをt2.microで作成します。

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

  required_version = ">= 1.2.0"
}

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

resource "aws_instance" "app_server" {
  ami           = "ami-0599b6e53ca798bb2"
  instance_type = "t2.micro"

  tags = {
    Name = var.instance_name
  }
}

この変数ファイルではインスタンス名を定義しています。

【variable.tf】
variable "instance_name" {
  description = "EC2 instance name tag value"
  type        = string
  default     = "com.example.www"
}

AMIマシンイメージは同じAMIの種類であってもリジョンによって異なるので注意が必要です。

AWSプロバイダのリソースタイプ

リソースブロックはリソースタイプとリソース名を指定します。

リソースタイプはプロバイダ名と実際のリソースタイプを組み合わせたものです。

リソース名は任意の名前を付けることができます。

resource "aws_instance" "app_server"

AWSのリソース名は以下のリンクを参考にして下さい。

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance

.tfファイルのフォーマットとバリデーション

以下のコマンドを使用して作成した.tfファイルのフォーマットやバリデーションをしておきましょう。

【.tfファイルのフォーマット】
terraform fmt

【.tfファイルのバリデーション】
terraform validate

ディレクトリの初期化

以下のコマンドでディレクトリの初期化を行います。

terraform init

同フォルダ内に以下の隠しフォルダが作成され、プロバイダプログラムとモジュールがインストールされます。今回の例ではプロバイダはaws となっています。

.terraform

インフラの作成

【実行プランの表示のみ】
terraform plan

【実行プランの表示と意思の確認後にプランの実行】
terraform apply
->プロンプトにyesと入力すると実行される。

インフラの実行処理が終わると以下の「状態ファイル」が同フォルダ内に作成されます。Terraformはこのファイル使ってインフラの更新・削除を行います。このファイルが無くなってしまうとこれらが出来なくなります。削除しないように十分注意しましょう。

terraform.tfstate

インフラ作成の確認

AWSの管理ページからEC2のサービスページに移動してEC2インスタンスが作成されている事を確認しましょう。

または、以下のコマンドを使用して作成されたインスタンスのリストを表示します。

aws ec2 describe-instances \
  --query "Reservations[].Instances[].[InstanceId, Tags[?Key=='Name'].Value | [0], State.Name]" \
  --output table

インフラの状態の確認

インフラの状態を確認するには以下のコマンドを使用します。

terraform state list
->terraform.tfstateを読み取って現在使用しているリソースのリストを表示

terraform show
->デフォルトで 現在の状態ファイル(terraform.tfstate)を読み取って管理しているリソースの詳細を表示

インフラの更新

変数パラメータを渡してEC2インスタンス名の変更をしてみましょう。

terraform apply -var "instance_name=com.example.ec2"

コマンド実行後に、上記のインフラ作成時同様に変更が反映されたかを確認しましょう。

ここでは変数を使ってインフラの変更をしたので、*.tfファイルが変更されるわけではないことに留意しておきましょう。

インフラの削除

次のコマンドでインフラの削除を行います。

terraform destroy

インフラ削除後の確認も前述同様にしてみましょう。

まとめ

今回の記事では、WindowsにTerraformをインストールしてAWS上にインフラを作成する手順を学習しました。WindowsにTerraformをインストールする際には先にChocolateyをインストールする必要がありましたね。AWSのCLIのインストールと設定も必要でした。Terraformの.tf設定ファイルを書いて作成するリソースを定義しました。ディレクトリの初期化、インフラの作成、更新、削除のコマンドも学びました。terraform.tfstateファイルの管理には気を付けないといけませんでしたね。これから様々なインフラのリソースの作成を試していきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次