ARM şablonlarıyla kaynak grubu dağıtımları
Bu makalede, dağıtımınızın kapsamının bir kaynak grubuna nasıl uygulandığı açıklanmaktadır. Dağıtım için bir Azure Resource Manager şablonu (ARM şablonu) kullanırsınız. Makalede ayrıca dağıtım işleminde kapsamın kaynak grubunun ötesine nasıl genişletilmesi de gösterilmektedir.
İpucu
ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz. Daha fazla bilgi edinmek için bkz . kaynak grubu dağıtımları.
Desteklenen kaynaklar
Kaynakların çoğu bir kaynak grubuna dağıtılabilir. Kullanılabilir kaynakların listesi için bkz . ARM şablonu başvurusu.
Şema
Şablonlar için aşağıdaki şemayı kullanın:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
...
}
Parametre dosyaları için şunu kullanın:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
...
}
Dağıtım komutları
Bir kaynak grubuna dağıtmak için kaynak grubu dağıtım komutlarını kullanın.
Azure CLI için az deployment group create komutunu kullanın. Aşağıdaki örnek, kaynak grubu oluşturmak için bir şablon dağıtır. parametresinde --resource-group
belirttiğiniz kaynak grubu hedef kaynak grubudur.
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
ARM şablonlarını dağıtmaya yönelik dağıtım komutları ve seçenekleri hakkında daha ayrıntılı bilgi için bkz:
- ARM şablonları ve Azure portalı ile kaynakları dağıtma
- ARM şablonları ve Azure CLI ile kaynak dağıtma
- ARM şablonları ve Azure PowerShell ile kaynak dağıtma
- ARM şablonları ve Azure Resource Manager REST API'siyle kaynakları dağıtma
- GitHub deposundan şablonları dağıtmak için dağıtım düğmesi kullanma
- Cloud Shell'den ARM şablonları dağıtma
Dağıtım kapsamları
Bir kaynak grubuna dağıtım yaparken, kaynakları şu kaynaklara dağıtabilirsiniz:
- işlemden hedef kaynak grubu
- aynı abonelikteki veya diğer aboneliklerdeki diğer kaynak grupları
- kiracıdaki herhangi bir abonelik
- kaynak grubunun kiracısı
Yasaklanan tek kapsam geçişleri Kaynak Grubundan Yönetim Grubuna veya Abonelikten Yönetim Grubuna gerçekleşir.
Uzantı kaynağının kapsamı, dağıtım hedefinden farklı bir hedef olarak ayarlanabilir.
Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olmalıdır.
Bu bölümde farklı kapsamların nasıl belirtileceğini gösterilmektedir. Bu farklı kapsamları tek bir şablonda birleştirebilirsiniz.
Hedef kaynak grubuna kapsam
Kaynakları hedef kaynağa dağıtmak için bu kaynakları şablonun kaynaklar bölümüne ekleyin.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
resource-group-resources
],
"outputs": {}
}
Örnek bir şablon için bkz . Hedef kaynak grubuna dağıtma.
Aynı abonelikteki kaynak grubu kapsamı
Kaynakları aynı abonelikteki farklı bir kaynak grubuna dağıtmak için iç içe bir dağıtım ekleyin ve özelliğini ekleyin resourceGroup
. Abonelik kimliğini veya kaynak grubunu belirtmezseniz, üst şablondaki abonelik ve kaynak grubu kullanılır. Dağıtımı çalıştırmadan önce tüm kaynak gruplarının mevcut olması gerekir.
Aşağıdaki örnekte, iç içe dağıtım adlı demoResourceGroup
bir kaynak grubunu hedefler.
{
"$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": {}
}
Örnek şablon için bkz . Birden çok kaynak grubuna dağıtma.
Farklı abonelikteki kaynak grubu kapsamı
Kaynakları farklı bir abonelikteki bir kaynak grubuna dağıtmak için iç içe dağıtım ekleyin ve ve resourceGroup
özelliklerini ekleyinsubscriptionId
. Aşağıdaki örnekte, iç içe dağıtım adlı demoResourceGroup
bir kaynak grubunu hedefler.
{
"$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": {}
}
Örnek şablon için bkz . Birden çok kaynak grubuna dağıtma.
Kapsam-abonelik
Kaynakları aboneliğe dağıtmak için iç içe dağıtım ekleyin ve özelliğini ekleyin subscriptionId
. Abonelik, hedef kaynak grubunun aboneliği veya kiracıdaki başka bir abonelik olabilir. Ayrıca, iç içe dağıtım için özelliğini ayarlayın 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",
"subscriptionId": "0000000-0000-0000-0000-000000000000",
"properties": {
"mode": "Incremental",
"template": {
subscription-resources
}
}
}
],
"outputs": {}
}
Örnek şablon için bkz . Kaynak grubu oluşturma.
Kapsamı kiracıya
Kiracıda kaynak oluşturmak için değerini olarak /
ayarlayınscope
. Şablonu dağıtan kullanıcının kiracıda dağıtmak için gerekli erişime sahip olması gerekir.
İç içe dağıtım kullanmak için ve location
ayarlayınscope
.
{
"$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": {}
}
İsterseniz, yönetim grupları gibi bazı kaynak türleri için kapsamı /
olarak da ayarlayabilirsiniz.
{
"$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')]"
}
}
}
Daha fazla bilgi için bkz . Yönetim grubu.
Hedef kaynak grubuna dağıtma
Kaynakları hedef kaynak grubuna dağıtmak için bu kaynakları şablonun resources
bölümünde tanımlayın. Aşağıdaki şablon, dağıtım işleminde belirtilen kaynak grubunda bir depolama hesabı oluşturur.
{
"$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]"
}
}
}
Birden çok kaynak grubuna dağıtma
Tek bir ARM şablonunda birden fazla kaynak grubuna dağıtabilirsiniz. Üst şablon için olandan farklı bir kaynak grubunu hedeflemek için iç içe veya bağlantılı şablon kullanın. Dağıtım kaynak türü içinde, iç içe şablonun dağıtılmasını istediğiniz abonelik kimliği ve kaynak grubu değerlerini belirtin. Kaynak grupları farklı aboneliklerde bulunabilir.
Not
Tek bir dağıtımda 800 kaynak grubuna dağıtabilirsiniz. Bu sınırlama genellikle üst şablon için belirtilen bir kaynak grubuna ve iç içe veya bağlı dağıtımlarda en fazla 799 kaynak grubuna dağıtım yapabileceğiniz anlamına gelir. Ancak, üst şablonunuz yalnızca iç içe veya bağlantılı şablonlar içeriyorsa ve kendisi herhangi bir kaynak dağıtmıyorsa, iç içe veya bağlantılı dağıtımlara en fazla 800 kaynak grubu ekleyebilirsiniz.
Aşağıdaki örnekte iki depolama hesabı dağıtılır. İlk depolama hesabı, dağıtım işleminde belirtilen kaynak grubuna dağıtılır. İkinci depolama hesabı ve secondSubscriptionID
parametrelerinde belirtilen kaynak grubuna secondResourceGroup
dağıtılır:
{
"$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": {}
}
}
]
}
Mevcut olmayan bir kaynak grubunun adını ayarlarsanız resourceGroup
dağıtım başarısız olur.
Önceki şablonu test etmek ve sonuçları görmek için PowerShell veya Azure CLI kullanın.
Aynı abonelikteki iki kaynak grubuna iki depolama hesabı dağıtmak için şunu kullanın:
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
İki aboneliğe iki depolama hesabı dağıtmak için şunu kullanın:
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
Kaynak grubu oluştur
Bir kaynak grubu dağıtımından abonelik düzeyine geçebilir ve bir kaynak grubu oluşturabilirsiniz. Aşağıdaki şablon, hedef kaynak grubuna bir depolama hesabı dağıtır ve belirtilen abonelikte yeni bir kaynak grubu oluşturur.
{
"$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": {}
}
}
}
]
}
Sonraki adımlar
- Bulut için Microsoft Defender için çalışma alanı ayarlarını dağıtma örneği için bkz. deployASCwithWorkspace Ayarlar.json.