İç içe şablonları kullanarak DevTest Labs ortamlarını dağıtma

İç içe dağıtım, bir ana şablonun içinden ikincil Azure Resource Manager (ARM) şablonlarını çalıştırır. Bu makalede, bir Azure DevTest Labs ortamı dağıtmak için iç içe yerleştirilmiş şablonlar örneği gösterilmektedir. DevTest Labs ortamları, hizmet olarak platform (PaaS) kaynaklarının yüklü olduğu birden çok hizmet olarak altyapı (IaaS) sanal makinesi (VM) içerir. ARM şablonlarını kullanarak PaaS kaynaklarını ve VM'leri sağlayabilirsiniz.

Dağıtımı hedeflenen, amaca özgü bir şablon kümesine ayırmak test etme, yeniden kullanma ve okunabilirlik avantajları sağlar. Kod örnekleri de dahil olmak üzere iç içe şablonlar hakkında genel bilgi için bkz. Azure kaynaklarını dağıtırken bağlantılı ve iç içe şablonları kullanma.

Visual Studio ile iç içe şablonları dağıtma

Visual Studio'daki Azure Kaynak Grubu proje şablonu ARM şablonları geliştirmeyi ve hatalarını ayıklamayı kolaylaştırır. Ana azuredeploy.json şablon dosyasına iç içe bir şablon eklediğinizde, Visual Studio şablonu daha esnek hale getirmek için aşağıdaki öğeleri ekler:

  • İkincil şablon ve parametre dosyalarını içeren bir alt klasör
  • Ana şablon dosyasındaki değişken adları
  • İki anahtar parametresi _artifactsLocation ve _artifactsLocationSasToken

DevTest Labs'de ARM şablonlarını laboratuvara bağladığınız bir Git deposunda depolarsınız. Yeni bir ortam oluşturmak için bağlantılı depo şablonlarından birini kullandığınızda, dağıtım şablon dosyalarını laboratuvardaki bir Azure Depolama kapsayıcısına kopyalar. Depoya ve ana şablon dosyasına iç içe bir şablon kaynağı eklediğinizde, Visual Studio ve _artifactsLocationSasToken değerlerini tanımlar_artifactsLocation, alt klasörleri depolama kapsayıcısına kopyalar ve konum ve Paylaşılan Erişim İmzası (SaS) belirtecini parametre dosyalarına ekler.

İç içe şablon klasör yapısı

Aşağıdaki şablon örneğinde, Git deposu klasörünün nestone.json ve NestOne.parameters.json iç içe şablon dosyalarıyla birlikte nestedtemplates adlı bir alt klasörü vardır. azuredeploy.json ana şablon dosyası yapıtların konumunu, iç içe şablon klasörünü ve iç içe şablon dosya adını kullanarak ikincil şablonlar için URI'yi oluşturur. Parametre dosyasının URI'si yapıtların konumu, iç içe şablon klasörü ve iç içe şablon parametreleri dosyasıdır. Birincil klasöre, ancak yalnızca bir iç içe yerleştirme düzeyinde daha fazla iç içe şablon alt klasörü ekleyebilirsiniz.

Aşağıdaki ekran görüntüsünde Visual Studio'daki proje yapısı gösterilmektedir:

Visual Studio'da iç içe şablon proje yapısını gösteren ekran görüntüsü.

İç içe dağıtım örneği

Aşağıdaki örnekte, iç içe dağıtım için ana azuredeploy.json ARM şablon dosyası gösterilmektedir:


"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "_artifactsLocation": {
        "type": "string"
    },
    "_artifactsLocationSasToken": {
        "type": "securestring"
    }},
"variables": {
    "NestOneTemplateFolder": "nestedtemplates",
    "NestOneTemplateFileName": "NestOne.json",
    "NestOneTemplateParametersFileName": "NestOne.parameters.json"},
    "resources": [
    {
        "name": "NestOne",
        "type": "Microsoft.Resources/deployments",
        "apiVersion": "2016-09-01",
        "dependsOn": [ ],
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
                "contentVersion": "1.0.0.0"
            },
            "parametersLink": {
                "uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateParametersFileName'), parameters('_artifactsLocationSasToken'))]",
                "contentVersion": "1.0.0.0"
            }
        }    
    }],
"outputs": {}

Sonraki adımlar