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

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

Anda dapat menyertakan templat Anda dalam isi permintaan atau tautan ke file. Saat menggunakan file, file tersebut bisa menjadi file lokal atau file eksternal yang tersedia melalui URI (Pengidentifikasi Sumber Daya Seragam). Saat templat Anda berada di akun penyimpanan, Anda dapat membatasi akses ke templat dan menyediakan token SAS (Shared Access Signature/Tanda Tangan Akses) selama penyebaran.

Lingkup penyebaran

Anda dapat menargetkan penyebaran Anda 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. Set parameter dan header umum,termasuk token autentikasi.

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

    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, Anda dapat melakukan pratinjau pada perubahan yang akan dilakukan templat ke lingkungan Anda. Gunakan operasi what-if untuk memverifikasi bahwa templat membuat perubahan yang Anda harapkan. What-if juga memvalidasi templat untuk kesalahan.

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

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

    Dalam isi permintaan, berikan tautan ke file template dan parameter Anda. Untuk informasi selengkapnya tentang file parameter, lihat Buat file parameter Resource Manager.

    Perhatikan bahwa mode diatur ke bertambah bertahap. Untuk menjalankan penyebaran lengkap, set 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 Anda untuk menggunakan token tanda tangan akses bersama (SAS). Untuk informasi selengkapnya, lihat Delegasi akses dengan tanda tangan akses bersama (SAS).

    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 Gunakan Azure Key Vault untuk meneruskan nilai parameter aman selama penyebaran.

  5. Alih-alih menautkan ke file untuk templat dan parameter, Anda dapat memasukkannya ke 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": "[concat(uniquestring(resourceGroup().id), 'standardsa')]"
         },
         "resources": [
           {
             "type": "Microsoft.Storage/storageAccounts",
             "apiVersion": "2018-02-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
    

Nama penyebaran

Anda dapat memberi nama penyebaran Anda seperti ExampleDeployment.

Setiap kali Anda menjalankan penyebaran, entri ditambahkan ke riwayat penyebaran grup sumber daya dengan nama penyebaran. Jika Anda menjalankan penyebaran lain dan memberinya nama yang sama, entri sebelumnya diganti dengan penyebaran 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 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. Tetapi, Anda hanya memiliki satu entri dalam riwayat 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 untuk memastikan entri unik dalam riwayat penyebaran, berikan nama unik pada setiap penyebaran.

Langkah berikutnya