Azure Resource Manager özellikleri

Şablon özellikleri, daha sonra dağıtım için Azure'da bir Azure Resource Manager şablonu (ARM şablonu) depolamak için kullanılan bir kaynak t t koludur. Bu kaynak türü, ARM şablonlarını kuruluşta diğer kullanıcılarla paylaşmanızı sağlar. Diğer Tüm Azure kaynaklarda olduğu gibi, şablon özellikleri paylaşmak için Azure rol tabanlı erişim denetimi (Azure RBAC) kullanabilirsiniz.

Microsoft.Resources/templateSpecs, şablon özellikleri için kaynak t t t'dır. Bir ana şablondan ve herhangi bir sayıda bağlı şablondan oluşur. Azure, şablon özellikleri kaynak gruplarında güvenli bir şekilde depolar. Şablon Belirtimleri sürümünün nasıl destekley olduğunu destekler.

Şablon özellikleri dağıtmak için PowerShell, Azure CLI, Azure portal, REST ve desteklenen diğer SDK'ler ve istemciler gibi standart Azure araçlarını kullanırsınız. Şablon için olduğu gibi aynı komutları kullanırsınız.

Not

şablon özellikleri ile şablon Azure PowerShell için 5.0.0 veyasonraki bir sürümünü yüklemeniz gerekir. Azure CLI ile kullanmak için 2.14.2 veya sonraki bir sürümünü kullanın.

Dağıtımınızı tasarlarken her zaman kaynakların yaşam döngüsünü göz önünde bulundurarak benzer yaşam döngüsünü paylaşan kaynakları tek bir şablon özelliklerinde gruplamanız gerekir. Örneğin, dağıtımlarınız her biri kendi veritabanlarını ve kapsayıcılarını içeren Cosmos db'nin birden çok örneğini içerir. Veritabanları ve kapsayıcılar çok fazla değişmese de Cosmo DB örneğini, temel alınan veritabanlarını ve kapsayıcılarını dahil etmek için tek bir şablon belirtimi oluşturmak gerekir. Daha sonra şablonlarınız içinde koşullu deyimleri ve kopyalama döngülerini kullanarak bu kaynakların birden çok örneğini oluşturabilirsiniz.

Microsoft Learn

Şablon özellikleri hakkında daha fazla bilgi edinmek ve uygulamalı rehberlik için bkz. Üzerinde şablon özellikleri kullanarak yeniden kullanılabilir altyapı kodu kitaplıklarını yayımlama Microsoft Learn.

Şablon özellikleri neden kullansın?

Şablon özellikleri aşağıdaki avantajları sağlar:

  • Şablon özellikleriniz için standart ARM şablonları kullanırsınız.
  • Erişimi SAS belirteçleri yerine Azure RBAC üzerinden yönetirsiniz.
  • Kullanıcılar şablona yazma erişimi olmadan şablon özellikleri dağıtabilir.
  • Şablon özeliklerini PowerShell betiği veya işlem hattı oluşturma gibi mevcut dağıtım DevOps tümleştirebilirsiniz.

Şablon özellikleri kurallı şablonlar oluşturmanızı ve bunları kuruluşta ekiplerle paylaşmanızı sağlar. Şablon özellikleri güvenlidir çünkü dağıtım için Azure Resource Manager ancak doğru izin olmadan kullanıcılar tarafından erişilemez. Kullanıcıların şablon özelliklerini dağıtmak için yalnızca okuma erişimine sahip olduğu için şablonu başkalarının değiştirmelerine izin vermeden paylaşabilirsiniz.

Şablonlarınız şu anda bir depolama GitHub depolama hesabında bulunuyorsa, şablonları paylaşmaya ve kullanmaya çalışırken çeşitli zorluklarla karşı karşıyasınız. Şablonu dağıtmak için şablonu genel erişime açık hale veya SAS belirteçleriyle erişimi yönetmeniz gerekir. Bu sınırlamaya bir çözüm olarak, kullanıcılar yerel kopyalar oluşturabilir ve bu da sonunda özgün şablonunuzdan farklı olabilir. Şablon özellikleri, şablonların paylaşımını basitleştirir.

Şablon özelliklerine dahil edilen şablonların, kuruluşun gereksinimlerine ve yönergelerine uyması için kuruluş yöneticileri tarafından doğrulanmalıdır.

Şablon özellikleri oluşturma

Aşağıdaki örnek, Azure'da depolama hesabı oluşturmak için basit bir şablon gösterir.

{
  "$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"
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "[concat('store', uniquestring(resourceGroup().id))]",
      "location": "[resourceGroup().location]",
      "kind": "StorageV2",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      }
    }
  ]
}

Şablon özellikleri oluşturursanız, Ana şablon dosyasına PowerShell veya CLI komutları geçirebilirsiniz. Ana şablon bağlı şablonlara başvurursa, komutlar bunları bulur ve şablon özellikleri oluşturmak için paketler. Daha fazla bilgi edinmek için bkz. Bağlantılı şablonlarla şablon özellikleri oluşturma.

Kullanarak şablon özellikleri oluşturma:

New-AzTemplateSpec -Name storageSpec -Version 1.0a -ResourceGroupName templateSpecsRg -Location westus2 -TemplateFile ./mainTemplate.json

Aboneliğinizin tüm şablon özelliklerine şu şekilde bakabilirsiniz:

Get-AzTemplateSpec

Şablon özelliklerine ilişkin ayrıntıları, sürümleri de dahil olmak üzere şu şekilde görüntüebilirsiniz:

Get-AzTemplateSpec -ResourceGroupName templateSpecsRG -Name storageSpec

Şablon özellikleri dağıtma

Şablon özellikleri oluşturulduktan sonra, şablon özelliklerine okuma erişimi olan kullanıcılar bunu dağıtabilirsiniz. Erişim izni hakkında daha fazla bilgi için bkz. Öğretici:Azure kaynaklarını kullanarak bir gruba Azure PowerShell.

Şablon özellikleri portal, PowerShell, Azure CLI aracılığıyla veya daha büyük bir şablon dağıtımında bağlantılı şablon olarak dağıtılabilir. Kuruluşta kullanıcılar Azure'daki herhangi bir kapsama (kaynak grubu, abonelik, yönetim grubu veya kiracı) şablon özellikleri dağıtabilirsiniz.

Şablon için bir yol veya URI'yi geçirme yerine, kaynak kimliğini sağlayarak bir şablon özellikleri dağıtırsınız. Kaynak kimliği aşağıdaki biçimdedir:

/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Resources/templateSpecs/{template-spec-name}/versions/{template-spec-version}

Kaynak kimliğinin şablon özellikleri için bir sürüm adı içerir.

Örneğin, aşağıdaki komutla bir şablon özellikleri dağıtırsınız.

$id = "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/templateSpecsRG/providers/Microsoft.Resources/templateSpecs/storageSpec/versions/1.0a"

New-AzResourceGroupDeployment `
  -TemplateSpecId $id `
  -ResourceGroupName demoRG

Uygulamada, genellikle veya Get-AzTemplateSpec çalıştırarak az ts show dağıtmak istediğiniz şablon özelliklerine yönelik kimliği alırsınız.

$id = (Get-AzTemplateSpec -Name storageSpec -ResourceGroupName templateSpecsRg -Version 1.0a).Versions.Id

New-AzResourceGroupDeployment `
  -ResourceGroupName demoRG `
  -TemplateSpecId $id

Şablon özellikleri dağıtmak için aşağıdaki biçimde bir URL de açabilirsiniz:

https://portal.azure.com/#create/Microsoft.Template/templateSpecVersionId/%2fsubscriptions%2f{subscription-id}%2fresourceGroups%2f{resource-group-name}%2fproviders%2fMicrosoft.Resources%2ftemplateSpecs%2f{template-spec-name}%2fversions%2f{template-spec-version}

Parametreler

Parametreleri şablon özelliklerine geçirme, parametreleri ARM şablonuna geçirmeye benzer. Parametre değerlerini satır içinde veya parametre dosyasına ekleyin.

Bir parametreyi satır içi olarak geçmek için şunları kullanın:

New-AzResourceGroupDeployment `
  -TemplateSpecId $id `
  -ResourceGroupName demoRG `
  -StorageAccountType Standard_GRS

Yerel parametre dosyası oluşturmak için şunları kullanın:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "StorageAccountType": {
      "value": "Standard_GRS"
    }
  }
}

Ve, bu parametre dosyasını şu şekilde ile geçişin:

New-AzResourceGroupDeployment `
  -TemplateSpecId $id `
  -ResourceGroupName demoRG `
  -TemplateParameterFile ./mainTemplate.parameters.json

Sürüm Oluşturma

Şablon özellikleri oluşturursanız, bunun için bir sürüm adı sağlarsınız. Şablon kodunda yeniledikten sonra var olan bir sürümü güncelleştirebilirsiniz (düzeltmeler için) veya yeni bir sürüm yayımlayın. Sürüm bir metin dizesidir. Semantik sürümler de dahil olmak üzere herhangi bir sürüm sistemi seçebilirsiniz. Şablon özelliklerine sahip kullanıcılar, dağıtımda kullanmak istediğiniz sürüm adını kullanabilir.

Etiketleri kullanma

Etiketler kaynaklarınızı mantıksal olarak düzenlemenize yardımcı olur. Şablon özelliklerine etiket eklemek için Azure PowerShell Azure CLI'yi kullanabilirsiniz:

New-AzTemplateSpec `
  -Name storageSpec `
  -Version 1.0a `
  -ResourceGroupName templateSpecsRg `
  -Location westus2 `
  -TemplateFile ./mainTemplate.json `
  -Tag @{Dept="Finance";Environment="Production"}
Set-AzTemplateSpec `
  -Name storageSpec `
  -Version 1.0a `
  -ResourceGroupName templateSpecsRg `
  -Location westus2 `
  -TemplateFile ./mainTemplate.json `
  -Tag @{Dept="Finance";Environment="Production"}

Belirtilen sürüm parametresiyle ancak tag/tags parametresi olmadan şablon özelliklerini oluştururken veya değiştirirken:

  • Şablon özellikleri mevcutsa ve etiketleri varsa ancak sürüm yoksa, yeni sürüm mevcut şablon özellikleriyle aynı etiketleri devralıyor.

Hem tag/tags parametresiyle hem de belirtilen sürüm parametresiyle şablon özelliklerini oluştururken veya değiştirirken:

  • Hem şablon özellikleri hem de sürüm yoksa, etiketler hem yeni şablon özelliklerine hem de yeni sürüme eklenir.
  • Şablon özellikleri varsa ancak sürüm yoksa etiketler yalnızca yeni sürüme eklenir.
  • Hem şablon özellikleri hem de sürüm mevcutsa, etiketler yalnızca sürüm için geçerlidir.

Etiket/etiketler parametresi belirtilmiş ancak sürüm parametresi belirtilmemiş bir şablonda değişiklik yapmak için etiketler yalnızca şablon özelliklerine eklenir.

Bağlantılı şablonlarla şablon özellikleri oluşturma

Şablon spec şablonunuz için ana şablon bağlı şablonlara başvurursa, PowerShell ve CLI komutları bağlı şablonları yerel sürücüden otomatik olarak bulabilir ve paketler. Şablon özellikleri barındırmak için depolama hesaplarını veya depoları el ile yapılandırmanız gerekmez; her şey şablon özellikleri kaynağında kendi içindedir.

Aşağıdaki örnek, iki bağlantılı şablona sahip bir ana şablondan oluşur. Örnek, şablonun yalnızca bir alıntısıdır. Diğer şablonlara bağlantı oluşturmak için relativePath adlı bir özellik kullandığına dikkat edin. Dağıtım kaynağı apiVersion için veya daha 2020-06-01 yenisini kullanmalısınız.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  ...
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-06-01",
      ...
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "relativePath": "artifacts/webapp.json"
        }
      }
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-06-01",
      ...
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "relativePath": "artifacts/database.json"
        }
      }
    }
  ],
  "outputs": {}
}

Önceki örnek için şablon özellikleri oluşturmak için PowerShell veya CLI komutu yürütülürken, komut üç dosya bulur: ana şablon, web uygulaması şablonu ( ) ve veritabanı şablonu ( ) ve bunları şablon özelliklerine webapp.json database.json paketler.

Daha fazla bilgi için bkz. Öğretici: Bağlantılı şablonlarla şablon özellikleri oluşturma.

Şablon spec'i bağlantılı şablon olarak dağıtma

Şablon özellikleri oluşturduktan sonra arm şablonundan veya başka bir şablon özelliklerinden kolayca yeniden kullanabilirsiniz. Şablonun kaynak kimliğini şablonunuza ekleyerek bir şablon özelliklerine bağlantı sağlarsınız. Bağlı şablon özellikleri, ana şablonu dağıtıldığında otomatik olarak dağıtılır. Bu davranış modüler şablon özellikleri geliştirmenizi ve gerektiğinde bunları yeniden kullanmanıza olanak sağlar.

Örneğin, ağ kaynaklarını dağıtan bir şablon özellikleri ve depolama kaynaklarını dağıtan başka bir şablon özellikleri oluşturabilirsiniz. ARM şablonlarında, ağ veya depolama kaynaklarını yapılandırmanız gereken her zaman bu iki şablon özelliklerine bağlantı sağlarsınız.

Aşağıdaki örnek önceki örnekle benzerdir, ancak yerel bir şablona bağlantı vermek için özelliğini kullanmak yerine bir şablon özelliğine id bağlantı vermek için özelliğini relativePath kullanırsınız. Dağıtım 2020-06-01 kaynağı için API sürümü için kullanın. Örnekte, şablon özellikleri templateSpecsRG adlı bir kaynak grubundadır.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  ...
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-06-01",
      "name": "networkingDeployment",
      ...
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "id": "[resourceId('templateSpecsRG', 'Microsoft.Resources/templateSpecs/versions', 'networkingSpec', '1.0a')]"
        }
      }
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-06-01",
      "name": "storageDeployment",
      ...
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "id": "[resourceId('templateSpecsRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '1.0a')]"
        }
      }
    }
  ],
  "outputs": {}
}

Şablon özellikleri bağlama hakkında daha fazla bilgi için bkz. Öğretici: Bağlantılı şablon olarak şablon özellikleri dağıtma.

Sonraki adımlar