Penyebaran grup sumber daya dengan templat ARM
Artikel ini menjelaskan cara cakupan penyebaran Anda ke grup sumber daya. Anda menggunakan templat Azure Resource Manager (templat ARM) untuk penyebaran. Artikel ini juga menunjukkan cara memperluas cakupan di luar grup sumber daya dalam operasi penyebaran.
Tip
Kami merekomendasikan Bicep karena menawarkan kemampuan yang sama dengan templat ARM dan sintaksnya lebih mudah digunakan. Untuk mempelajari lebih lanjut, lihat penyebaran grup sumber daya.
Sumber daya yang didukung
Sebagian besar sumber daya dapat disebarkan ke grup sumber daya. Untuk daftar sumber daya yang tersedia, lihat Referensi templat ARM.
Skema
Untuk templat, gunakan skema berikut ini:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
...
}
Untuk file parameter, gunakan:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
...
}
Perintah penyebaran
Untuk menyebarkan ke grup sumber daya, gunakan perintah penyebaran grup sumber daya.
Untuk Azure CLI, gunakan az deployment group create. Contoh berikut menyebarkan templat untuk membuat grup sumber daya. Grup sumber daya yang Anda tentukan dalam parameter --resource-group
adalah grup sumber daya target.
az deployment group create \
--name demoRGDeployment \
--resource-group ExampleGroup \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" \
--parameters storageAccountType=Standard_GRS
Untuk informasi selengkapnya terkait perintah penyebaran dan opsi untuk menyebarkan templat ARM, lihat:
- Menyebarkan sumber daya dengan templat ARM dan portal Microsoft Azure
- Menyebarkan sumber daya dengan templat ARM dan Azure CLI
- Menyebarkan sumber daya dengan templat ARM dan Azure PowerShell
- Menyebarkan sumber daya dengan templat ARM dan REST API Azure Resource Manager
- Menggunakan tombol penyebaran untuk menyebarkan templat dari repositori GitHub
- Menyebarkan templat ARM dari Cloud Shell
Cakupan penyebaran
Saat menyebarkan ke grup sumber daya, Anda bisa menggunakan sumber daya untuk:
- grup sumber daya target dari operasi
- grup sumber daya dalam langganan atau langganan lainnya
- langganan apa pun di penyewa
- penyewa untuk grup sumber daya
Satu-satunya transisi cakupan yang dilarang terjadi dari Grup Sumber Daya ke Grup Manajemen, atau dari Langganan ke Grup Manajemen.
Sumber daya ekstensi dapat dicakup ke target yang berbeda dari target penyebaran.
Pengguna yang menyebarkan templat harus memiliki akses ke cakupan yang ditentukan.
Bagian ini memperlihatkan cara menentukan cakupan yang berbeda. Anda dapat menggabungkan cakupan yang berbeda ini dalam templat tunggal.
Cakupan untuk menargetkan grup sumber daya
Untuk menyebarkan sumber daya ke langganan target, tambahkan sumber daya tersebut ke bagian sumber daya templat.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
resource-group-resources
],
"outputs": {}
}
Untuk templat contoh, lihat Menerapkan ke grup sumber daya target.
Cakupan ke grup sumber daya dalam langganan yang sama
Untuk menyebarkan sumber daya ke grup sumber daya dalam langganan, tambahkan penyebaran berlapis dan sertakan properti resourceGroup
. Jika Anda tidak menentukan ID langganan atau grup sumber daya, grup langganan dan sumber daya dari templat induk akan digunakan. Semua grup sumber daya harus ada sebelum menjalankan penyebaran.
Dalam contoh berikut, penyebaran berlapis menargetkan grup sumber daya bernama demoResourceGroup
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"resourceGroup": "demoResourceGroup",
"properties": {
"mode": "Incremental",
"template": {
resource-group-resources
}
}
}
],
"outputs": {}
}
Untuk templat contoh, lihat Menerapkan ke beberapa grup sumber daya.
Cakupan ke grup sumber daya dalam langganan yang berbeda
Untuk menyebarkan sumber daya ke grup sumber daya dalam langganan yang berbeda, tambahkan penyebaran berlapis dan sertakan properti subscriptionId
dan resourceGroup
. Dalam contoh berikut, penyebaran berlapis menargetkan grup sumber daya bernama demoResourceGroup
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"resourceGroup": "demoResourceGroup",
"properties": {
"mode": "Incremental",
"template": {
resource-group-resources
}
}
}
],
"outputs": {}
}
Untuk templat contoh, lihat Menerapkan ke beberapa grup sumber daya.
Cakupan ke langganan
Untuk menyebarkan sumber daya langganan, tambahkan penyebaran berlapis dan sertakan properti subscriptionId
. Langganan bisa menjadi langganan untuk grup sumber daya target, atau langganan lainnya di penyewa. Selain itu, atur properti location
untuk penyebaran berlapis.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"location": "centralus",
"subscriptionId": "0000000-0000-0000-0000-000000000000",
"properties": {
"mode": "Incremental",
"template": {
subscription-resources
}
}
}
],
"outputs": {}
}
Untuk templat contoh, lihat Membuat grup sumber daya.
Cakupan ke penyewa
Untuk membuat sumber daya di penyewa, atur scope
ke /
. Pengguna yang menyebarkan templat harus memiliki akses yang diperlukan untuk disebarkan di penyewa.
Untuk menggunakan penyebaran bersarang, atur scope
dan location
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"location": "centralus",
"scope": "/",
"properties": {
"mode": "Incremental",
"template": {
tenant-resources
}
}
}
],
"outputs": {}
}
Atau, Anda dapat mengatur cakupan ke /
untuk beberapa jenis sumber daya, seperti grup manajemen.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"mgName": {
"type": "string",
"defaultValue": "[concat('mg-', uniqueString(newGuid()))]"
}
},
"resources": [
{
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2021-04-01",
"name": "[parameters('mgName')]",
"scope": "/",
"location": "eastus",
"properties": {}
}
],
"outputs": {
"output": {
"type": "string",
"value": "[parameters('mgName')]"
}
}
}
Untuk informasi selengkapnya, lihat Grup manajemen.
Menyebarkan untuk menargetkan grup sumber daya
Untuk menggunakan sumber daya dalam grup sumber daya target, tentukan sumber daya resources
tersebut di bagian templat. Templat berikut membuat akun penyimpanan di grup sumber daya yang ditentukan dalam operasi penyebaran.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"minLength": 3,
"maxLength": 11
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[variables('uniqueStorageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
}
}
}
Menyebarkan ke beberapa grup sumber daya
Anda dapat menyebarkan ke lebih dari satu grup sumber daya dalam satu templat ARM. Untuk menargetkan grup sumber daya yang berbeda dengan yang ada untuk templat induk, gunakan templat berlapis atau tertaut. Dalam tipe sumber daya penyebaran, tentukan nilai untuk ID langganan dan grup sumber daya yang ingin Anda sebarkan templat berlapisnya. Grup sumber daya dapat ada di langganan yang berbeda.
Catatan
Anda dapat menyebarkan ke 800 grup sumber daya dalam satu penyebaran. Biasanya, batasan ini berarti Anda dapat menyebarkan ke satu grup sumber daya yang ditentukan untuk templat induk, dan hingga 799 grup sumber daya dalam penyebaran yang berlapis atau ditautkan. Namun, jika templat induk Anda hanya berisi templat yang ditumpuk atau ditautkan dan tidak menyebarkan sumber daya apa pun, maka Anda dapat menyertakan hingga 800 grup sumber daya dalam penyebaran yang berlapis atau ditautkan.
Contoh berikut menggunakan dua akun penyimpanan. Akun penyimpanan pertama disebarkan ke grup sumber daya yang ditentukan dalam operasi penyebaran. Akun penyimpanan kedua disebarkan ke grup sumber daya yang ditentukan dalam parameter secondResourceGroup
dan secondSubscriptionID
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"maxLength": 11
},
"secondResourceGroup": {
"type": "string"
},
"secondSubscriptionID": {
"type": "string",
"defaultValue": ""
},
"secondStorageLocation": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"firstStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
"secondStorageName": "[concat(parameters('storagePrefix'), uniqueString(parameters('secondSubscriptionID'), parameters('secondResourceGroup')))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('firstStorageName')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedTemplate",
"resourceGroup": "[parameters('secondResourceGroup')]",
"subscriptionId": "[parameters('secondSubscriptionID')]",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('secondStorageName')]",
"location": "[parameters('secondStorageLocation')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
}
]
},
"parameters": {}
}
}
]
}
Jika Anda mengatur resourceGroup
ke nama grup sumber daya yang tidak ada, penyebaran akan gagal.
Untuk menguji templat sebelumnya dan melihat hasilnya, gunakan PowerShell atau Azure CLI.
Untuk menyebarkan dua akun penyimpanan ke dua grup sumber daya dalam langganan yang sama, gunakan:
firstRG="primarygroup"
secondRG="secondarygroup"
az group create --name $firstRG --location southcentralus
az group create --name $secondRG --location eastus
az deployment group create \
--name ExampleDeployment \
--resource-group $firstRG \
--template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crosssubscription.json \
--parameters storagePrefix=tfstorage secondResourceGroup=$secondRG secondStorageLocation=eastus
Untuk menyebarkan dua akun penyimpanan ke dua langganan, gunakan:
firstRG="primarygroup"
secondRG="secondarygroup"
firstSub="<first-subscription-id>"
secondSub="<second-subscription-id>"
az account set --subscription $secondSub
az group create --name $secondRG --location eastus
az account set --subscription $firstSub
az group create --name $firstRG --location southcentralus
az deployment group create \
--name ExampleDeployment \
--resource-group $firstRG \
--template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crosssubscription.json \
--parameters storagePrefix=storage secondResourceGroup=$secondRG secondStorageLocation=eastus secondSubscriptionID=$secondSub
Buat grup sumber daya
Dari penyebaran grup sumber daya, Anda dapat beralih ke tingkat langganan dan membuat grup sumber daya. Templat berikut ini menyebarkan akun penyimpanan ke grup sumber daya target, dan membuat grup sumber daya baru dalam langganan yang ditentukan.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"maxLength": 11
},
"newResourceGroupName": {
"type": "string"
},
"nestedSubscriptionID": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"storageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "demoSubDeployment",
"location": "westus",
"subscriptionId": "[parameters('nestedSubscriptionID')]",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2021-04-01",
"name": "[parameters('newResourceGroupName')]",
"location": "[parameters('location')]",
"properties": {}
}
],
"outputs": {}
}
}
}
]
}
Langkah berikutnya
- Untuk contoh penyebaran setelan ruang kerja untuk Pertahanan Microsoft untuk Cloud, lihat deployASCwithWorkspaceSettings.json.