WindowsでTerraformを使ってみる

はじめに

Terraform初心者(使ったことがないレベル)の人がつかってみたよ、という内容になってます。忘備録的な感じです。

試した環境

  • Windows 10 (21H1)
  • Terraform (0.15.4)

Terraformは下記よりダウンロードしてきました。 www.terraform.io

環境を作成するところはAzureを利用してみます。

準備

Terraformのインストール

ということでダウンロードしたファイルを適当な場所に解凍します。ここでは C:¥Terraform に解凍してみます。

f:id:akky97:20210522162448p:plain

次に環境変数PATHにTerraform.exeを配置したパスを追加して、とあるので追加します。

スタートメニューを右クリックし、「システム」を選択します。プロパティ画面が開いたら[詳細設定]タブ→[環境変数]ボタンをクリックします。

f:id:akky97:20210522163201p:plain

画面上部のユーザー環境変数にある「PATH」を選択し、[編集]ボタンをクリックします。

f:id:akky97:20210522163453p:plain

編集画面が開いたら[新規]ボタンをクリックし、Terraform.exeを配置したパスを入力します。入力が完了したら[OK]ボタンをクリックして追加した内容を適用します。

f:id:akky97:20210522163849p:plain

コマンドプロンプロを開き、以下のコマンドを実行してバージョンが表示されるか確認します。

terraform -v

コマンドが実行されると以下のようにバージョン情報が表示されます。

f:id:akky97:20210522164304p:plain

もしバージョンが表示されない場合、PATHの設定にミスがある可能性がありますので設定内容を見直します。(綴りミスとか)

Azure CLI toolのインストール

ここではAzure上に環境を作ってみたいと思っているので、Azure CLI Toolをインストールします。 Powershellを管理者権限で起動して以下のコマンドを実行します。

Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi

インストールが成功していても失敗していても画面上には特に何も表示されません。(下記のように表示されます)

f:id:akky97:20210522165432p:plain

インストールされているかを確認するため、スタートメニューを右クリックし、「プログラムと機能」を選択します。 一覧の中から「Microsoft Azure CLI」があるか確認します。

f:id:akky97:20210522170735p:plain

一覧になければインストールされていない状態なので、もう一度インストールを実施します。Powershellを管理者権限で実行されているか、ダウンロード先のURLが有効なものではなくなっていないか、など確認してみてください。

インストールがうまくいっている場合、azコマンドを実行すると以下のようにウェルカム画面が表示されます。

f:id:akky97:20210522171217p:plain

やってみる

TerraformのページにAWS、Azure、GCPチュートリアルも公開されているのでこちらを試してみます。

お仕事の関係上、AWSよりAzureを使うことが多いので、ここではAzureを試してみます。

下記を参考に進めます。

learn.hashicorp.com

作業ディレクトリの作成

C:¥samples¥terraformディレクトリを作成し、main.tfを作成します。

内容は公式ドキュメントを参考にし、ロケーションを日本に変更しました。

# Configure the Azure provider
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 2.26"
    }
  }

  required_version = ">= 0.14.9"
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg" {
  name     = "myTFResourceGroup"
  location = "japaneast"
}

初期化実行

C:¥samples¥terraform上で、terraform initを実行します。

f:id:akky97:20210522174352p:plain

次にコマンドの出力結果にもある通り、Planを作成します。

計画の構築

terraform planを実行します。

f:id:akky97:20210522180240p:plain

と、ここでエラーになってしまいました。

PS C:\samples\terraform> terraform plan
╷
│ Error: Error building AzureRM Client: obtain subscription() from Azure CLI: Error parsing json result from the Azure CLI: Error waiting for the Azure CLI: exit status 1: ERROR: Please run 'az login' to setup account.
│ 
│   with provider["registry.terraform.io/hashicorp/azurerm"],
│   on main.tf line 13, in provider "azurerm":
│   13: provider "azurerm" {
│ 
╵

Azureのログインをしてから実行してねとあるので、az loginを実行します。コマンド実行するとブラウザが開き、Azureへのログインを促されるので普通にログインを実施します。

再度、terraform planを実行します。

f:id:akky97:20210522180715p:plain

addに一件追加された状態となり、成功しました。

計画内容を適用

terraform applyを実行します。planで登録した内容を実際のサービスへ適用する感じかなと思います。

f:id:akky97:20210522181519p:plain

実施内容が表示され、実行して良いかの確認がありますのでyesを入力します。

f:id:akky97:20210522181748p:plain

無事処理が終わりました。サンプルはリソースグループを作っているだけのようなので、Azure ポータル上で確認してみます。

f:id:akky97:20210522182706p:plain

ポータル上でもリソースグループが作成されていることが確認できました。(すごい簡単...)

削除する

最後に今作成したリソースを削除してみます。

terraform destroyを実行します。

f:id:akky97:20210522183304p:plain

ここも削除確認がありますので、yesを入力します。

f:id:akky97:20210522184201p:plain

削除されるまで10秒間隔でチェックがあり、無事削除されました。 このあと、ポータル上からも消えていたのを確認しました。

やってみたいこと

最終的にはお仕事の方へ反映していきたいので、まずは仮想環境をちゃんと構築できるようにしたいですね。