Öğretici: Yerel ARM şablonu dağıtma

Yerel makinenizden Azure Resource Manager şablonu (ARM şablonu) dağıtmayı öğrenin. Tamamlanması yaklaşık 8 dakika sürer.

Bu öğretici, serinin ilk öğreticisidir. Seride ilerledikçe, bağlantılı bir şablon oluşturarak şablonu modüler hale getirmek, bağlantılı şablonu bir depolama hesabında depolamak ve SAS belirteci kullanarak bağlantılı şablonun güvenliğini sağlamak ve şablonları dağıtmak için DevOps işlem hattı oluşturmayı öğreneceksiniz. Bu seri şablon dağıtımına odaklanır. Şablon geliştirmeyi öğrenmek istiyorsanız başlangıç öğreticilerine bakın.

Araçları alma

Şablonları dağıtmak için ihtiyacınız olan araçlara sahip olduğunuzdan emin olarak başlayalım.

Komut satırı dağıtımı

Şablonu dağıtmak için Azure PowerShell veya Azure CLI gerekir. Yükleme yönergeleri için bkz:

Azure PowerShell veya Azure CLI'yı yükledikten sonra ilk kez oturum açtığınızdan emin olun. Yardım için bkz . Oturum açma - PowerShell veya Oturum açma - Azure CLI.

Düzenleyici (İsteğe bağlı)

Şablonlar JSON dosyalarıdır. Şablonları gözden geçirmek/düzenlemek için iyi bir JSON düzenleyicisine ihtiyacınız vardır. Resource Manager Araçları uzantısıyla Visual Studio Code öneririz. Bu araçları yüklemeniz gerekiyorsa bkz. Hızlı Başlangıç: Visual Studio Code ile ARM şablonları oluşturma.

Şablonu gözden geçirme

Şablon bir depolama hesabı, app service planı ve web uygulaması dağıtır. Şablonu oluşturmak istiyorsanız Hızlı Başlangıç şablonları hakkındaki öğreticiyi gözden geçirebilirsiniz. Ancak bu öğreticiyi tamamlamak için gerekli değildir.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "projectName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11,
      "metadata": {
        "description": "Specify a project name that is used to generate resource names."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specify a location for the resources."
      }
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ],
      "metadata": {
        "description": "Specify the storage account type."
      }
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "Specify the Runtime stack of current web app"
      }
    }
  },
  "variables": {
    "storageAccountName": "[format('{0}{1}', parameters('projectName'), uniqueString(resourceGroup().id))]",
    "webAppName": "[format('{0}WebApp', parameters('projectName'))]",
    "appServicePlanName": "[format('{0}Plan', parameters('projectName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-01-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "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.Web/sites",
      "apiVersion": "2022-09-01",
      "name": "[variables('webAppName')]",
      "location": "[parameters('location')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
      ]
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints]"
    }
  }
}

Önemli

Depolama hesabı adları benzersiz olmalı, 3 ila 24 karakter uzunluğunda olmalı ve yalnızca sayı ve küçük harf kullanmalıdır. Örnek şablonun storageAccountName değişkeni, parametrenin projectName en fazla 11 karakterlik değerini 13 karakterlik benzersiz birString değeriyle birleştirir.

Şablonun bir kopyasını .json uzantısıyla (örneğin, azuredeploy.json) yerel bilgisayarınıza kaydedin. Bu şablonu öğreticinin ilerleyen bölümlerinde dağıtacaksınız.

Azure'da oturum açma

Şablon dağıtmak üzere Azure PowerShell/Azure CLI ile çalışmaya başlamak için Azure kimlik bilgilerinizle oturum açın.

Connect-AzAccount

Birden çok Azure aboneliğiniz varsa, kullanmak istediğiniz aboneliği seçin. ve köşeli ayraçları [] abonelik bilgilerinizle değiştirin[SubscriptionID/SubscriptionName]:

Set-AzContext [SubscriptionID/SubscriptionName]

Kaynak grubu oluşturma

Bir şablon dağıttığınızda, kaynakları içerecek bir kaynak grubu belirtirsiniz. Dağıtım komutunu çalıştırmadan önce Azure CLI veya Azure PowerShell ile kaynak grubunu oluşturun. Azure PowerShell ile Azure CLI arasında seçim yapmak için aşağıdaki kod bölümünde yer alan sekmeleri seçin. Bu makaledeki CLI örnekleri Bash kabuğu için yazılmıştır.

$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource and resource group names"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroup `
  -Name $resourceGroupName `
  -Location "Central US"

Şablon dağıtma

Şablonu dağıtmak için bir veya her iki dağıtım seçeneğini kullanın.

$projectName = Read-Host -Prompt "Enter the same project name"
$templateFile = Read-Host -Prompt "Enter the template file path and file name"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroupDeployment `
  -Name DeployLocalTemplate `
  -ResourceGroupName $resourceGroupName `
  -TemplateFile $templateFile `
  -projectName $projectName `
  -verbose

Azure PowerShell kullanarak şablon dağıtma hakkında daha fazla bilgi edinmek için bkz. ARM şablonları ve Azure PowerShell ile kaynakları dağıtma.

Kaynakları temizleme

Kaynak grubunu silerek dağıtmış olduğunuz kaynakları temizleyin.

  1. Azure portal soldaki menüden Kaynak grubu'na tıklayın.
  2. Ada göre filtrele alanına kaynak grubu adını girin.
  3. Kaynak grubu adını seçin.
  4. Üstteki menüden Kaynak grubunu sil'i seçin.

Sonraki adımlar

Yerel şablon dağıtmayı öğrendin. Sonraki öğreticide, şablonu bir ana şablonla bağlantılı şablona ayıracak ve bağlantılı şablonu depolamayı ve güvenli hale getireceğinizi öğreneceksiniz.