Bagikan melalui


Menyebarkan sumber daya dengan templat ARM dan REST API Azure Resource Manager

Artikel ini menjelaskan cara menggunakan REST API Azure Resource Manager dengan templat Azure Resource Manager (templat ARM) untuk menyebarkan sumber daya Anda ke Azure.

Anda dapat menyertakan templat Anda dalam isi permintaan atau menautkan ke file. Saat menggunakan file, file tersebut dapat berupa file lokal atau file eksternal yang tersedia melalui URI. Saat templat Anda berada di akun penyimpanan, Anda dapat membatasi akses ke templat dan memberikan token tanda tangan akses bersama (SAS) selama penyebaran.

Prasyarat

Memerlukan izin

Untuk menyebarkan file Bicep atau templat Azure Resource Manager (ARM), Anda memerlukan akses tulis pada sumber daya yang Anda sebarkan dan akses ke semua operasi pada Microsoft.Resources/deployments jenis sumber daya. Misalnya, untuk menyebarkan mesin virtual, Anda memerlukan izin Microsoft.Compute/virtualMachines/write dan Microsoft.Resources/deployments/*. Operasi andaikan memiliki persyaratan izin yang sama.

Azure CLI versi 2.76.0 atau yang lebih baru dan Azure PowerShell versi 13.4.0 atau yang lebih baru memperkenalkan sakelar ValidationLevel untuk menentukan bagaimana ARM memvalidasi templat Bicep secara menyeluruh selama proses ini. Untuk informasi selengkapnya, lihat Perintah bagaimana-jika

Untuk daftar peran dan izin, lihat Peran bawaan Azure.

Cakupan penyebaran

Anda dapat menargetkan penyebaran ke grup sumber daya, langganan Azure, grup manajemen, atau penyewa. Tergantung pada lingkup penyebaran, Anda menggunakan perintah yang berbeda.

Contoh dalam artikel ini menggunakan penyebaran grup sumber daya.

Menyebarkan dengan REST API

  1. Atur parameter dan header umum, termasuk token autentikasi.

  2. Jika Anda menerapkan ke grup sumber daya yang tidak ada, buatlah grup sumber daya tersebut. Berikan ID langganan Anda, nama grup sumber daya baru, dan lokasi yang Anda butuhkan untuk solusi Anda. Untuk informasi selengkapnya, lihat Membuat grup sumber daya.

    PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>?api-version=2020-06-01
    

    Dengan isi permintaan seperti:

    {
     "location": "West US",
     "tags": {
       "tagname1": "tagvalue1"
     }
    }
    
  3. Sebelum menyebarkan templat, Anda dapat mempratinjau perubahan yang akan dilakukan templat ke lingkungan Anda. Gunakan operasi bagaimana-jika untuk memverifikasi bahwa templat membuat perubahan yang Anda harapkan. What-if juga memvalidasi template untuk kesalahan.

  4. Untuk menyebarkan templat, berikan ID langganan Anda, nama grup sumber daya, nama penyebaran dalam URI permintaan.

    PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2020-10-01
    

    Di isi permintaan, berikan tautan ke file templat dan parameter Anda. Untuk informasi selengkapnya tentang file parameter, lihat Membuat file parameter Resource Manager.

    Perhatikan bahwa mode diatur ke Bertahap. Untuk menjalankan penyebaran lengkap, atur mode ke Selesai. Berhati-hatilah saat menggunakan mode lengkap karena Anda secara tidak sengaja dapat menghapus sumber daya yang tidak ada di templat Anda.

    {
     "properties": {
       "templateLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
         "contentVersion": "1.0.0.0"
       },
       "parametersLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
         "contentVersion": "1.0.0.0"
       },
       "mode": "Incremental"
     }
    }
    

    Jika Anda ingin mencatat konten respons, meminta konten, atau keduanya, sertakan debugSetting dalam permintaan.

    {
     "properties": {
       "templateLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
         "contentVersion": "1.0.0.0"
       },
       "parametersLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
         "contentVersion": "1.0.0.0"
       },
       "mode": "Incremental",
       "debugSetting": {
         "detailLevel": "requestContent, responseContent"
       }
     }
    }
    

    Anda dapat menyiapkan akun penyimpanan untuk menggunakan token tanda tangan akses bersama (SAS). Untuk informasi selengkapnya, lihat Mendelegasikan akses dengan tanda tangan akses bersama.

    Jika Anda perlu memberikan nilai sensitif untuk parameter (seperti kata sandi), tambahkan nilai tersebut ke brankas kunci. Ambil brankas kunci selama penyebaran seperti yang ditunjukkan pada contoh sebelumnya. Untuk informasi selengkapnya, lihat Menggunakan Azure Key Vault untuk meneruskan nilai parameter aman selama penyebaran.

  5. Alih-alih menautkan ke file untuk templat dan parameter, Anda dapat menyertakannya dalam isi permintaan. Contoh berikut menunjukkan isi permintaan dengan templat dan parameter sebaris:

    {
       "properties": {
       "mode": "Incremental",
       "template": {
         "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
         "contentVersion": "1.0.0.0",
         "parameters": {
           "storageAccountType": {
             "type": "string",
             "defaultValue": "Standard_LRS",
             "allowedValues": [
               "Standard_LRS",
               "Standard_GRS",
               "Standard_ZRS",
               "Premium_LRS"
             ],
             "metadata": {
               "description": "Storage Account type"
             }
           },
           "location": {
             "type": "string",
             "defaultValue": "[resourceGroup().location]",
             "metadata": {
               "description": "Location for all resources."
             }
           }
         },
         "variables": {
           "storageAccountName": "[format('{0}standardsa', uniquestring(resourceGroup().id))]"
         },
         "resources": [
           {
             "type": "Microsoft.Storage/storageAccounts",
             "apiVersion": "2025-06-01",
             "name": "[variables('storageAccountName')]",
             "location": "[parameters('location')]",
             "sku": {
               "name": "[parameters('storageAccountType')]"
             },
             "kind": "StorageV2",
             "properties": {}
           }
         ],
         "outputs": {
           "storageAccountName": {
             "type": "string",
             "value": "[variables('storageAccountName')]"
           }
         }
       },
       "parameters": {
         "location": {
           "value": "eastus2"
         }
       }
     }
    }
    
  6. Untuk mendapatkan status penyebaran templat, gunakan Penyebaran - Dapatkan.

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
    

Menyebarkan dengan ARMClient

ARMClient adalah alat baris perintah sederhana untuk memanggil API Azure Resource Manager. Untuk menginstal alat, lihat ARMClient.

Untuk mencantumkan langganan Anda:

armclient GET /subscriptions?api-version=2021-04-01

Untuk mencantumkan grup sumber daya Anda:

armclient GET /subscriptions/<subscription-id>/resourceGroups?api-version=2021-04-01

Ganti <id> langganan dengan ID langganan Azure Anda.

Untuk membuat grup sumber daya di wilayah US Tengah :

armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01  "{location: 'central us', properties: {}}"

Atau, Anda dapat memasukkan isinya ke dalam file JSON yang disebut CreateRg.json:

{
  "location": "Central US",
  "properties": { }
}
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 '@CreateRg.json'

Untuk informasi selengkapnya, lihat ARMClient: alat baris perintah untuk Azure API.

Nama penggelaran

Anda dapat memberi nama penggelaran Anda misalnya ExampleDeployment.

Setiap kali Anda menjalankan sebuah penyebaran, sebuah entri dengan nama penyebaran ditambahkan ke dalam riwayat penyebaran grup sumber daya. Jika Anda menjalankan penggelaran lainnya dan memberinya nama yang sama, entri sebelumnya akan digantikan oleh penggelaran saat ini. Jika Anda ingin mempertahankan entri unik dalam riwayat penyebaran, berikan nama yang unik pada setiap penyebaran.

Untuk membuat nama yang unik, Anda dapat menetapkan angka acak. Atau, tambahkan nilai tanggal.

Jika Anda menjalankan penyebaran bersamaan ke grup sumber daya yang sama dengan nama penyebaran yang sama, hanya penyebaran terakhir yang diselesaikan. Setiap penyebaran dengan nama yang sama yang belum selesai akan digantikan oleh penyebaran yang terakhir. Misalnya, jika Anda menjalankan penyebaran bernama newStorage yang menyebarkan akun penyimpanan bernama storage1, dan pada saat yang sama menjalankan penyebaran lain bernama newStorage yang menyebarkan akun penyimpanan bernama storage2, Anda hanya menyebarkan satu akun penyimpanan. Akun penyimpanan yang dihasilkan diberi nama storage2.

Namun, jika Anda menjalankan penyebaran bernama newStorage yang menyebarkan akun penyimpanan bernama storage1, dan segera setelah selesai Anda menjalankan penyebaran lain bernama newStorage yang menyebarkan akun penyimpanan bernama storage2, Anda memiliki dua akun penyimpanan. Satu bernama storage1, dan yang lain bernama storage2. Namun, Anda hanya memiliki satu entri dalam catatan penyebaran.

Saat menentukan nama unik untuk setiap penyebaran, Anda dapat menjalankannya secara bersamaan tanpa konflik. Jika Anda menjalankan penyebaran bernama newStorage1 yang menyebarkan akun penyimpanan bernama storage1, dan pada saat yang sama menjalankan penyebaran lain bernama newStorage2 yang menyebarkan akun penyimpanan bernama storage2, Anda memiliki dua akun penyimpanan dan dua entri di riwayat penyebaran.

Untuk menghindari konflik dengan penyebaran bersamaan dan memastikan entri unik dalam riwayat penyebaran, berikan nama yang unik pada setiap penyebaran.

Langkah selanjutnya