Aracılığıyla paylaş


Öğretici: Bağlantılı şablonlarla şablon belirtimi oluşturma

Ana şablon ve bağlantılı şablon ile şablon belirtimi oluşturmayı öğrenin. ARM şablonlarını kuruluşunuzdaki diğer kullanıcılarla paylaşmak için şablon belirtimlerini kullanırsınız. Bu makalede, dağıtım kaynağının özelliğini kullanarak relativePath bir ana şablonu ve bağlantılı şablonlarını paketlemek için şablon belirtimi oluşturma adımları gösterilmektedir.

Önkoşullar

Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.

Not

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

Bağlı şablonlar oluşturma

Ana şablonu ve bağlantılı şablonu oluşturun.

Bir şablonu bağlamak için ana şablonunuza bir dağıtım kaynağı ekleyin. özelliğinde templateLink , bağlı şablonun göreli yolunu üst şablonun yoluna uygun olarak belirtin.

Bağlı şablon linkedTemplate.json olarak adlandırılır ve ana şablonun depolandığı yolda artifacts adlı bir alt klasörde depolanır. relativePath için aşağıdaki değerlerden birini kullanabilirsiniz:

  • ./artifacts/linkedTemplate.json
  • /artifacts/linkedTemplate.json
  • artifacts/linkedTemplate.json

relativePath özelliği her zaman bildirilen şablon dosyasına relativePath göre belirlenir, bu nedenle linkedTemplate.json'dan çağrılan başka bir linkedTemplate2.json varsa ve linkedTemplate2.json aynı yapıtlar alt klasöründe depolanıyorsa, linkedTemplate.json'de belirtilen relativePath yalnızca linkedTemplate2.jsonolur.

  1. Aşağıdaki JSON ile ana şablonu oluşturun. Ana şablonu yerel bilgisayarınıza azuredeploy.json olarak kaydedin. Bu öğreticide c:\Templates\linkedTS\azuredeploy.json yoluna kaydettiğiniz varsayılır, ancak herhangi bir yolu kullanabilirsiniz.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "location": {
          "type": "string",
          "defaultValue": "westus2",
          "metadata":{
            "description": "Specify the location for the resources."
          }
        },
        "storageAccountType": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "metadata":{
            "description": "Specify the storage account type."
          }
        }
      },
      "variables": {
        "appServicePlanName": "[format('plan{0}', uniquestring(resourceGroup().id))]"
      },
      "resources": [
        {
          "type": "Microsoft.Web/serverfarms",
          "apiVersion": "2022-09-01",
          "name": "[variables('appServicePlanName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "B1",
            "tier": "Basic",
            "size": "B1",
            "family": "B",
            "capacity": 1
          },
          "kind": "linux",
          "properties": {
            "perSiteScaling": false,
            "reserved": true,
            "targetWorkerCount": 0,
            "targetWorkerSizeId": 0
          }
        },
        {
          "type": "Microsoft.Resources/deployments",
          "apiVersion": "2022-09-01",
          "name": "createStorage",
          "properties": {
            "mode": "Incremental",
            "templateLink": {
              "relativePath": "artifacts/linkedTemplate.json"
            },
            "parameters": {
              "storageAccountType": {
                "value": "[parameters('storageAccountType')]"
              }
            }
          }
        }
      ]
    }
    

    Not

    apiVersion değeri Microsoft.Resources/deployments 2020-06-01 veya üzeri olmalıdır.

  2. Ana şablonun kaydedildiği klasörde artifacts adlı bir dizin oluşturun.

  3. Aşağıdaki JSON ile bağlantılı şablonu oluşturun:

    {
      "$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('store{0}', 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')]"
        }
      }
    }
    
  4. Şablonu yapıtlar klasörüne linkedTemplate.json olarak kaydedin.

Şablon belirtimi oluşturma

Şablon belirtimleri kaynak Gruplarında depolanır. Bir kaynak grubu oluşturun ve ardından aşağıdaki betikle bir şablon belirtimi oluşturun. Şablon belirtim adı webSpec'tir.

New-AzResourceGroup `
  -Name templateSpecRG `
  -Location westus2

New-AzTemplateSpec `
  -Name webSpec `
  -Version "1.0.0.0" `
  -ResourceGroupName templateSpecRG `
  -Location westus2 `
  -TemplateFile "c:\Templates\linkedTS\azuredeploy.json"

İşiniz bittiğinde, şablon belirtimini Azure portalından veya aşağıdaki cmdlet'i kullanarak görüntüleyebilirsiniz:

Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec

Şablon belirtimlerini dağıtma

Artık şablon belirtimini dağıtabilirsiniz. Şablon belirtimini dağıtmak, şablon belirtiminin kaynak kimliğini geçirmeniz dışında içerdiği şablonu dağıtmaya benzer. Aynı dağıtım komutlarını kullanırsınız ve gerekirse şablon belirtimi için parametre değerlerini geçirirsiniz.

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name webSpec -Version "1.0.0.0").Versions.Id

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

Sonraki adımlar

Şablon belirtimlerini bağlantılı şablon olarak dağıtma hakkında bilgi edinmek için bkz . Öğretici: Şablon belirtimlerini bağlantılı şablon olarak dağıtma.