目次
負荷を計測するために、数回、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.tf
のresource_group
とregion
を利用しています。必須項目はこの2種類だけです。 - azurerm_search_service - Azure Cognitive Searchの設定。
partition_count
以外は必須項目です。variables.tf
とazurerm_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を利用して、事前にログインした状態にします。 実際にデプロイするまでの手順は次のようになります。
az login
- Azureの認証。ブラウザが起動してログイン画面が表示されます。無事認証がOKなら、az
コマンドでAzure Cloudの情報が取得できます。terraform init
- 初回だけです。Terraformのワーキングディレクトリの初期化処理を実行します。terraform plan
- Terraform < 0.12の場合は実行。最新版だともういらないみたいだ。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
- インデックスエイリアス - Azure Cognitive Searchの新機能
- Azure Cognitive Searchの新機能、Semantic Searchを試してみた
- Azure Cognitive Searchのリクエストのロギング
- Visual Studio Codeのプラグインを作ってみた(Azure Search Analyze Client)
- Azure Cognitive Searchでオートコンプリートやサジェストをしてみる