Поделиться через


Краткое руководство: Создание задания Azure Stream Analytics с помощью Terraform

В этой статье показано, как создать задание Azure Stream Analytics с помощью Terraform. После создания задания необходимо проверить развертывание.

Terraform включает определение, предварительную версию и развертывание облачной инфраструктуры. С помощью Terraform вы создаете файлы конфигурации с помощью синтаксиса HCL. Синтаксис HCL позволяет указать поставщика облачных служб, таких как Azure, и элементы, составляющие облачную инфраструктуру. После создания файлов конфигурации вы создадите план выполнения , который позволяет предварительно просмотреть изменения инфраструктуры перед развертыванием. После того как вы проверите изменения, примените план выполнения для развертывания инфраструктуры.

В этой статье вы узнаете, как:

  • Создайте случайное значение для имени группы ресурсов Azure с помощью random_pet.
  • Создайте группу ресурсов Azure с помощью azurerm_resource_group.
  • Создайте случайное значение для имени задания Azure Stream Analytics с помощью random_pet.
  • Создайте задание Azure Stream Analytics с помощью azurerm_stream_analytics_job.

Предпосылки

Реализуйте код Terraform

Замечание

Пример кода для этой статьи находится в репозитории Azure Terraform GitHub. Вы можете просмотреть файл журнала, содержащий результаты теста из текущих и предыдущих версий Terraform.

Дополнительные статьи и пример кода, демонстрирующие использование Terraform для управления ресурсами Azure

  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
    

Устранение неполадок с Terraform в Azure

Устранение распространенных проблем при использовании Terraform в Azure

Дальнейшие шаги