Azure Batch の使用を開始するには、Terraform を使用して、ストレージを含む Batch アカウントを作成します。 コンピューティング リソース (コンピューティング ノードのプール) や Batch ジョブを作成するには、Batch アカウントが必要です。 Azure Storage アカウントを Batch アカウントにリンクできます。 この組み合わせは、アプリケーションをデプロイし、ほとんどの実際のワークロードの入力データと出力データを格納するのに役立ちます。
このクイックスタートを完了すると、Batch サービスの主要な概念を理解し、より大規模でより現実的なワークロードで Batch を試せるようになります。
Terraformはクラウドインフラストラクチャの定義、プレビュー、そしてデプロイメントを可能にします。 Terraform を使用する際は、HCL 構文を使って構成ファイルを作成します。 HCL 構文を使用すると、クラウド プロバイダー (Azure など) とクラウド インフラストラクチャを構成する要素を指定できます。 あなたの設定ファイルを作成した後、実行計画を作成します。これにより、インフラストラクチャの変更をデプロイする前にプレビューすることができます。 変更を確認したら、実行プランを適用してインフラストラクチャをデプロイします。
この記事では、次の方法について説明します。
- random_petを使用して Azure リソース グループ名のランダムな値を作成する
- azurerm_resource_group を使って Azure リソース グループを作成する
- random_stringを使用してランダムな値を作成する
- azurerm_storage_account を使用して Azure Storage アカウントを作成する
- azurerm_batch_account を使用して Azure Batch アカウントを作成する
[前提条件]
Terraform コードを実装する
注
この記事のサンプル コードは、 Azure Terraform GitHub リポジトリにあります。 Terraform の現在および以前のバージョンからのテスト結果を含むログ ファイルを表示できます。
Terraform を使用して Azure リソースを管理する方法を示すその他の記事とサンプル コードを参照してください
サンプルの Terraform コードをテストして実行するディレクトリを作成し、それを現在のディレクトリにします。
providers.tf
という名前のファイルを作成し、次のコードを挿入します。terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
main.tf
という名前のファイルを作成し、次のコードを挿入します。resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { name = random_pet.rg_name.id ___location = var.resource_group_location } resource "random_string" "azurerm_storage_account_name" { length = 13 lower = true numeric = false special = false upper = false } resource "random_string" "azurerm_batch_account_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_storage_account" "storage" { name = "storage${random_string.azurerm_storage_account_name.result}" resource_group_name = azurerm_resource_group.rg.name ___location = azurerm_resource_group.rg.___location account_tier = element(split("_", var.storage_account_type), 0) account_replication_type = element(split("_", var.storage_account_type), 1) } resource "azurerm_batch_account" "batch" { name = "batch${random_string.azurerm_batch_account_name.result}" resource_group_name = azurerm_resource_group.rg.name ___location = azurerm_resource_group.rg.___location storage_account_id = azurerm_storage_account.storage.id storage_account_authentication_mode = "StorageKeys" }
variables.tf
という名前のファイルを作成し、次のコードを挿入します。variable "resource_group_location" { type = string default = "eastus" description = "Location for all resources." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "storage_account_type" { type = string default = "Standard_LRS" description = "Azure Storage account type." validation { condition = contains(["Premium_LRS", "Premium_ZRS", "Standard_GRS", "Standard_GZRS", "Standard_LRS", "Standard_RAGRS", "Standard_RAGZRS", "Standard_ZRS"], var.storage_account_type) error_message = "Invalid storage account type. The value should be one of the following: 'Premium_LRS','Premium_ZRS','Standard_GRS','Standard_GZRS','Standard_LRS','Standard_RAGRS','Standard_RAGZRS','Standard_ZRS'." } }
outputs.tf
という名前のファイルを作成し、次のコードを挿入します。output "resource_group_name" { value = azurerm_resource_group.rg.name } output "batch_name" { value = azurerm_batch_account.batch.name } output "storage_name" { value = azurerm_storage_account.storage.name }
Terraform を初期化する
terraform init
terraform init -upgrade
重要なポイント:
-
-upgrade
パラメーターは、必要なプロバイダー プラグインを、構成のバージョン制約に準拠する最新バージョンにアップグレードします。
Terraform実行計画を作成する
実行計画を作成するために terraform plan を実行してください。
terraform plan -out main.tfplan
重要なポイント:
-
terraform plan
コマンドは実行プランを作成しますが、実行はしません。 代わりに、それは設定ファイルで指定された設定を作成するために必要な手順を決定します。 このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが期待と一致するかどうかを確認できます。 - 任意の
-out
パラメーターを使用すると、プランの出力ファイルを指定することができます。-out
パラメーターを使用すると、レビューしたプランがそのまま適用されることが保証されます。
Terraform 実行プランを適用する
クラウドインフラストラクチャに対して実行計画を適用するには、terraform apply を実行してください。
terraform apply main.tfplan
重要なポイント:
-
terraform apply
コマンドの例では、以前にterraform plan -out main.tfplan
を実行していることを前提としています。 -
-out
パラメーターに別のファイル名を指定した場合は、terraform apply
への呼び出しで同じファイル名を使用してください。 -
-out
パラメーターを使用しなかった場合は、パラメーターを指定せずにterraform apply
を呼び出します。
結果を確認してください。
Azure リソース グループ名を取得します。
resource_group_name=$(terraform output -raw resource_group_name)
Batch アカウント名を取得します。
batch_name=$(terraform output -raw batch_name)
az batch account show を実行して、新しい Batch アカウントに関する情報を表示します。
az batch account show \ --resource-group $resource_group_name \ --name $batch_name
リソースをクリーンアップする
Terraform を使用して作成されたリソースが不要になったら、次の手順を実行します。
terraform plan を実行し、
destroy
フラグを指定してください。terraform plan -destroy -out main.destroy.tfplan
重要なポイント:
-
terraform plan
コマンドは実行プランを作成しますが、実行はしません。 代わりに、それは設定ファイルで指定された設定を作成するために必要な手順を決定します。 このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが期待と一致するかどうかを確認できます。 - 任意の
-out
パラメーターを使用すると、プランの出力ファイルを指定することができます。-out
パラメーターを使用すると、レビューしたプランがそのまま適用されることが保証されます。
-
terraform applyを実行して、実行プランを適用します。
terraform apply main.destroy.tfplan
Azure での Terraform のトラブルシューティング
Azure で Terraform を使用する際の一般的な問題をトラブルシュートする