Mengonfigurasi kontrol akses berbasis peran Azure Virtual Desktop menggunakan Terraform

Artikel diuji dengan versi penyedia Terraform dan Terraform berikut:

Terraform memungkinkan definisi, pratinjau, dan penyebaran infrastruktur cloud. Menggunakan Terraform, Anda membuat file konfigurasi menggunakan sintaksis 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 untuk melihat pratinjau perubahan infrastruktur Anda sebelum disebarkan. Setelah memverifikasi perubahan, Anda menerapkan rencana eksekusi untuk menyebarkan infrastruktur.

Artikel ini akan membahas penambahan pengguna dan grup Microsoft Entra kami lalu menetapkan grup ke peran "Pengguna Virtualisasi Desktop", yang tercakup ke kumpulan host kami.

Dalam artikel ini, Anda akan mempelajari cara:

  • Menggunakan Terraform untuk membaca pengguna Microsoft Entra yang sudah ada
  • Menggunakan Terraform untuk membuat grup Microsoft Entra
  • Penetapan peran untuk Azure Virtual Desktop

1. Mengonfigurasi lingkungan Anda

  • Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

2. Terapkan kode Terraform

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

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

    terraform {
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>2.0"
        }
        azuread = {
          source = "hashicorp/azuread"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  3. Buat file bernama main.tf dan masukkan kode berikut:

    data "azuread_user" "aad_user" {
      for_each            = toset(var.avd_users)
      user_principal_name = format("%s", each.key)
    }
    
    data "azurerm_role_definition" "role" { # access an existing built-in role
      name = "Desktop Virtualization User"
    }
    
    resource "azuread_group" "aad_group" {
      display_name     = var.aad_group_name
      security_enabled = true
    }
    
    resource "azuread_group_member" "aad_group_member" {
      for_each         = data.azuread_user.aad_user
      group_object_id  = azuread_group.aad_group.id
      member_object_id = each.value["id"]
    }
    
    resource "azurerm_role_assignment" "role" {
      scope              = azurerm_virtual_desktop_application_group.dag.id
      role_definition_id = data.azurerm_role_definition.role.id
      principal_id       = azuread_group.aad_group.id
    }
    
  4. Buat file bernama variables.tf dan masukkan kode berikut:

variable "avd_users" {
  description = "AVD users"
  default = [
    "avduser01@contoso.net",
    "avduser02@contoso.net"
  ]
}

variable "aad_group_name" {
  type        = string
  default     = "AVDUsers"
  description = "Azure Active Directory Group for AVD users"
}
  1. Buat file bernama output.tf dan masukkan kode berikut:
output "AVD_user_groupname" {
  description = "Azure Active Directory Group for AVD users"
  value       = azuread_group.aad_group.display_name
}

6. 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 utama:

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

7. Buat rencana eksekusi Terraform

Jalankan terraform plan untuk membuat rencana eksekusi.

terraform plan -out main.tfplan

Poin utama:

  • 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.

8. Terapkan rencana eksekusi Terraform

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

terraform apply main.tfplan

Poin utama:

  • 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.

Anda sekarang siap untuk membangun dan menyebarkan infrastruktur Anda dengan kontrol akses berbasis peran.

9. Bersihkan sumber daya

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

  1. Jalankan terraform plan dan tentukan bendera destroy.

    terraform plan -destroy -out main.destroy.tfplan
    

    Poin utama:

    • 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 berikutnya