Öğ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 bir hesap oluşturun.

Not

şablon belirtimlerini Azure PowerShell 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 dağıtım kaynağı ekleyin. özelliğinde templateLink , bağlı şablonun göreli yolunu üst şablonun yoluna uygun olarak belirtin.

Bağlantı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ıyla relativePath ilişkilidir, bu nedenle linkedTemplate.json dosyasından çağrılan başka bir linkedTemplate2.json varsa ve linkedTemplate2.json aynı yapıtlar alt klasöründe depolanırsa, linkedTemplate.json dosyasında 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 artifactsklasö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 belirtimi 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 belirtimlerini Azure portal 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.