Hızlı Başlangıç: Terraform kullanarak Azure SQL Veritabanı sunucusu ve veritabanı oluşturma

Şunlar için geçerlidir:Azure SQL Veritabanı

Tek bir veritabanı oluşturmak, Azure SQL Veritabanı'nda veritabanı oluşturmak için en hızlı ve en basit seçenektir. Bu hızlı başlangıçta Terraform kullanarak tek bir veritabanının nasıl oluşturulacağı gösterilmektedir.

Terraform , bulut altyapısının tanımlanmasını, önizlemesini ve dağıtımını sağlar. Terraform kullanarak HCL söz dizimlerini kullanarak yapılandırma dosyaları oluşturursunuz. HCL söz dizimi, Azure gibi bulut sağlayıcısını ve bulut altyapınızı oluşturan öğeleri belirtmenize olanak tanır. Yapılandırma dosyalarınızı oluşturduktan sonra, altyapı değişikliklerinizin dağıtılmadan önce önizlemesini görüntülemenizi sağlayan bir yürütme planı oluşturursunuz. Değişiklikleri doğruladıktan sonra, altyapıyı dağıtmak için yürütme planını uygularsınız.

Bu makalede şunları öğreneceksiniz:

Önkoşullar

Not

Veritabanını oluşturduktan sonra bazı yapılandırma seçeneklerini değiştiremezsiniz. Dağıtımdan önce değiştirilebilir yapılandırma referansını inceleyin.

İzinler

Transact-SQL aracılığıyla veritabanları oluşturmak için: CREATE DATABASE izinler gereklidir. Bir veritabanı oluşturmak için oturum açma hesabının şu kişilerden biri olması gerekir: sunucu yöneticisi oturum açma hesabı (Azure SQL Veritabanı mantıksal sunucusu oluşturulduğunda oluşturulan), sunucunun Microsoft Entra yöneticisi veya master içindeki dbmanager veritabanı rolünün bir üyesi. Daha fazla bilgi için bkz. CREATE DATABASE.

Azure portalı, PowerShell, Azure CLI veya REST API aracılığıyla veritabanları oluşturmak için: Katkı Sağlayıcı, SQL DB Katkı Sağlayıcı veya SQL Server Katkı Sağlayıcı Azure RBAC rolü olmak üzere Azure RBAC izinleri gereklidir. Daha fazla bilgi için bkz. Azure RBAC yerleşik rolleri.

Terraform kodunu uygulama

  1. Örnek Terraform kodunu test edip çalıştıracağınız bir dizin oluşturun ve bu dizini geçerli dizin yapın.

  2. adlı providers.tf bir dosya oluşturun ve aşağıdaki kodu ekleyin:

    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. adlı main.tf bir dosya oluşturun ve aşağıdaki kodu ekleyin:

    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
    }
    

    Önemli

    Sunucu yöneticisi oturum açma adı alanına kişisel, hassas veya gizli bilgi eklemeyin. Bu alana girilen veriler müşteri verileri olarak kabul edilmez.

  4. adlı variables.tf bir dosya oluşturun ve aşağıdaki kodu ekleyin:

    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. adlı outputs.tf bir dosya oluşturun ve aşağıdaki kodu ekleyin:

    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
    }
    

Terraform'u başlatma

Terraform dağıtımını başlatmak için terraform init komutunu çalıştırın. Bu komut, Azure kaynaklarınızı yönetmek için gereken Azure sağlayıcısını indirir.

terraform init -upgrade

Önemli noktalar:

  • -upgrade parametresi, gerekli sağlayıcı eklentilerini yapılandırmanın sürüm kısıtlamalarına uygun en yeni sürüme yükseltir.

Terraform çalıştırma planı oluşturun

Terraform planını çalıştırarak yürütme planı oluşturun.

terraform plan -out main.tfplan

Önemli noktalar:

  • terraform plan komutu bir yürütme planı oluşturur, ancak onu çalıştırmaz. Bunun yerine, yapılandırma dosyalarınızda belirtilen yapılandırmayı oluşturmak için hangi eylemlerin gerekli olduğunu belirler. Bu düzen, gerçek kaynaklarda değişiklik yapmadan önce yürütme planının beklentilerinizle eşleşip eşleşmediğini doğrulamanızı sağlar.
  • İsteğe bağlı -out parametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. parametresinin -out kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.

Terraform yürütme planını uygulayın

Yürütme planını bulut altyapınıza uygulamak için terraform apply komutunu çalıştırın.

terraform apply main.tfplan

Önemli noktalar:

  • Örnek terraform apply komutu, daha önce terraform plan -out main.tfplan komutunu çalıştırdığınızı varsayar.
  • parametresi için -out farklı bir dosya adı belirttiyseniz, çağrısında terraform applyaynı dosya adını kullanın.
  • parametresini -out kullanmadıysanız, parametresiz olarak çağırın terraform apply .

Sonuçları doğrulama

  1. Azure kaynak grubu adını alın.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Yeni mantıksal sunucu adını alın.

    sql_server_name=$(terraform output -raw sql_server_name)
    
  3. Sunucunuzdaki tüm veritabanlarının adlarını görüntülemek için az sql db list komutunu çalıştırın.

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

Kaynakları temizleme

Terraform aracılığıyla oluşturulan kaynaklara artık ihtiyacınız kalmadığında aşağıdaki adımları uygulayın:

  1. terraform plan çalıştırın ve destroy bayrağını belirtin.

    terraform plan -destroy -out main.destroy.tfplan
    

    Önemli noktalar:

    • terraform plan komutu bir yürütme planı oluşturur, ancak bunu çalıştırmaz. Bunun yerine, yapılandırma dosyalarınızda belirtilen yapılandırmayı oluşturmak için hangi eylemlerin gerekli olduğunu belirler. Bu düzen, gerçek kaynaklarda değişiklik yapmadan önce yürütme planının beklentilerinizle eşleşip eşleşmediğini doğrulamanızı sağlar.
    • İsteğe bağlı -out parametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. parametresinin -out kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.
  2. Yürütme planını uygulamak için terraform apply komutunu çalıştırın.

    terraform apply main.destroy.tfplan
    

Azure'da Terraform sorunlarını giderme

Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme

Sonraki adım