Snabbstart: Skapa en Azure SQL databasserver och databas med Terraform

Att skapa en enskild databas är det snabbaste och enklaste alternativet för att skapa en databas i Azure SQL Database. Den här snabbstarten visar hur du skapar en enkel databas med Terraform.

Terraform möjliggör definition, förhandsversion och distribution av molninfrastruktur. Med Terraform skapar du konfigurationsfiler med hjälp av HCL-syntax. Med HCL-syntaxen kan du ange molnleverantören – till exempel Azure – och de element som utgör din molninfrastruktur. När du har skapat konfigurationsfilerna skapar du en körningsplan som gör att du kan förhandsgranska dina infrastrukturändringar innan de distribueras. När du har verifierat ändringarna tillämpar du körningsplanen för att distribuera infrastrukturen.

I den här artikeln kan du se hur du:

Förutsättningar

Implementera Terraform-koden

  1. Skapa en katalog där du kan testa och köra Terraform-exempelkoden och göra den till den aktuella katalogen.

  2. Skapa en fil med namnet providers.tf och infoga följande kod:

    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. Skapa en fil med namnet main.tf och infoga följande kod:

    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. Skapa en fil med namnet variables.tf och infoga följande kod:

    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. Skapa en fil med namnet outputs.tf och infoga följande kod:

    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
    }
    

Initiera Terraform

Kör terraform init för att initiera Terraform-distributionen. Det här kommandot laddar ned den Azure-provider som krävs för att hantera dina Azure-resurser.

terraform init -upgrade

Viktiga punkter:

  • Parametern -upgrade uppgraderar nödvändiga provider-plugin-program till den senaste versionen som uppfyller konfigurationens versionsbegränsningar.

Skapa en Terraform-körningsplan

Kör terraform-planen för att skapa en körningsplan.

terraform plan -out main.tfplan

Viktiga punkter:

  • Kommandot terraform plan skapar en körningsplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa konfigurationen som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om körningsplanen matchar dina förväntningar innan du gör några ändringar i faktiska resurser.
  • Med den valfria -out parametern kan du ange en utdatafil för planen. Med hjälp av parametern -out ser du till att den plan som du har granskat är exakt vad som tillämpas.
  • Mer information om hur du bevarar körningsplaner och säkerhet finns i avsnittet säkerhetsvarning.

Tillämpa en Terraform-körningsplan

Kör terraform för att tillämpa körningsplanen på din molninfrastruktur.

terraform apply main.tfplan

Viktiga punkter:

  • terraform apply Exempelkommandot förutsätter att du tidigare körde terraform plan -out main.tfplan.
  • Om du har angett ett annat filnamn för parametern -out använder du samma filnamn i anropet till terraform apply.
  • Om du inte använde parametern -out anropar terraform apply du utan parametrar.

Kontrollera resultatet

  1. Hämta namnet på Azure-resursgruppen.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Hämta det nya logiska servernamnet.

    sql_server_name=$(terraform output -raw sql_server_name)
    
  3. Kör az sql db-listan för att visa namnen på alla databaser på servern.

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

Rensa resurser

Gör följande när du inte längre behöver de resurser som skapats via Terraform:

  1. Kör terraform-planen och ange destroy flaggan.

    terraform plan -destroy -out main.destroy.tfplan
    

    Viktiga punkter:

    • Kommandot terraform plan skapar en körningsplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa konfigurationen som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om körningsplanen matchar dina förväntningar innan du gör några ändringar i faktiska resurser.
    • Med den valfria -out parametern kan du ange en utdatafil för planen. Med hjälp av parametern -out ser du till att den plan som du har granskat är exakt vad som tillämpas.
    • Mer information om hur du bevarar körningsplaner och säkerhet finns i avsnittet säkerhetsvarning.
  2. Kör terraform för att tillämpa körningsplanen.

    terraform apply main.destroy.tfplan
    

Felsöka Terraform i Azure

Felsöka vanliga problem när du använder Terraform i Azure

Nästa steg