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.
Izin yang diperlukan
Untuk menyebarkan file Bicep atau templat ARM, Anda memerlukan akses tulis pada sumber daya yang Anda sebarkan dan mengakses ke semua operasi di Microsoft.Resources/deployments resource type. Misalnya, untuk menyebarkan mesin virtual, Anda memerlukan izin Microsoft.Compute/virtualMachines/write
dan Microsoft.Resources/deployments/*
. Operasi bagaimana-jika memiliki persyaratan izin yang sama.
Untuk daftar peran dan izin, lihat Peran bawaan Azure.
Cakupan 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.
Untuk menyebarkan ke grup sumber daya, gunakan Penyebaran - Buat. Permintaan dikirim ke:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Untuk menyebarkan ke langganan, gunakan Penyebaran - Buat Di Lingkup Langganan. Permintaan dikirim ke:
PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Untuk informasi selengkapnya tentang penyebaran tingkat langganan, lihat Membuat grup sumber daya dan sumber daya di tingkat langganan.
Untuk menyebarkan ke grup manajemen, gunakan Penyebaran - Buat Di Lingkup Grup Manajemen. Permintaan dikirim ke:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Untuk informasi selengkapnya tentang penyebaran tingkat grup manajemen, lihat Membuat sumber daya di tingkat grup manajemen.
Untuk menyebarkan ke penyewa, gunakan Penyebaran - Buat Atau Perbarui Di Lingkup Penyewa. Permintaan dikirim ke:
PUT https://management.azure.com/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Untuk informasi selengkapnya tentang penyebaran tingkat penyewa, lihat Membuat sumber daya di tingkat penyewa.
Contoh dalam artikel ini menggunakan penyebaran grup sumber daya.
Menyebarkan dengan REST API
Set parameter dan header umum,termasuk token autentikasi.
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" } }
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.
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 Membuat file parameter Resource Manager.
Perhatikan bahwa
mode
diatur ke bertambah bertahap. Untuk menjalankan penyebaran lengkap, setmode
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.
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": "[format('{0}standardsa', uniquestring(resourceGroup().id))]" }, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2022-09-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" } } } }
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 memasangnya, 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 <subscription-id> 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 isi 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 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 nama.
Langkah berikutnya
- Untuk putar kembali ke penyebaran yang berhasil saat Anda mendapatkan kesalahan, lihat Putar kembali pada kesalahan ke penyebaran yang berhasil.
- Untuk menentukan cara menangani sumber daya yang ada di grup sumber daya tetapi tidak ditentukan dalam templat, lihat Mode penyebaran Azure Resource Manager.
- Untuk mempelajari cara menangani pengoperasian REST asinkron, lihat Lacak operasi Azure asinkron.
- Untuk mempelajari pembuatan templat, lihat Memahami struktur dan sintaks templat ARM.