ARM şablonlarıyla kaynak grubu dağıtımları
Bu makalede, bir kaynak grubu için dağıtım kapsamı açıklanmıştır. Dağıtım için Azure Resource Manager şablonu (ARM şablonu) kullanırsınız. Makalede ayrıca dağıtım işlemi sırasında kapsamı kaynak grubunun ötesine nasıl genişletecekleri de gösterir.
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 şunları 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 kullanın. Aşağıdaki örnek, kaynak grubu oluşturmak için bir şablon dağıtır:
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 ilişkin dağıtım komutları ve seçenekleri hakkında daha ayrıntılı bilgi için bkz:
- ARM şablonları ve dağıtım şablonlarıyla kaynakları Azure portal
- ARM şablonları ve Azure CLI ile kaynakları dağıtma
- ARM şablonları ve dağıtım şablonlarıyla kaynakları Azure PowerShell
- ARM şablonları ve dağıtım şablonlarıyla kaynakları Azure Resource Manager REST API
- Depodan şablon dağıtmak için dağıtım GitHub kullanma
- Arm şablonlarını Cloud Shell
Dağıtım kapsamları
Bir kaynak grubuna dağıtım yapmak için kaynakları şu kaynaklara dağıtın:
- işlemden hedef kaynak grubu
- aynı abonelikte veya diğer aboneliklerde yer alan diğer kaynak grupları
- kiracıda herhangi bir abonelik
- kaynak grubunun kiracısı
Uzantı kaynağının kapsamı, dağıtım hedefinden farklı bir hedef olarak kapsamlandı.
Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olması gerekir.
Bu bölümde, farklı kapsamların nasıl belirt İşlenli olduğu gösterir. Bu farklı kapsamları tek bir şablonda birleştirebilirsiniz.
Hedef kaynak grubunun 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ı abonelikte kaynak grubunun kapsamı
Kaynakları aynı abonelikte farklı bir kaynak grubuna dağıtmak için iç içe geçmiş bir dağıtım ekleyin ve özelliğini resourceGroup ekleyin. Abonelik kimliğini veya kaynak grubunu belirtmezseniz, üst şablondan 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 geçmiş dağıtım adlı bir kaynak grubunu demoResourceGroup 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 bir şablon için bkz. Birden çok kaynak grubu dağıtma.
Farklı abonelikte kaynak grubu kapsamı
Kaynakları farklı bir abonelikte bulunan bir kaynak grubuna dağıtmak için iç içe geçmiş bir dağıtım ekleyin ve ve subscriptionId özelliklerini resourceGroup ekleyin. Aşağıdaki örnekte, iç içe geçmiş dağıtım adlı bir kaynak grubunu demoResourceGroup 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 bir şablon için bkz. Birden çok kaynak grubu dağıtma.
Kapsamdan aboneliğe
Kaynakları aboneliğe dağıtmak için iç içe geçmiş bir dağıtım ekleyin ve özelliğini subscriptionId ekleyin. Abonelik, hedef kaynak grubunun aboneliği veya kiracıda başka bir abonelik olabilir. Ayrıca, iç location içe dağıtımın özelliğini ayarlayın.
{
"$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 bir şablon için bkz. Kaynak grubu oluşturma.
Kiracı kapsamı
Kiracıda kaynak oluşturmak için olarak scope / ayarlayın. Şablonu dağıtan kullanıcının kiracıda dağıtmak için gerekli erişimine sahip olması gerekir.
İç içe dağıtım kullanmak için ve scope location ayarlayın.
{
"$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": {}
}
Ya da kapsamı yönetim grupları gibi / bazı kaynak türleri için olarak da ayarlayın.
{
"$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
Hedef kaynak grubunda kaynakları dağıtmak için bu kaynakları resources şablonun 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-04-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 grubu dağıtma
Tek bir ARM şablonunda birden fazla kaynak grubuna dağıtabilirsiniz. Üst şablondan farklı bir kaynak grubunu hedeflemek için iç içe veya bağlı bir şablon kullanın. Dağıtım kaynak türü içinde, iç içe şablonun dağıtmasını istediğiniz abonelik kimliği ve kaynak grubu değerlerini belirtin. Kaynak grupları farklı aboneliklerde mevcut olabilir.
Not
Tek bir dağıtımda 800 kaynak grubu dağıtabilirsiniz. Bu sınırlama genellikle üst şablon için belirtilen bir kaynak grubuna ve iç içe geçmiş veya bağlı dağıtımlarda en fazla 799 kaynak grubuna dağıtabilirsiniz. Ancak, üst şablonunuz yalnızca iç içe veya bağlı şablonlar içeriyorsa ve kendisi herhangi bir kaynak dağıtmıyorsa, iç içe veya bağlı dağıtımlara en fazla 800 kaynak grubu dahil edersiniz.
Aşağıdaki örnek iki depolama hesabı dağıtır. İlk depolama hesabı, dağıtım işlemi sırasında belirtilen kaynak grubuna dağıtılır. İkinci depolama hesabı, ve parametrelerinde belirtilen kaynak grubuna secondResourceGroup secondSubscriptionID 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 resourceGroup bir kaynak grubunun adına ayarlanırsanız dağıtım başarısız olur.
Yukarıdaki şablonu test etmek ve sonuçları görmek için PowerShell veya Azure CLI kullanın.
Aynı abonelikte iki kaynak grubu için iki depolama hesabı dağıtmak için 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 abonelik için iki depolama hesabı dağıtmak için 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şturma
Kaynak grubu dağıtımından aboneliğin düzeyine geçiş yapmak ve bir kaynak grubu oluşturmaktır. 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 çalışma alanı ayarlarını dağıtma örneği için bkz. deployASCwithWorkspaceSettings.json.