Aracılığıyla paylaş


Öğretici: Azure Resource Manager şablonunu dağıtmak için parametre dosyalarını kullanma

Bu öğreticide, dağıtım sırasında geçirdiğiniz değerleri depolamak için parametre dosyalarını kullanmayı öğreneceksiniz. Önceki öğreticilerde, dağıtım komutunuzla satır içi parametreleri kullandınız. Bu yaklaşım Azure Resource Manager şablonunuzu (ARM şablonu) test etmek için çalıştı, ancak dağıtımları otomatikleştirirken ortamınız için bir dizi değer geçirmek daha kolay olabilir. Parametre dosyaları, belirli bir ortam için parametre değerlerini paketlemeyi kolaylaştırır. Bu öğreticide, geliştirme ve üretim ortamları için parametre dosyaları oluşturacaksınız. Bu yönergenin tamamlanması 12 dakika sürer.

Önkoşullar

Etiketlerle ilgili öğreticiyi tamamlamanızı öneririz, ancak gerekli değildir.

Visual Studio Code'a ve Azure PowerShell'e veya Azure CLI'ya sahip olmanız gerekir. Daha fazla bilgi için bkz. şablon araçları.

Şablonu gözden geçirme

Şablonunuz dağıtım sırasında sağlayabileceğiniz birçok parametreye sahiptir. Önceki öğreticinin sonunda şablonunuz aşağıdaki JSON dosyasına sahipti:

{
  "$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]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    },
    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2025-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2025-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('appServicePlanName')]"
      ],
      "tags": "[parameters('resourceTags')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Bu şablon düzgün çalışır, ancak artık şablon için geçirdiğiniz parametreleri kolayca yönetmek istiyorsunuz.

Parametre dosyaları ekleme

Parametre dosyaları, şablonunuzla benzer bir yapıya sahip JSON dosyalarıdır. dosyasında, dağıtım sırasında geçirmek istediğiniz parametre değerlerini sağlarsınız.

Parametre dosyasının içinde, şablonunuzdaki parametreler için değerler sağlarsınız. Parametre dosyanızdaki her parametrenin adı, şablonunuzdaki parametrenin adıyla eşleşmelidir. Ad büyük/küçük harfe duyarlı değildir, ancak eşleşen değerleri kolayca görmek için şablondaki büyük/küçük harfle eşleşmenizi öneririz.

Her parametre için bir değer sağlamanız gerekmez. Belirtilmemiş bir parametrenin varsayılan değeri varsa, dağıtım sırasında bu değer kullanılır. Parametrenin varsayılan değeri yoksa ve parametre dosyasında belirtilmemişse, dağıtım sırasında bir değer sağlamanız istenir.

Parametre dosyanızda şablondaki parametre adıyla eşleşmeyen bir parametre adı belirtemezsiniz. Bilinmeyen parametreler sağladığınızda bir hata alırsınız.

Visual Studio Code'da aşağıdaki içeriğe sahip yeni bir dosya oluşturun. dosyayı azuredeploy.parameters.dev.jsonadıyla kaydedin:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "devstore"
    },
    "storageSKU": {
      "value": "Standard_LRS"
    },
    "appServicePlanName": {
      "value": "devplan"
    },
    "webAppName": {
      "value": "devapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  }
}

Bu dosya, geliştirme ortamı için parametre dosyanızdır. Depolama hesabı için Standard_LRS kullandığına, kaynakları dev ön ekine sahip olarak adlandırdığını ve Environment etiketini Dev olarak ayarladığını fark edin.

Yine aşağıdaki içeriğe sahip yeni bir dosya oluşturun. dosyayı azuredeploy.parameters.prod.jsonadıyla kaydedin:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "contosodata"
    },
    "storageSKU": {
      "value": "Standard_GRS"
    },
    "appServicePlanName": {
      "value": "contosoplan"
    },
    "webAppName": {
      "value": "contosowebapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Production",
        "Project": "Tutorial"
      }
    }
  }
}

Bu dosya, üretim ortamı için parametre dosyanızdır. Depolama hesabı için Standard_GRS kullandığına, kaynakları contoso önekiyle adlandırdığını ve etiketi Environment olarak ayarlandığını fark edin. Gerçek bir üretim ortamında, ücretsiz dışında bir SKU ile bir uygulama hizmeti de kullanmak istersiniz, ancak bu öğretici için bu SKU'yu kullanırız.

Şablonu dağıt

Şablonu dağıtmak için Azure CLI veya Azure PowerShell kullanın.

Şablonunuzun son testi olarak geliştirme ortamı için biri üretim ortamı için olmak üzere iki yeni kaynak grubu oluşturalım.

Şablon ve parametre değişkenleri için, {path-to-the-template-file}, {path-to-azuredeploy.parameters.dev.json}, {path-to-azuredeploy.parameters.prod.json} ve küme parantezlerini {} şablon ve parametre dosya yollarınız ile değiştirin.

İlk olarak geliştirme ortamına dağıtalım.

$templateFile = "{path-to-the-template-file}"
$parameterFile="{path-to-azuredeploy.parameters.dev.json}"
New-AzResourceGroup `
  -Name myResourceGroupDev `
  -Location "East US"
New-AzResourceGroupDeployment `
  -Name devenvironment `
  -ResourceGroupName myResourceGroupDev `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Şimdi üretim ortamına dağıtıyoruz.

$parameterFile="{path-to-azuredeploy.parameters.prod.json}"
New-AzResourceGroup `
  -Name myResourceGroupProd `
  -Location "West US"
New-AzResourceGroupDeployment `
  -Name prodenvironment `
  -ResourceGroupName myResourceGroupProd `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Uyarı

Dağıtım başarısız olursa, oluşturduğunuz kaynaklar hakkında bilgi almak için verbose anahtarını kullanın. debug Hata ayıklama hakkında daha fazla bilgi edinmek için anahtarını kullanın.

Dağıtımı doğrulayın

Azure portalından kaynak gruplarını keşfederek dağıtımı doğrulayabilirsiniz.

  1. Azure portalınaoturum açın.
  2. Soldaki menüden Kaynak grupları'nı seçin.
  3. Bu öğreticide dağıttığınız iki yeni kaynak grubunu görürsünüz.
  4. Kaynak grubundan birini seçin ve dağıtılan kaynakları görüntüleyin. Bu değerlerin, bu ortam için parametre dosyanızda belirttiğiniz değerlerle eşleştiğinden emin olun.

Kaynakları temizle

  1. Azure portalından soldaki menüden Kaynak grupları'nı seçin.

  2. Onay kutusunun yanındaki köprülenmiş kaynak grubu adını seçin. Bu seriyi tamamlarsanız, silinecek üç kaynak grubunuz vardır: myResourceGroup, myResourceGroupDev ve myResourceGroupProd.

  3. Üstteki menüden Kaynak grubunu sil simgesini seçin.

    Dikkat

    Bir kaynak grubunu silmek geri alınamaz.

  4. Görüntülenen açılır pencereye kaynak grubu adını yazın ve Sil'i seçin.

Sonraki Adımlar

Tebrikler. Şablonları Azure'a dağıtmaya yönelik bu giriş işlemini tamamladınız. Geri bildirim bölümünde yorum ve önerileriniz olup olmadığını bize bildirin.

Sonraki öğretici serisi, şablonları dağıtma hakkında daha ayrıntılı bilgi sağlar.