Compartilhar via


Início Rápido: Crie um serviço de Gerenciamento de API do Azure usando o Terraform

APLICA-SE A: Desenvolvedor | Standard |Premium

Esse artigo mostra como usar o Terraform para criar uma instância de serviço Gerenciamento de API no Azure. Você também pode usar o Terraform para tarefas de gerenciamento comuns, como importar APIs em sua instância de Gerenciamento de API.

O Gerenciamento de API do Azure ajuda as organizações a publicar APIs para parceiros externos e desenvolvedores internos e a fim de viabilizar o potencial de seus dados e serviços. O Gerenciamento de API fornece as competências essenciais para garantir um programa de API de sucesso através do envolvimento do desenvolvedor, ideias de negócios, análises, segurança e proteção. O Gerenciamento de API permite que você crie e gerencie gateways de API modernos para serviços de back-end hospedados em qualquer lugar.

O Terraform permite a definição, a visualização e a implantação da infraestrutura de nuvem. Usando o Terraform, você cria arquivos de configuração usando sintaxe de HCL. A sintaxe da HCL permite que você especifique o provedor de nuvem, como o Azure, e os elementos que compõem sua infraestrutura de nuvem. Depois de criar os arquivos de configuração, você cria um plano de execução que permite visualizar as alterações de infraestrutura antes de serem implantadas. Depois de verificar as alterações, aplique o plano de execução para implantar a infraestrutura.

Neste artigo, você aprenderá como:

  • Criar um nome de animal de estimação aleatório para o nome do grupo de recursos do Azure usando random_pet
  • Criar um grupo de recursos do Azure usando azurerm_resource_group
  • Crie uma cadeia de caracteres aleatória para o nome do serviço Gerenciamento de API do Azure usando random_string
  • Crie um serviço de Gerenciamento de API do Azure usando azurerm_api_management

Pré-requisitos

Implementar o código do Terraform

  1. Crie um diretório no qual testar e executar o código de exemplo do Terraform e faça dele o diretório atual.

  2. Crie um arquivo chamado main.tf e insira o seguinte código:

    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_api_management_name" {
      length  = 13
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "azurerm_api_management" "api" {
      name                = "apiservice${random_string.azurerm_api_management_name.result}"
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
      publisher_email     = var.publisher_email
      publisher_name      = var.publisher_name
      sku_name            = "${var.sku}_${var.sku_count}"
    }
    
  3. Crie um arquivo chamado outputs.tf e insira o seguinte código:

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "api_management_service_name" {
      value = azurerm_api_management.api.name
    }
    
  4. Crie um arquivo chamado providers.tf e insira o seguinte código:

    terraform {
      required_version = ">=1.0"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>3.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    provider "azurerm" {
      features {}
    }
    
  5. Crie um arquivo chamado variables.tf e insira o seguinte código:

    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 "publisher_email" {
      default     = "test@contoso.com"
      description = "The email address of the owner of the service"
      type        = string
      validation {
        condition     = length(var.publisher_email) > 0
        error_message = "The publisher_email must contain at least one character."
      }
    }
    
    variable "publisher_name" {
      default     = "publisher"
      description = "The name of the owner of the service"
      type        = string
      validation {
        condition     = length(var.publisher_name) > 0
        error_message = "The publisher_name must contain at least one character."
      }
    }
    
    variable "sku" {
      description = "The pricing tier of this API Management service"
      default     = "Developer"
      type        = string
      validation {
        condition     = contains(["Developer", "Standard", "Premium"], var.sku)
        error_message = "The sku must be one of the following: Developer, Standard, Premium."
      }
    }
    
    variable "sku_count" {
      description = "The instance size of this API Management service."
      default     = 1
      type        = number
      validation {
        condition     = contains([1, 2], var.sku_count)
        error_message = "The sku_count must be one of the following: 1, 2."
      }
    }
    

Inicializar Terraform

Execute terraform init para inicializar a implantação do Terraform. Esse comando baixa o provedor do Azure necessário para gerenciar seus recursos do Azure.

terraform init -upgrade

Pontos principais:

  • O parâmetro -upgrade atualiza os plug-ins do provedor necessários para a versão mais recente que esteja em conformidade com as restrições de versão da configuração.

Criar um plano de execução Terraform

Execute o comando terraform plan para criar um plano de execução.

terraform plan -out main.tfplan

Pontos principais:

  • O comando terraform plan cria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite que você verifique se o plano de execução corresponde às suas expectativas antes de fazer qualquer alteração nos recursos reais.
  • O parâmetro opcional -out permite que você especifique um arquivo de saída para o plano. Usar o parâmetro -out garante que o plano que você examinou seja exatamente o que é aplicado.

Aplicar um plano de execução do Terraform

Execute terraform apply para aplicar o plano de execução à sua infraestrutura de nuvem.

terraform apply main.tfplan

Pontos principais:

  • O exemplo de comando do terraform apply pressupõe que você executou o terraform plan -out main.tfplan anteriormente.
  • Se você especificou um nome de arquivo diferente para o parâmetro -out, use esse mesmo nome de arquivo na chamada para terraform apply.
  • Se você não usou o parâmetro -out, chame terraform apply sem nenhum parâmetro.

Observação

Pode levar de 30 a 40 minutos para criar e ativar um serviço de Gerenciamento de API.

Verifique os resultados

  1. Obtenha o nome do grupo de recursos do Azure.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Obtenha o nome do serviço.

    api_management_service_name=$(terraform output -raw api_management_service_name)
    
  3. Execute az apim show para exibir informações sobre o novo serviço.

    az apim show --resource-group $resource_group_name \
                 --name $api_management_service_name
    

Limpar os recursos

Quando você não precisar mais dos recursos criados por meio o Terraform, execute as seguintes etapas:

  1. Execute terraform plan e especifique o sinalizador destroy.

    terraform plan -destroy -out main.destroy.tfplan
    

    Pontos principais:

    • O comando terraform plan cria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite que você verifique se o plano de execução corresponde às suas expectativas antes de fazer qualquer alteração nos recursos reais.
    • O parâmetro opcional -out permite que você especifique um arquivo de saída para o plano. Usar o parâmetro -out garante que o plano que você examinou seja exatamente o que é aplicado.
  2. Execute a aplicação do Terraform para aplicar o plano de execução.

    terraform apply main.destroy.tfplan
    

Solucionar problemas do Terraform no Azure

Solucionar problemas comuns ao usar o Terraform no Azure

Próximas etapas