Visão geral do provedor Terraform AzAPI

O provedor AzAPI é uma camada fina sobre as APIs REST do Azure ARM. O provedor AzAPI permite que você gerencie qualquer tipo de recurso do Azure usando qualquer versão da API. Este provedor complementa o provedor AzureRM habilitando o gerenciamento de novos recursos e propriedades do Azure (incluindo visualização privada).

Recursos

Para permitir que você gerencie todos os recursos e recursos do Azure sem exigir atualizações, o provedor AzAPI inclui os seguintes recursos genéricos:

Nome do Recurso Description
azapi_resource Usado para gerenciar totalmente qualquer recurso (API) do Azure (plano de controle) com CRUD completo.
   Exemplos de casos de uso:
      Novo serviço de pré-visualização
      Novo recurso adicionado ao serviço existente
      Funcionalidade/serviço existente não abrangido atualmente
azapi_update_resource Usado para gerenciar recursos ou partes de recursos que não têm CRUD completo
   Exemplos de casos de uso:
      Atualizar novas propriedades em um serviço existente
      Atualize o recurso filho pré-criado - como o registro SOA DNS.

Exemplos de configuração de recursos

O trecho de código a seguir configura um recurso que não existe atualmente no provedor 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"
    }
  })
}

O trecho de código a seguir configura uma propriedade de visualização para um recurso existente do 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
    }
  })
}

Autenticação usando o provedor AzAPI

O provedor AzAPI habilita os mesmos métodos de autenticação que o provedor AzureRM. Para obter mais informações sobre opções de autenticação, consulte Autenticar Terraform no Azure.

Benefícios de usar o provedor AzAPI

O provedor AzAPI apresenta os seguintes benefícios:

  • Suporta todos os serviços do Azure:
    • Serviços e funcionalidades de pré-visualização privada
    • Serviços e funcionalidades de pré-visualização pública
    • Todas as versões da API
  • Fidelidade total do arquivo de estado Terraform
    • As propriedades e os valores são salvos no estado
  • Sem dependência do Swagger
  • Autenticação comum e consistente do Azure

Experiência e ciclo de vida do fornecedor AzAPI

Esta seção descreve algumas ferramentas para ajudá-lo a usar o provedor AzAPI.

Extensão VS Code e Language Server

A extensão AzAPI VS Code fornece uma rica experiência de criação com os seguintes benefícios:

  • Intellisense
  • Preenchimento automático de código
  • Sugestões
  • Validação de sintaxe
  • Informações rápidas

Ferramenta de migração AzAPI2AzureRM

O provedor AzureRM fornece a experiência Terraform mais integrada para gerenciar recursos do Azure. Portanto, o uso recomendado dos provedores AzAPI e AzureRM é o seguinte:

  1. Enquanto o serviço ou recurso estiver em visualização, use o provedor AzAPI.
  2. assim que o serviço for lançado oficialmente, use o provedor AzureRM.

A ferramenta AzAPI2AzureRM foi projetada para ajudar a migrar do provedor AzAPI para o provedor AzureRM.

AzAPI2AzureRM é uma ferramenta de código aberto que automatiza o processo de conversão de recursos AzAPI em recursos AzureRM.

AzAPI2AzureRM tem dois modos: planejar e migrar:

  • Plan exibe os recursos AzAPI que podem ser migrados.
  • Migrar migra os recursos AzAPI para recursos do AzureRM nos arquivos HCL e no estado.

AzAPI2AzureRM garante após a migração que sua configuração e estado Terraform estejam alinhados com seu estado real. Você pode validar que o estado foi atualizado executando terraform plan depois de concluir a migração para ver que nada mudou.

Usando o provedor AzAPI

  1. Instalar a extensão VS Code

  2. Adicione o provedor AzAPI à sua configuração do 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. Declare um ou mais recursos AzAPI, conforme mostrado no código de exemplo a seguir:

    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"
          }
        }
      })
    }
    
    

Próximos passos