次の方法で共有


クイック スタート: Terraform を使用して Azure Stream Analytics ジョブを作成する

この記事では、Terraform を使用して Azure Stream Analytics ジョブを作成する方法について説明します。 ジョブの作成後、デプロイを検証します。

Terraformはクラウドインフラストラクチャの定義、プレビュー、そしてデプロイメントを可能にします。 Terraform を使用する際は、HCL 構文を使って構成ファイルを作成します。 HCL 構文を使用すると、クラウド プロバイダー (Azure など) とクラウド インフラストラクチャを構成する要素を指定できます。 あなたの設定ファイルを作成した後、実行計画を作成します。これにより、インフラストラクチャの変更をデプロイする前にプレビューすることができます。 変更を確認したら、実行プランを適用してインフラストラクチャをデプロイします。

この記事では、次の方法について説明します。

  • random_petを使用して、Azure リソース グループ名のランダムな値を作成します。
  • azurerm_resource_groupを使用して Azure リソース グループを作成します。
  • random_petを使用して、Azure Stream Analytics ジョブ名のランダムな値を作成します。
  • azurerm_stream_analytics_jobを使用して Azure Stream Analytics ジョブを作成します。

[前提条件]

Terraform コードを実装する

  1. サンプルの Terraform コードをテストして実行するディレクトリを作成し、それを現在のディレクトリにします。

  2. 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 {}
    }
    
  3. main.tf という名前のファイルを作成し、次のコードを挿入します。

    resource "random_pet" "rg_name" {
      prefix = "rg"
    }
    
    resource "azurerm_resource_group" "rg" {
      name     = random_pet.rg_name.id
      ___location = var.resource_group_location
    }
    
    resource "random_pet" "stream_analytics_job_name" {
      prefix = "job"
    }
    
    resource "azurerm_stream_analytics_job" "job" {
      name                                     = random_pet.stream_analytics_job_name.id
      resource_group_name                      = azurerm_resource_group.rg.name
      ___location                                 = azurerm_resource_group.rg.___location
      streaming_units                          = var.number_of_streaming_units
      events_out_of_order_max_delay_in_seconds = 0
      events_late_arrival_max_delay_in_seconds = 5
      data_locale                              = "en-US"
      events_out_of_order_policy               = "Adjust"
      output_error_policy                      = "Stop"
    
      transformation_query = <<QUERY
    SELECT
        *
    INTO
        [YourOutputAlias]
    FROM
        [YourInputAlias]
    QUERY
    
    }
    
  4. variables.tf という名前のファイルを作成し、次のコードを挿入します。

    variable "resource_group_location" {
      type        = string
      description = "Location for the resources."
      default     = "eastus"
    }
    
    variable "number_of_streaming_units" {
      type        = number
      description = "Number of streaming units."
      default     = 1
      validation {
        condition     = contains([1, 3, 6, 12, 18, 24, 30, 36, 42, 48], var.number_of_streaming_units)
        error_message = "Invalid value for: number_of_streaming_units. The value should be one of the following: 1, 3, 6, 12, 18, 24, 30, 36, 42, 48."
      }
    }
    
  5. outputs.tf という名前のファイルを作成し、次のコードを挿入します。

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "stream_analytics_job_name" {
      value = azurerm_stream_analytics_job.job.name
    }
    

Terraform を初期化する

terraform init 実行して、Terraform デプロイを初期化します。 このコマンドは、Azureリソースを管理するために必要なAzureプロバイダーをダウンロードします。

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 を呼び出します。

結果を確認してください。

  1. Azure リソース グループ名を取得します。

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. 新しい Azure Stream Analytics ジョブ名を取得します。

    stream_analytics_job_name=$(terraform output -raw stream_analytics_job_name)
    
  3. az stream-analytics job show を実行して、ジョブに関する情報を表示します。

    az stream-analytics job show \
    --resource-group $resource_group_name \
    --job-name $stream_analytics_job_name
    

リソースをクリーンアップする

Terraform を使用して作成されたリソースが不要になったら、次の手順を実行します。

  1. terraform plan を実行し、destroy フラグを指定してください。

    terraform plan -destroy -out main.destroy.tfplan
    

    重要なポイント:

    • terraform plan コマンドは実行プランを作成しますが、実行はしません。 代わりに、それは設定ファイルで指定された設定を作成するために必要な手順を決定します。 このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが期待と一致するかどうかを確認できます。
    • 任意の-outパラメーターを使用すると、プランの出力ファイルを指定することができます。 -out パラメーターを使用すると、レビューしたプランがそのまま適用されることが保証されます。
  2. terraform applyを実行して、実行プランを適用します。

    terraform apply main.destroy.tfplan
    

Azure での Terraform のトラブルシューティング

Azure で Terraform を使用する際の一般的な問題をトラブルシュートする

次のステップ