Share via


Início Rápido: Criar uma zona DNS do Azure e registar com o Terraform

Este artigo mostra como utilizar o Terraform para criar uma zona DNS do Azure e um registo A nessa zona.

O Terraform ativa a definição, a pré-visualização e a implementação da infraestrutura de cloud. Com o Terraform, pode criar ficheiros de configuração com a sintaxe HCL. A sintaxe HCL permite-lhe especificar o fornecedor de cloud ( como o Azure) e os elementos que constituem a sua infraestrutura de cloud. Depois de criar os seus ficheiros de configuração, cria um plano de execução que lhe permite pré-visualizar as alterações da infraestrutura antes de serem implementadas. Depois de verificar as alterações, aplique o plano de execução para implementar a infraestrutura.

Neste artigo, vai aprender a:

Pré-requisitos

Implementar o código Terraform

  1. Crie um diretório para testar e executar o código Terraform de exemplo e torná-lo o diretório atual.

  2. Crie um ficheiro com o nome providers.tf e insira o seguinte código:

    terraform {
      required_version = ">=1.2"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>3.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    provider "azurerm" {
      features {}
    }
    
  3. Crie um ficheiro com o nome 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_dns_zone_name" {
      length  = 13
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "azurerm_dns_zone" "zone" {
      name = (
        var.dns_zone_name != null ?
        var.dns_zone_name :
        "www.${random_string.azurerm_dns_zone_name.result}.azurequickstart.org"
      )
      resource_group_name = azurerm_resource_group.rg.name
    }
    
    resource "azurerm_dns_a_record" "record" {
      name                = "www"
      resource_group_name = azurerm_resource_group.rg.name
      zone_name           = azurerm_dns_zone.zone.name
      ttl                 = var.dns_ttl
      records             = var.dns_records
    }
    
  4. Crie um ficheiro com o nome 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 value so name is unique in your Azure subscription."
    }
    
    variable "dns_zone_name" {
      type        = string
      default     = null
      description = "Name of the DNS zone."
    }
    
    variable "dns_ttl" {
      type        = number
      default     = 3600
      description = "Time To Live (TTL) of the DNS record (in seconds)."
    }
    
    variable "dns_records" {
      type        = list(string)
      default     = ["1.2.3.4", "1.2.3.5"]
      description = "List of IPv4 addresses."
    }
    
  5. Crie um ficheiro com o nome outputs.tf e insira o seguinte código:

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "dns_zone_name" {
      value = azurerm_dns_zone.zone.name
    }
    
    output "name_servers" {
      value = azurerm_dns_zone.zone.name_servers
    }
    

Inicializar o Terraform

Execute o init do terraform para inicializar a implementação do Terraform. Este comando transfere o fornecedor do Azure necessário para gerir os seus recursos do Azure.

terraform init -upgrade

Pontos-chave:

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

Criar um plano de execução do Terraform

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

terraform plan -out main.tfplan

Pontos-chave:

  • O terraform plan comando cria um plano de execução, mas não o executa. Em vez disso, determina que ações são necessárias para criar a configuração especificada nos seus ficheiros de configuração. Este padrão permite-lhe verificar se o plano de execução corresponde às suas expectativas antes de efetuar alterações aos recursos reais.
  • O parâmetro opcional -out permite-lhe especificar um ficheiro de saída para o plano. A utilização do -out parâmetro garante que o plano que reviu é exatamente o que é aplicado.
  • Para ler mais sobre a persistência dos planos de execução e segurança, consulte a secção de aviso de segurança.

Aplicar um plano de execução do Terraform

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

terraform apply main.tfplan

Pontos-chave:

  • O comando de exemplo terraform apply pressupõe que executou terraform plan -out main.tfplananteriormente .
  • Se especificou um nome de ficheiro diferente para o -out parâmetro, utilize esse mesmo nome de ficheiro na chamada para terraform apply.
  • Se não utilizou o -out parâmetro, chame terraform apply sem quaisquer parâmetros.

Verificar 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 da zona DNS.

    dns_zone_name=$(terraform output -raw dns_zone_name)
    
  3. Execute az network dns zone show para apresentar informações sobre a nova zona DNS.

    az network dns zone show \
        --resource-group $resource_group_name \
        --name $dns_zone_name
    

Limpar os recursos

Quando já não precisar dos recursos criados através do Terraform, siga os seguintes passos:

  1. Execute o plano terraform e especifique o destroy sinalizador.

    terraform plan -destroy -out main.destroy.tfplan
    

    Pontos-chave:

    • O terraform plan comando cria um plano de execução, mas não o executa. Em vez disso, determina que ações são necessárias para criar a configuração especificada nos seus ficheiros de configuração. Este padrão permite-lhe verificar se o plano de execução corresponde às suas expectativas antes de efetuar alterações aos recursos reais.
    • O parâmetro opcional -out permite-lhe especificar um ficheiro de saída para o plano. A utilização do -out parâmetro garante que o plano que reviu é exatamente o que é aplicado.
    • Para ler mais sobre a persistência dos planos de execução e segurança, consulte a secção de aviso de segurança.
  2. Execute o terraform para aplicar o plano de execução.

    terraform apply main.destroy.tfplan
    

Resolver problemas do Terraform no Azure

Resolver problemas comuns ao utilizar o Terraform no Azure

Passos seguintes