Öğretici: yerel bir ARM şablonu dağıtma

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

Bu öğretici bir serinin birincisidir. Seriler aracılığıyla ilerleyerek, bağlantılı bir şablon oluşturarak şablonu modüle getirin, bağlantılı şablonu bir depolama hesabında depolar ve SAS belirtecini kullanarak bağlı şablonu güvenli hale getirin ve şablonları dağıtmak için bir DevOps işlem hattı oluşturmayı öğreneceksiniz. Bu seri, şablon dağıtımına odaklanır. Şablon geliştirmeyi öğrenmek isterseniz, Başlangıç öğreticilerinebakın.

Araçları al

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

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

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

Azure PowerShell veya Azure CLı yükledikten sonra, ilk kez oturum açarak emin olun. Yardım için bkz. oturum açma-PowerShell veya Oturum Açma-Azure CLI.

Düzenleyici (Isteğ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. Kaynak Yöneticisi Araçları uzantısı ile Visual Studio Code önerilir. Bu araçları yüklemeniz gerekiyorsa bkz. hızlı başlangıç: VISUAL STUDIO Code ARM şablonları oluşturma.

Şablonu gözden geçir

Şablon bir depolama hesabı, App Service planı ve Web uygulaması dağıtır. Şablonu oluşturmaya ilgileniyorsanız, hızlı başlangıç şablonları hakkında öğreticiyegidebilirsiniz. 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": "[concat(parameters('projectName'), uniqueString(resourceGroup().id))]",
    "webAppName": "[concat(parameters('projectName'), 'WebApp')]",
    "appServicePlanName": "[concat(parameters('projectName'), 'Plan')]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2020-12-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": "2020-12-01",
      "name": "[variables('webAppName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
      ],
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('storageAccountName')).primaryEndpoints]"
    }
  }
}

Önemli

Depolama hesabı adları 3 ila 24 karakter uzunluğunda olmalı ve yalnızca rakam ve küçük harf kullanılmalıdır. Ad benzersiz olmalıdır. Şablonda, depolama hesabı adı, Mağaza eklenmiş proje adıdır ve proje adı 3 ila 11 karakter arasında olmalıdır. Bu nedenle, proje adı depolama hesabı adı gereksinimlerini karşılamalıdır ve 11 ' den az karakter içermelidir.

Şablonun bir kopyasını . JSON uzantısıyla yerel bilgisayarınıza kaydedin, örneğin, azuredeploy.js. Bu şablonu öğreticide daha sonra dağıtırsınız.

Azure'da oturum açma

Bir şablon dağıtmak için Azure PowerShell/Azure CLı 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. [SubscriptionID/SubscriptionName]Ve köşeli ayraçları [] Abonelik bilgileriniz ile değiştirin:

Set-AzContext [SubscriptionID/SubscriptionName]

Kaynak grubu oluşturma

Bir şablonu dağıtırken, 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 ve Azure CLı arasında seçim yapmak için aşağıdaki kod bölümündeki sekmeleri seçin. Bu makaledeki CLı ö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 için bkz. ARM şablonlarıyla kaynak dağıtma ve Azure PowerShell.

Kaynakları temizleme

Kaynak grubunu silerek dağıttığınız kaynakları temizleyin.

  1. Azure portal, sol menüden kaynak grubu ' nu seçin.
  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 bir şablon dağıtmayı öğrendiniz. Sonraki öğreticide, şablonu bir ana şablona ve bağlı bir şablona ayırdınız ve bağlantılı şablonu nasıl depolayacağınızı ve güvenli hale ayarlayacağınızı öğreneceksiniz.