Обзор поставщика Terraform AzAPI

Поставщик AzAPI — это тонкий слой поверх REST API Azure ARM. Поставщик AzAPI позволяет управлять любым типом ресурсов Azure с помощью любой версии API. Этот поставщик дополняет поставщика AzureRM, позволяя управлять новыми ресурсами и свойствами Azure (включая частную предварительную версию).

Ресурсы

Чтобы разрешить управлять всеми ресурсами и функциями Azure без необходимости обновления, поставщик AzAPI включает следующие универсальные ресурсы:

Имя ресурса Description
azapi_resource Используется для полного управления любым ресурсом Azure (плоскости управления) (API) с полным cruD.
   Примеры вариантов использования:
      Новая предварительная версия службы
      Новая функция, добавленная в существующую службу
      Существующие функции или службы, которые в настоящее время не рассматриваются
azapi_update_resource Используется для управления ресурсами или частями ресурсов, которые не имеют полного CRUD
   Примеры вариантов использования:
      Обновление новых свойств существующей службы
      Обновите предварительно созданный дочерний ресурс, например запись SOA DNS.

Примеры конфигурации ресурсов

Следующий фрагмент кода настраивает ресурс, который в настоящее время не существует в поставщике AzureRM:

resource "azapi_resource" "publicip" {
  type      = "Microsoft.Network/Customipprefixes@2021-03-01"
  name      = "exfullrange"
  parent_id = azurerm_resource_group.example.id
  location  = "westus2"

  body = jsonencode({
    properties = {
      cidr          = "10.0.0.0/24"
      signedMessage = "Sample Message for WAN"
    }
  })
}

Следующий фрагмент кода настраивает свойство предварительной версии для существующего ресурса из AzureRM:

resource "azapi_update_resource" "test" {
  type        = "Microsoft.ContainerRegistry/registries@2020-11-01-preview"
  resource_id = azurerm_container_registry.acr.id

  body = jsonencode({
    properties = {
      anonymousPullEnabled = var.bool_anonymous_pull
    }
  })
}

Проверка подлинности с помощью поставщика AzAPI

Поставщик AzAPI включает те же методы проверки подлинности, что и поставщик AzureRM. Дополнительные сведения о параметрах проверки подлинности см. в статье "Аутентификация Terraform" в Azure.

Преимущества использования поставщика AzAPI

Поставщик AzAPI имеет следующие преимущества:

  • Поддерживает все службы Azure:
    • Службы и функции частной предварительной версии
    • Общедоступные службы и функции предварительной версии
    • Все версии API
  • Полная точность файла состояния Terraform
    • Свойства и значения сохраняются в состоянии
  • Нет зависимости от Swagger
  • Общая и согласованная проверка подлинности Azure

Опыт и жизненный цикл поставщика AzAPI

В этом разделе описаны некоторые средства, помогающие использовать поставщик AzAPI.

Расширение VS Code и сервер языка

Расширение AZAPI VS Code обеспечивает широкий опыт разработки со следующими преимуществами:

  • IntelliSense
  • Автоматическое завершение кода
  • Подсказки
  • Проверка синтаксиса
  • Вывод кратких сведений

Средство миграции AzAPI2AzureRM

Поставщик AzureRM предоставляет наиболее интегрированный интерфейс Terraform для управления ресурсами Azure. Поэтому рекомендуется использовать поставщики AzAPI и AzureRM следующим образом:

  1. Хотя служба или функция находится в предварительной версии, используйте поставщик AzAPI.
  2. После официального выпуска службы используйте поставщик AzureRM.

Средство AzAPI2AzureRM предназначено для перехода от поставщика AzAPI к поставщику AzureRM.

AzAPI2AzureRM — это средство с открытым кодом, которое автоматизирует процесс преобразования ресурсов AzAPI в ресурсы AzureRM.

AzAPI2AzureRM имеет два режима: планирование и миграция:

  • План отображает ресурсы AzAPI, которые можно перенести.
  • Миграция переносит ресурсы AzAPI в ресурсы AzureRM как в файлах HCL, так и в состоянии.

AzAPI2AzureRM гарантирует, что после миграции конфигурация Terraform и состояние соответствуют фактическому состоянию. Состояние можно обновить, выполнив после terraform plan завершения миграции, чтобы увидеть, что ничего не изменилось.

Использование поставщика AzAPI

  1. Установка расширения VS Code

  2. Добавьте поставщика AzAPI в конфигурацию Terraform.

    terraform {
      required_providers {
        azapi = {
          source  = "Azure/azapi"
        }
      }
    }
    
    provider "azapi" {
      # More information on the authentication methods supported by
      # the AzureRM Provider can be found here:
      # https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
    
      # subscription_id = "..."
      # client_id       = "..."
      # client_secret   = "..."
      # tenant_id       = "..."
    }
    
  3. Объявите один или несколько ресурсов AzAPI, как показано в следующем примере кода:

    resource "azapi_resource" "example" {
      name = "example"
      parent_id = data.azurerm_machine_learning_workspace.existing.id
      type = "Microsoft.MachineLearningServices/workspaces/computes@2021-07-01"
    
      location = "eastus"
      body = jsonencode({
        properties = {
          computeType      = "ComputeInstance"
          disableLocalAuth = true
          properties = {
            vmSize = "STANDARD_NC6"
          }
        }
      })
    }
    
    

Следующие шаги