TerraformでAzure Cognitive Searchのクラスターを起動

Posted by johtani on Tuesday, August 18, 2020

目次

負荷を計測するために、数回、Azure Cognitive Searchのクラスターを起動したり、停止したりしてました。 これは、Terraformでやると楽できるのでは?と思ったので、やってみました。 1パーティションのクラスターなので、全然大したことはないのですが、メモを残しておくためにブログに書いておきます。

基本的にはTerraformの公式ドキュメントにあったものを自分用に変数を抽出しただけです。

ファイルたち

単にクラスターを起動するためだけなので、2種類のファイルだけ作成しました(1個でもいいかも)。

  • variables.tf - 変数用のファイル。いくつかの設定を変数として定義しました。
  • terraform.tf - Terraform本体のファイル。

variables.tf

まずはvariables.tfです(ファイル内の並びは異なりますが。。。)。terraform.tfで利用する5つの変数です。

  • resource_group - リソースグループ名。既存とは異なるリソースグループ名にしました(変に壊してもいいので)。
  • machine_type - 価格レベル(SKU)。公式ドキュメントに設定できる値の一覧があります。今回はWikipediaのデータを登録していたのでそれが入るサイズにしています。
  • region - 場所(リージョン)。リージョンの一覧はどこにあるんだろう?これを参考にしましたが。
  • partition_size - パーティションのサイズ(=Elasticsearchでのシャードかな?)です。今回は1つでの性能を計測したかったので1にしてあります。
  • search_cluster_name - Azure Cognitive Searchのサービス名。search.windows.net名前空間で一意である必要があったので、他の人が使わなそうな名前をつけています。
variable "machine_type" {
  default = "standard"
}

variable "region" {
  default = "East Asia"
}

variable "resource_group" {
  default = "johtani-wiki-test"
}

variable "search_cluster_name" {
  default = "johtani-wikipedia"
}

variable "partition_size" {
  default = 1
}

terraform.tf

terraform.tfは以下の通り。Terraformの公式ドキュメントにある例providerを追加しただけのものになります。

  • provider - プロバイダーの設定。Azureを利用するという宣言です。features {}がないとエラーになります。空でも必ず指定が必要です。認証周りについては、azure-cli経由で認証する方式を採用しました。azure-cliはHomebrewでインストールしています。
  • azurerm_resource_group - リソースグループの設定。variables.tfresource_groupregionを利用しています。必須項目はこの2種類だけです。
  • azurerm_search_service - Azure Cognitive Searchの設定。partition_count以外は必須項目です。variables.tfazurerm_resource_groupの設定を利用しています。今回は利用していませんが、レプリカ数なども指定できるようになっています。
# Azureのproviderを指定。
provider "azurerm" {
  features {}
}

# リソースグループの設定
resource "azurerm_resource_group" "wiki-test" {
  name     = var.resource_group
  location = var.region
}

# Azure Cognitive Searchの設定
resource "azurerm_search_service" "search_service" {
  name                = var.search_cluster_name
  resource_group_name = azurerm_resource_group.wiki-test.name
  location            = azurerm_resource_group.wiki-test.location
  sku                 = var.machine_type
  partition_count     = var.partition_size
}

以上がファイルです。ほぼ公式ドキュメントのサンプル通りですねw

デプロイとか

ファイルの準備ができたら実際にデプロイします。 Azureの環境への認証にはAzure CLIを利用して、事前にログインした状態にします。 実際にデプロイするまでの手順は次のようになります。

  1. az login - Azureの認証。ブラウザが起動してログイン画面が表示されます。無事認証がOKなら、azコマンドでAzure Cloudの情報が取得できます。
  2. terraform init - 初回だけです。Terraformのワーキングディレクトリの初期化処理を実行します。
  3. terraform plan - Terraform < 0.12の場合は実行。最新版だともういらないみたいだ。
  4. terraform apply - 実際にAzure上にクラスターを起動します。Terraformが隠蔽してくれているので、実際にどんなことをやっているかはわかってないですが。

以上で、Azure Cognitive Searchのクラスターが起動します。 すごく簡単です。Webコンソールでチェックすれば、起動していることも確認できます。

この状態では、クラスターが起動しただけなので、あとは必要に応じてデータをロードしたり、アプリから検索したりと行ったことが可能になります。 そのへんの話はまた機会があれば。

Destroy

今回は負荷テスト用にクラスターを起動していましたので、必要なくなれば、クラスターを削除します。Terraformを導入したもう一つの理由がこの簡略化です。 terraform destroyを実行するだけで、Azure Cognitive Searchのクラスターおよび、リソースグループが削除されます。

まとめ

ということで、ほぼ公式ドキュメントのままですが、TerraformでAzure Cognitive Searchのクラスターを起動する方法の紹介でした。 ブログを書いていて、1点気になったのは、ロケーション(リージョン)の一覧はどこにあるんだろう?という点です。azコマンドとかで出てくるのかなぁ?


comments powered by Disqus

See Also by Hugo


Related by prelims-cli