Aracılığıyla paylaş


Öğretici: ARM şablonunuzu 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.

Resource Manager Araçları uzantısıyla ve Azure PowerShell veya Azure Command-Line Arabirimi (CLI) ile Visual Studio Code 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": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-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": "2021-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ışıyor, 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 bir 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, bu değer dağıtım sırasında 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 bir 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.json adı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ı geliştirme ön ekiyle adlandırdığını ve etiketi Dev olarak ayarlandığını Environment fark edin.

Yine aşağıdaki içeriğe sahip yeni bir dosya oluşturun. Dosyayı azuredeploy.parameters.prod.json adı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 Üretim olarak ayarlandığını Environment fark edin. Gerçek bir üretim ortamında, ücretsiz dışında bir SKU ile bir uygulama hizmeti de kullanmak isteyebilirsiniz, ancak bu öğretici için bu SKU'yu kullanırız.

Şablon dağıtma

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

Şablonunuzun son testi olarak iki yeni kaynak grubu oluşturalım. Biri geliştirme ortamı için, diğeri de üretim ortamı için.

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

İ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

Not

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

Dağıtımı doğrulama

Azure portal kaynak gruplarını inceleyerek dağıtımı doğrulayabilirsiniz.

  1. Azure Portal’ında oturum 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 gruplardan 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ş olduğuna dikkat edin.

Kaynakları temizleme

  1. Azure portal 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

    Silinen kaynak grupları 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 ediniyor.