Início Rápido: Criar um servidor e uma base de dados da Base de Dados do SQL do Azure com o Terraform

Criar uma base de dados individual é a opção mais rápida e simples de criar uma base de dados na Base de Dados do SQL do Azure. Este início rápido mostra-lhe como criar uma base de dados individual com o Terraform.

O Terraform permite a definição, pré-visualização e 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 compõem 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 implementados. 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 no diretório atual.

  2. Crie um ficheiro com o nome 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 {}
    }
    
  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_pet" "azurerm_mssql_server_name" {
      prefix = "sql"
    }
    
    resource "random_password" "admin_password" {
      count       = var.admin_password == null ? 1 : 0
      length      = 20
      special     = true
      min_numeric = 1
      min_upper   = 1
      min_lower   = 1
      min_special = 1
    }
    
    locals {
      admin_password = try(random_password.admin_password[0].result, var.admin_password)
    }
    
    resource "azurerm_mssql_server" "server" {
      name                         = random_pet.azurerm_mssql_server_name.id
      resource_group_name          = azurerm_resource_group.rg.name
      location                     = azurerm_resource_group.rg.location
      administrator_login          = var.admin_username
      administrator_login_password = local.admin_password
      version                      = "12.0"
    }
    
    resource "azurerm_mssql_database" "db" {
      name      = var.sql_db_name
      server_id = azurerm_mssql_server.server.id
    }
    
  4. Crie um ficheiro com o nome variables.tf e insira o seguinte código:

    variable "resource_group_location" {
      type        = string
      description = "Location for all resources."
      default     = "eastus"
    }
    
    variable "resource_group_name_prefix" {
      type        = string
      description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
      default     = "rg"
    }
    
    variable "sql_db_name" {
      type        = string
      description = "The name of the SQL Database."
      default     = "SampleDB"
    }
    
    variable "admin_username" {
      type        = string
      description = "The administrator username of the SQL logical server."
      default     = "azureadmin"
    }
    
    variable "admin_password" {
      type        = string
      description = "The administrator password of the SQL logical server."
      sensitive   = true
      default     = null
    }
    
  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 "sql_server_name" {
      value = azurerm_mssql_server.server.name
    }
    
    
    output "admin_password" {
      sensitive = true
      value     = local.admin_password
    }
    

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 recursos do Azure.

terraform init -upgrade

Pontos-chave:

  • O -upgrade parâmetro atualiza os plug-ins do 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 expetativas 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 os planos de execução persistentes e a segurança, consulte a secção de aviso de segurança.

Aplicar um plano de execução do Terraform

Execute terraform apply 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 o mesmo nome de ficheiro na chamada para terraform apply.
  • Se não utilizou o -out parâmetro , chame terraform apply sem 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 novo nome de servidor lógico.

    sql_server_name=$(terraform output -raw sql_server_name)
    
  3. Execute az sql db list para apresentar os nomes de todas as bases de dados no seu servidor.

    az sql db list \
    --resource-group $resource_group_name \
    --server $sql_server_name \
    --output table
    

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 expetativas 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 os planos de execução persistentes e a segurança, consulte a secção de aviso de segurança.
  2. Execute terraform apply 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