Tumpukan penyebaran (Pratinjau)

Tumpukan penyebaran Azure adalah jenis sumber daya Azure yang memungkinkan manajemen sekelompok sumber daya Azure sebagai unit atomik. Ketika file Bicep atau templat ARM JSON dikirimkan ke tumpukan penyebaran, itu menentukan sumber daya yang dikelola oleh tumpukan. Jika sumber daya yang sebelumnya disertakan dalam templat dihapus, sumber daya tersebut akan dihapus atau dihapus berdasarkan perilaku actionOnUnmanage yang ditentukan dari tumpukan penyebaran. Mirip dengan sumber daya Azure lainnya, akses ke tumpukan penyebaran dapat dibatasi menggunakan kontrol akses berbasis peran Azure (Azure RBAC).

Untuk membuat dan memperbarui tumpukan penyebaran, Anda dapat menggunakan Azure CLI, Azure PowerShell, atau portal Azure bersama dengan file Bicep. File Bicep ini ditranspilasi ke dalam templat ARM JSON, yang kemudian disebarkan sebagai objek penyebaran oleh tumpukan. Tumpukan penyebaran menawarkan kemampuan tambahan di luar sumber daya penyebaran yang familier, berfungsi sebagai superset dari kemampuan tersebut.

Microsoft.Resources/deploymentStacks adalah jenis sumber daya untuk tumpukan penyebaran. Ini terdiri dari templat utama yang dapat melakukan pembaruan 1-ke-banyak di seluruh cakupan untuk sumber daya yang dijelaskannya, dan memblokir perubahan yang tidak diinginkan pada sumber daya tersebut.

Saat merencanakan penyebaran Anda dan menentukan grup sumber daya mana yang harus menjadi bagian dari tumpukan yang sama, penting untuk mempertimbangkan siklus hidup manajemen sumber daya tersebut, yang mencakup pembuatan, pembaruan, dan penghapusan. Misalnya, Anda perlu menyediakan beberapa VM pengujian untuk berbagai tim aplikasi di berbagai cakupan grup sumber daya. Dalam hal ini, tumpukan penyebaran dapat digunakan untuk membuat lingkungan pengujian ini dan memperbarui konfigurasi VM pengujian melalui pembaruan berikutnya ke tumpukan penyebaran. Setelah menyelesaikan proyek, mungkin perlu untuk menghapus atau menghapus sumber daya apa pun yang dibuat, seperti VM pengujian. Dengan menggunakan tumpukan penyebaran, sumber daya terkelola dapat dengan mudah dihapus dengan menentukan bendera penghapusan yang sesuai. Pendekatan yang disederhanakan ini menghemat waktu selama pembersihan lingkungan, karena melibatkan satu pembaruan ke sumber daya tumpukan daripada memodifikasi atau menghapus setiap VM pengujian secara individual di berbagai cakupan grup sumber daya.

Tumpukan penyebaran memerlukan Azure PowerShell versi 10.1.0 atau yang lebih baru atau Azure CLI versi 2.50.0 atau yang lebih baru.

Untuk membuat tumpukan penyebaran pertama Anda, bekerja melalui Mulai Cepat: membuat tumpukan penyebaran.

Mengapa menggunakan tumpukan penyebaran?

Tumpukan penyebaran memberikan manfaat berikut:

  • Penyediaan dan pengelolaan sumber daya yang disederhanakan di berbagai cakupan sebagai entitas kohesif.
  • Mencegah modifikasi yang tidak diinginkan ke sumber daya terkelola melalui pengaturan tolak.
  • Pembersihan lingkungan yang efisien dengan menggunakan bendera penghapusan selama pembaruan tumpukan penyebaran.
  • Menggunakan templat standar seperti Bicep, templat ARM, atau Spesifikasi templat untuk tumpukan penyebaran Anda.

Pembatasan yang diketahui

  • Sumber daya yang dibuat secara implisit tidak dikelola oleh tumpukan. Oleh karena itu, tidak ada penugasan atau pembersihan penolakan yang dimungkinkan.
  • Penugasan penolakan tidak mendukung tag.
  • Penugasan penolakan tidak didukung dalam cakupan grup manajemen.
  • Tumpukan penyebaran tidak dapat menghapus rahasia Key vault. Jika Anda menghapus rahasia brankas kunci dari templat, pastikan untuk juga menjalankan perintah pembaruan/penghapusan tumpukan penyebaran dengan mode lepaskan.

Masalah umum

  • Menghapus grup sumber daya yang saat ini melewati penetapan tolak. Saat membuat tumpukan penyebaran dalam cakupan grup sumber daya, file Bicep tidak berisi definisi untuk grup sumber daya. Meskipun pengaturan penugasan tolak, dimungkinkan untuk menghapus grup sumber daya dan tumpukan yang terkandung. Namun, jika kunci aktif pada sumber daya apa pun dalam grup, operasi penghapusan akan gagal.
  • Bagaimana-jika tidak tersedia dalam pratinjau.
  • Tumpukan cakupan grup manajemen dibatasi untuk disebarkan ke grup manajemen lain. Ini hanya dapat disebarkan ke grup manajemen tumpukan itu sendiri atau ke langganan anak.

Membuat tumpukan penyebaran

Sumber daya tumpukan penyebaran dapat dibuat di grup sumber daya, langganan, atau cakupan grup manajemen. Templat yang diteruskan ke tumpukan penyebaran menentukan sumber daya yang akan dibuat atau diperbarui pada cakupan target yang ditentukan untuk penyebaran templat.

  • Tumpukan pada cakupan grup sumber daya dapat menyebarkan templat yang diteruskan ke cakupan grup sumber daya yang sama di mana tumpukan penyebaran ada.
  • Tumpukan pada cakupan langganan dapat menyebarkan templat yang diteruskan ke cakupan grup sumber daya (jika ditentukan) atau cakupan langganan yang sama di mana tumpukan penyebaran ada.
  • Tumpukan pada cakupan grup manajemen dapat menyebarkan templat yang diteruskan ke cakupan langganan yang ditentukan.

Penting untuk dicatat bahwa di mana tumpukan penyebaran ada, begitu juga penetapan tolak yang dibuat dengan kemampuan pengaturan tolak. Misalnya, dengan membuat tumpukan penyebaran pada cakupan langganan yang menyebarkan templat ke cakupan grup sumber daya dan dengan mode DenyDeletepengaturan tolak , Anda dapat dengan mudah menyediakan sumber daya terkelola ke grup sumber daya yang ditentukan dan memblokir upaya penghapusan ke sumber daya tersebut. Dengan menggunakan pendekatan ini, Anda juga meningkatkan keamanan tumpukan penyebaran dengan memisahkannya di tingkat langganan, dibandingkan dengan tingkat grup sumber daya. Pemisahan ini memastikan bahwa tim pengembang yang bekerja dengan sumber daya yang disediakan hanya memiliki visibilitas dan menulis akses ke grup sumber daya, sementara tumpukan penyebaran tetap terisolasi pada tingkat yang lebih tinggi. Ini meminimalkan jumlah pengguna yang dapat mengedit tumpukan penyebaran dan membuat perubahan pada penetapan penolakannya. Untuk informasi selengkapnya, lihat Melindungi sumber daya terkelola terhadap penghapusan.

Perintah create-stack juga dapat digunakan untuk memperbarui tumpukan penyebaran.

Untuk membuat tumpukan penyebaran di cakupan grup sumber daya:

New-AzResourceGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "none"

Untuk membuat tumpukan penyebaran pada cakupan langganan:

New-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentResourceGroupName "<resource-group-name>" `
  -DenySettingsMode "none"

Parameter DeploymentResourceGroupName menentukan grup sumber daya yang digunakan untuk menyimpan sumber daya terkelola. Jika parameter tidak ditentukan, sumber daya terkelola disimpan dalam cakupan langganan.

Untuk membuat tumpukan penyebaran di cakupan grup manajemen:

New-AzManagmentGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentSubscriptionId "<subscription-id>" `
  -DenySettingsMode "none"

Parameter deploymentSubscriptionId menentukan langganan yang digunakan untuk menyimpan sumber daya terkelola. Jika parameter tidak ditentukan, sumber daya terkelola disimpan dalam cakupan grup manajemen.

Mencantumkan tumpukan penyebaran

Untuk mencantumkan sumber daya tumpukan penyebaran di cakupan grup sumber daya:

Get-AzResourceGroupDeploymentStack `
  -ResourceGroupName "<resource-group-name>"

Untuk mencantumkan sumber daya tumpukan penyebaran di cakupan langganan:

Get-AzSubscriptionDeploymentStack

Untuk mencantumkan sumber daya tumpukan penyebaran di cakupan grup manajemen:

Get-AzManagementGroupDeploymentStack `
  -ManagementGroupId "<management-group-id>"

Memperbarui tumpukan penyebaran

Untuk memperbarui tumpukan penyebaran, yang mungkin melibatkan penambahan atau penghapusan sumber daya terkelola, Anda perlu membuat perubahan pada file Bicep yang mendasar. Setelah modifikasi dilakukan, Anda memiliki dua opsi untuk memperbarui tumpukan penyebaran: jalankan perintah pembaruan atau jalankan ulang perintah buat.

Daftar sumber daya terkelola dapat sepenuhnya dikontrol melalui pola desain infrastruktur sebagai kode (IaC).

Gunakan perintah Set

Untuk memperbarui tumpukan penyebaran di cakupan grup sumber daya:

Set-AzResourceGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "none"

Untuk memperbarui tumpukan penyebaran pada cakupan langganan:

Set-AzSubscriptionDeploymentStack `
   -Name "<deployment-stack-name>" `
   -Location "<location>" `
   -TemplateFile "<bicep-file-name>" `
   -DeploymentResourceGroupName "<resource-group-name>" `
  -DenySettingsMode "none"

Parameter DeploymentResourceGroupName menentukan grup sumber daya yang digunakan untuk menyimpan sumber daya tumpukan penyebaran. Jika Anda tidak menentukan nama grup sumber daya, layanan tumpukan penyebaran akan membuat grup sumber daya baru untuk Anda.

Untuk memperbarui tumpukan penyebaran di cakupan grup manajemen:

Set-AzManagmentGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentSubscriptionId "<subscription-id>" `
  -DenySettingsMode "none"

Gunakan perintah Baru

Anda mendapatkan peringatan yang mirip dengan yang berikut ini:

The deployment stack 'myStack' you're trying to create already exists in the current subscription/management group/resource group. Do you want to overwrite it? Detaching: resources, resourceGroups (Y/N)

Untuk informasi selengkapnya, lihat Membuat tumpukan penyebaran.

Mengontrol detasemen dan penghapusan

Sumber daya yang dilepas (atau sumber daya yang tidak dikelola) mengacu pada sumber daya yang tidak dilacak atau dikelola oleh tumpukan penyebaran tetapi masih ada dalam Azure.

Untuk menginstruksikan Azure untuk menghapus sumber daya yang tidak dikelola, perbarui tumpukan dengan perintah buat tumpukan dengan salah satu bendera penghapusan berikut. Untuk informasi selengkapnya, lihat Membuat tumpukan penyebaran.

  • DeleteAll: gunakan hapus daripada melepaskan untuk sumber daya terkelola dan grup sumber daya.
  • DeleteResources: gunakan hapus daripada melepaskan untuk sumber daya terkelola saja.
  • DeleteResourceGroups: gunakan hapus daripada melepaskan untuk grup sumber daya terkelola saja. Ini tidak valid untuk digunakan DeleteResourceGroups dengan sendirinya. DeleteResourceGroups harus digunakan bersama dengan DeleteResources.

Contohnya:

New-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "none" `
  -DeleteResourceGroups `
  -DeleteResources

Peringatan

Saat menghapus grup sumber daya dengan DeleteAll properti atau DeleteResourceGroups , grup sumber daya terkelola dan semua sumber daya yang terkandung di dalamnya juga akan dihapus.

Menghapus tumpukan penyebaran

Jika Anda menjalankan perintah hapus tanpa bendera penghapusan, sumber daya yang tidak dikelola akan dilepaskan tetapi tidak dihapus. Untuk menghapus sumber daya yang tidak dikelola, gunakan sakelar berikut:

  • DeleteAll: Hapus sumber daya dan grup sumber daya.
  • DeleteResources: Hapus sumber daya saja.
  • DeleteResourceGroups: Hapus grup sumber daya saja.

Bahkan jika Anda menentukan tombol hapus semua, jika ada sumber daya yang tidak dikelola dalam grup sumber daya tempat tumpukan penyebaran berada, sumber daya yang tidak dikelola dan grup sumber daya itu sendiri tidak akan dihapus.

Untuk menghapus sumber daya tumpukan penyebaran di cakupan grup sumber daya:

Remove-AzResourceGroupDeploymentStack `
  -name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  [-DeleteAll/-DeleteResourceGroups/-DeleteResources]

Untuk menghapus sumber daya tumpukan penyebaran di cakupan langganan:

Remove-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  [-DeleteAll/-DeleteResourceGroups/-DeleteResources]

Untuk menghapus sumber daya tumpukan penyebaran di cakupan grup manajemen:

Remove-AzManagementGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ManagementGroupId "<management-group-id>" `
  [-DeleteAll/-DeleteResourceGroups/-DeleteResources]

Menampilkan sumber daya terkelola dalam tumpukan penyebaran

Selama pratinjau publik, layanan tumpukan penyebaran belum memiliki antarmuka pengguna grafis (GUI) portal Azure. Untuk melihat sumber daya terkelola di dalam tumpukan penyebaran, gunakan perintah Azure Powershell/Azure CLI berikut:

Untuk melihat sumber daya terkelola di cakupan grup sumber daya:

(Get-AzResourceGroupDeploymentStack -Name "<deployment-stack-name>" -ResourceGroupName "<resource-group-name>").Resources

Untuk melihat sumber daya terkelola di cakupan langganan:

(Get-AzSubscriptionDeploymentStack -Name "<deployment-stack-name>").Resources

Untuk melihat sumber daya terkelola di cakupan grup manajemen:

(Get-AzManagementGroupDeploymentStack -Name "<deployment-stack-name>" -ManagementGroupId "<management-group-id>").Resources

Menambahkan sumber daya ke tumpukan penyebaran

Untuk menambahkan sumber daya terkelola, tambahkan definisi sumber daya ke file Bicep yang mendasarinya, lalu jalankan perintah pembaruan atau jalankan ulang perintah buat. Untuk informasi selengkapnya, lihat Memperbarui tumpukan penyebaran.

Menghapus sumber daya terkelola dari tumpukan penyebaran

Untuk menghapus sumber daya terkelola, hapus definisi sumber daya dari file Bicep yang mendasarinya, lalu jalankan perintah pembaruan atau jalankan ulang perintah buat. Untuk informasi selengkapnya, lihat Memperbarui tumpukan penyebaran.

Lindungi sumber daya terkelola dari penghapusan

Saat membuat tumpukan penyebaran, dimungkinkan untuk menetapkan jenis izin tertentu ke sumber daya terkelola, yang mencegah penghapusannya oleh prinsip keamanan yang tidak sah. Pengaturan ini disebut sebagai pengaturan tolak. Anda ingin menyimpan tumpukan pada cakupan induk.

Azure PowerShell menyertakan parameter ini untuk menyesuaikan penugasan penolakan:

  • DenySettingsMode: Menentukan operasi yang dilarang pada sumber daya terkelola untuk melindungi dari prinsip keamanan yang tidak sah yang mencoba menghapus atau memperbaruinya. Pembatasan ini berlaku untuk semua orang kecuali akses yang diberikan secara eksplisit. Nilainya meliputi: None, DenyDelete, dan DenyWriteAndDelete.
  • DenySettingsApplyToChildScopes: Pengaturan tolak diterapkan ke sumber daya berlapis di bawah sumber daya terkelola.
  • DenySettingsExcludedAction: Daftar operasi manajemen berbasis peran yang dikecualikan dari pengaturan tolak. Hingga 200 tindakan diizinkan.
  • DenySettingsExcludedPrincipal: Daftar ID utama Microsoft Entra yang dikecualikan dari kunci. Hingga lima prinsipal diizinkan.

Untuk menerapkan pengaturan tolak di cakupan grup sumber daya:

New-AzResourceGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "DenyDelete" `
  -DenySettingsExcludedAction "Microsoft.Compute/virtualMachines/write Microsoft.StorageAccounts/delete" `
  -DenySettingsExcludedPrincipal "<object-id>,<object-id>"

Untuk menerapkan pengaturan tolak pada cakupan langganan:

New-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "DenyDelete" `
  -DenySettingsExcludedAction "Microsoft.Compute/virtualMachines/write Microsoft.StorageAccounts/delete" `
  -DenySettingsExcludedPrincipal "<object-id>,<object-id>"

DeploymentResourceGroupName Gunakan parameter untuk menentukan nama grup sumber daya tempat tumpukan penyebaran dibuat. Jika cakupan tidak ditentukan, cakupan tersebut menggunakan cakupan tumpukan penyebaran.

Untuk menerapkan pengaturan tolak pada cakupan grup manajemen:

New-AzManagmentGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "DenyDelete" `
  -DenySettingsExcludedActions "Microsoft.Compute/virtualMachines/write Microsoft.StorageAccounts/delete" `
  -DenySettingsExcludedPrincipal "<object-id>,<object-id>"

DeploymentSubscriptionId Gunakan parameter untuk menentukan ID langganan tempat tumpukan penyebaran dibuat. Jika cakupan tidak ditentukan, cakupan tersebut menggunakan cakupan tumpukan penyebaran.

Lepaskan sumber daya terkelola dari tumpukan penyebaran

Secara default, tumpukan penyebaran melepaskan dan tidak menghapus sumber daya yang tidak dikelola saat tidak lagi terkandung dalam cakupan manajemen tumpukan. Untuk informasi selengkapnya, lihat Memperbarui tumpukan penyebaran.

Mengekspor templat dari tumpukan penyebaran

Anda dapat mengekspor sumber daya dari tumpukan penyebaran ke output JSON. Anda dapat menyalurkan output ke file.

Untuk mengekspor tumpukan penyebaran di cakupan grup sumber daya:

Save-AzResourceGroupDeploymentStack `
   -Name '<deployment-stack-name>' `
   -ResourceGroupName '<resource-group-name>' `

Untuk mengekspor tumpukan penyebaran pada cakupan langganan:

Save-AzSubscriptionDeploymentStack `
  -name '<deployment-stack-name>'

Untuk mengekspor tumpukan penyebaran di cakupan grup manajemen:

Save-AzManagmentGroupDeploymentStack `
  -Name '<deployment-stack-name>' `
  -ManagementGroupId '<management-group-id>'

Langkah berikutnya

Untuk melalui mulai cepat, lihat Mulai cepat: membuat tumpukan penyebaran.