Bagikan melalui


Mulai cepat: Membuat server dan database Azure SQL Database menggunakan Terraform

Berlaku untuk:Azure SQL Database

Membuat database tunggal adalah opsi tercepat dan paling sederhana untuk membuat database di Azure SQL Database. Mulai cepat ini memperlihatkan kepada Anda cara membuat database tunggal menggunakan Terraform.

Terraform memungkinkan definisi, pratinjau, dan penyebaran infrastruktur cloud. Dengan menggunakan Terraform, Anda membuat file konfigurasi menggunakan sintaks HCL. Sintaksis HCL memungkinkan Anda menentukan penyedia cloud - seperti Azure - dan elemen yang membentuk infrastruktur cloud Anda. Setelah membuat file konfigurasi, Anda membuat rencana eksekusi yang memungkinkan Anda mempratinjau perubahan infrastruktur sebelum disebarkan. Setelah memverifikasi perubahan, Anda menerapkan rencana eksekusi untuk menyebarkan infrastruktur.

Dalam artikel ini, Anda akan mempelajari cara:

Prasyarat

Izin

Untuk membuat database melalui Transact-SQL: CREATE DATABASE izin diperlukan. Untuk membuat database, login harus berupa login admin server (dibuat saat server logis Azure SQL Database disediakan), admin Microsoft Entra server, anggota peran database dbmanager di master. Untuk informasi selengkapnya, lihat MEMBUAT DATABASE.

Untuk membuat database melalui portal Microsoft Azure, PowerShell, Azure CLI, atau REST API: Izin Azure RBAC diperlukan, khususnya peran Kontributor, Kontributor SQL DB, atau Kontributor SQL Server Azure RBAC. Untuk informasi selengkapnya, lihat Peran bawaan Azure RBAC.

Menerapkan kode Terraform

  1. Buat direktori untuk menguji dan menjalankan contoh kode Terraform dan menjadikannya direktori saat ini.

  2. Buat file bernama providers.tf dan masukkan kode berikut:

    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. Buat file bernama main.tf dan masukkan kode berikut:

    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
    }
    

    Penting

    Jangan sertakan informasi pribadi, sensitif, atau rahasia apa pun di bidang nama masuk admin server. Data yang dimasukkan di bidang ini tidak dianggap sebagai data pelanggan.

  4. Buat file bernama variables.tf dan masukkan kode berikut:

    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. Buat file bernama outputs.tf dan masukkan kode berikut:

    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
    }
    

Inisialisasi Terraform

Jalankan terraform init untuk menginisialisasi penyebaran Terraform. Perintah ini mengunduh penyedia Azure yang diperlukan untuk mengelola sumber daya Azure Anda.

terraform init -upgrade

Poin-poin penting:

  • Parameter -upgrade meningkatkan plugin penyedia yang diperlukan ke versi terbaru yang sesuai dengan batasan versi konfigurasi.

Buat rencana eksekusi Terraform

Jalankan terraform plan untuk membuat rencana eksekusi.

terraform plan -out main.tfplan

Poin-poin penting:

  • Perintah terraform plan membuat rencana eksekusi, tetapi tidak menjalankannya. Perintah ini justru menentukan tindakan yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda memastikan apakah rencana eksekusi telah sesuai dengan ekspektasi Anda sebelum membuat perubahan pada sumber daya aktual.
  • Parameter -out opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter -out memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.

Terapkan rencana eksekusi Terraform

Jalankan terraform apply untuk menerapkan rencana eksekusi ke infrastruktur cloud Anda.

terraform apply main.tfplan

Poin-poin penting:

  • Contoh terraform apply perintah mengasumsikan Anda sebelumnya menjalankan terraform plan -out main.tfplan.
  • Jika Anda menentukan nama file yang berbeda untuk parameter -out, gunakan nama file yang sama dalam panggilan ke terraform apply.
  • Jika Anda tidak menggunakan parameter -out, panggil terraform apply tanpa parameter apa pun.

Memverifikasi hasil

  1. Dapatkan nama grup sumber daya Azure.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Dapatkan nama server logis baru.

    sql_server_name=$(terraform output -raw sql_server_name)
    
  3. Jalankan az sql db list untuk menampilkan nama semua database di server Anda.

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

Membersihkan sumber daya

Ketika Anda tidak lagi membutuhkan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:

  1. Jalankan terraform plan dan tentukan destroy flag.

    terraform plan -destroy -out main.destroy.tfplan
    

    Poin-poin penting:

    • Perintah terraform plan membuat rencana eksekusi, tetapi tidak menjalankannya. Perintah ini justru menentukan tindakan yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda memastikan apakah rencana eksekusi telah sesuai dengan ekspektasi Anda sebelum membuat perubahan pada sumber daya aktual.
    • Parameter -out opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter -out memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
  2. Jalankan terraform apply untuk menerapkan rencana eksekusi.

    terraform apply main.destroy.tfplan
    

Memecahkan masalah Terraform pada Azure

Memecahkan masalah umum saat menggunakan Terraform di Azure

Langkah selanjutnya