Alıştırma - ARM şablonlarınızı dağıtma

Tamamlandı

Not

Bir korumalı alanı ilk kez etkinleştirip koşulları kabul ettiğinizde Microsoft hesabı, Microsoft Learn Sandbox adlı yeni bir Azure diziniyle ilişkilendirilir. Concierge Aboneliği adlı özel bir aboneliğe eklenmiş olursunuz.

Burada bilgisayarınızdan ve URI belirterek GitHub deposundan bir Azure Resource Manager (ARM) şablonu dağıtacaksınız.

Önemli

Bu alıştırmada Visual Studio Code için Azure Resource Manager Araçları kullanılmaktadır. Visual Studio Code’da bu uzantıyı yüklediğinizden emin olun.

Microsoft Learn Sandbox aboneliğiyle ortamınızı ayarlama

Bu ünitedeki dağıtımları gerçekleştirmek için Visual Studio Code terminalinden Azure hesabınızda oturum açmanız gerekir.

Korumalı alanın etkinleştirildiği hesapta oturum açtığınızdan emin olun.

Azure'da oturum açma

  1. Visual Studio Code’daki terminalden, Azure’da oturum açmak için şu komutu çalıştırın. Bu komutun çalıştırılması, hesabınızda oturum açmanıza olanak tanıyan bir tarayıcı açar.

    Connect-AzAccount
    
  2. Oturum açtıktan sonra, terminalde bu hesapla ilişkilendirilmiş aboneliklerin listesini görürsünüz. Korumalı alanı etkinleştirdiyseniz bu listede Concierge Aboneliği’ni görmeniz gerekir.

  3. Abonelik adını doğrulayın. Aşağıdaki komut aboneliklerinizi, adlarınızı ve kimliklerinizi kolay okunan bir tablo biçiminde listeler. öğesini arayın Concierge Subscription.

    Get-AzSubscription
    
  4. Etkin aboneliğinizi, Concierge Aboneliği olarak değiştirin.

    $context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
    

Varsayılan kaynak grubunu ayarlama

Şimdi korumalı alanda sizin için oluşturulan kaynak grubunu varsayılan kaynak grubu olarak ayarlamanız gerekiyor. Bu işlemi gerçekleştirmek için önce aşağıdaki komutu çalıştırarak kaynak grubu adını almanız gerekir.

Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault

Bu komutta, önceki komuttan aldığınız kaynak adını kullanın. (Şuna benzer: learn-a73131a1-b618-48b8-af70-21af7ca420c4.) Bu komut, bu alıştırmadaki Azure PowerShell komutlarının geri kalanından bu parametreyi atlamanızı sağlar.

Not

Normalde, şablon dağıtmak için bir PowerShell veya Azure CLI komutu çalıştırdığınızda hedef kaynak grubu adını belirtmeniz gerekir. Önceki komutu çalıştırarak dağıtımımızın bağlamını ayarladık. Set-AzDefault PowerShell komutunu çalıştırarak korumalı alan kaynak grubu adımızı belirttik:

Set-AzDefault -ResourceGroupName {Resource Group Name}

Yerel şablonu dağıtma

Aşağıdaki alıştırmada, yerel makinenizden bir şablon dağıtacaksınız. Önceki bölümde varsayılan kaynak grubunu tanımladığımızdan, burada normalde kendi ortamınızda dağıtım yaparken kullandığınız kaynak grubu adına gerek yoktur.

  1. Başlamak için aşağıdaki şablon kodunun içeriğini kopyalayıp yerel dizinde bulunan bir dosyaya yapıştırın. Örneğin C:\JSON\maintemplate.json kullanın.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "VnetName": {
            "type": "string",
            "defaultValue": "VNet-001",
            "metadata": {
              "description": "Virtual Network Name"
            }
          },
          "CostCenterIO": {
            "type": "string",
            "defaultValue": "12345",
            "metadata": {
              "description": "Cost Center IO number for cross billing"
            }
          },
          "OwnerName": {
            "type": "string",
            "defaultValue": "John Smith",
            "metadata": {
              "description": "Name of the stakeholder responsible for this resource"
            }
          }
        },
        "variables": {},
        "resources": [
            {
                "apiVersion": "2018-10-01",
                "type": "Microsoft.Network/virtualNetworks",
                "name": "[parameters('VnetName')]",
                "location": "[resourceGroup().location]",
                "tags": {
                    "CostCenter": "[parameters('CostCenterIO')]",
                    "Owner": "[parameters('OwnerName')]"
                },  
                "properties": {
                    "addressSpace": {
                        "addressPrefixes": [
                            "10.0.0.0/16"
                        ]
                    },
                    "enableVmProtection": false,
                    "enableDdosProtection": false,
                    "subnets": [
                        {
                            "name": "subnet001",
                            "properties": {
                                "addressPrefix": "10.0.0.0/24"
                            }
                        },
                        {
                            "name": "subnet002",
                            "properties": {
                                "addressPrefix": "10.0.1.0/24"
                            }
                        }
                    ]
                }
            }
        ]
    }
    
  2. Dosyayı yerel olarak kaydettikten sonra PowerShell komutunu kullanarak son ünitede bahsettiğimiz kaynak grubu düzeyinde dağıtabilirsiniz. Yani New-AzResourceGroupDeployment komutunu kullanın.

    $templateFile="C:\JSON\maintemplate.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-"+"$today"
    
    New-AzResourceGroupDeployment `
    -Name $DeploymentName `
    -TemplateFile $templateFile
    

    Tamamlandıktan sonra, bu örneğe benzer sonuçlara sahip olmanız gerekir.

    DeploymentName          : DeployLocalTemplate-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:50:04 p.m.
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              vnetName         String                     VNet-001
                              costCenterIO     String                     12345
                              ownerName        String                     John Smith
    
    Outputs                 :
    DeploymentDebugLogLevel :
    
    

Aynı yerel şablonu parametre değerleriyle dağıtma

Son alıştırmada şablonunuzu parametrelerin varsayılan değerini kullanarak dağıttınız. Yerel ARM şablonu dağıtırken, parametre değerlerini geçirmeniz gerekebilir. Satır içi parametreleri veya bir parametre dosyası kullanabilirsiniz.

Dağıtımınıza satır içi parametre geçirmek için New-AzResourceGroupDeployment cmdlet'ini kullanarak parametre adlarını sağlamanız gerekir. Bir sonraki alıştırmada parametreleri, satır içi parametreler ve parametre dosyası olarak geçireceksiniz.

  1. Son alıştırmayla aynı şablonu kullanarak, gerekli şablon parametrelerinin değerlerini içeren bir karma tablo oluşturur.

    $parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"}
    $templateFile="C:\JSON\maintemplate.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-2-"+"$today"
    
    New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateFile $templateFile `
        -TemplateParameterObject $parameters
    

    Tamamlandıktan sonra aşağıdakine benzer sonuçlar görmeniz gerekir:

    DeploymentName          : DeployLocalTemplate-2-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:51:55 p.m.
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              vnetName         String                     VNet-001
                              costCenterIO     String                     12345
                              ownerName        String                     John Smith
    
    Outputs                 :
    DeploymentDebugLogLevel :
    

    Parametreleri betiğinize satır içi değerler olarak geçirmek yerine parametre değerlerini içeren bir JSON dosyası kullanmak daha kolayınıza gelebilir. Parametre dosyası, yerel dosya veya erişilebilir URI değerine sahip dış/uzak dosya olabilir. Parametre dosyası hakkında daha fazla bilgi için bkz. Resource Manager parametre dosyası oluşturma.

  2. Yerel parametre dosyası geçirmek için aynı komutla birlikte TemplateParameterFile parametresini kullanırız. Ancak bunu yapabilmek için bir parametre dosyası oluşturup kaydetmeniz şarttır.

    1. Visual Studio Code'u Azure Resource Manager Araçları uzantısıyla kullandığımız için yerel olarak kaydettiğiniz ARM şablonunu açabilir ve Parametre dosyasını seç/oluştur... bağlantısını seçebilirsiniz.

    2. Menüden Yeni'yi ve ardından Yalnızca gerekli parametreler'i seçin. Uzantı, açık olan şablonu temel alan bir parametre dosyası oluşturur.

    Visual Studio Code’da parametre dosyası oluşturmaya yönelik seçeneklerin gösterildiği ekran görüntüsü.

  3. parametresiyle TemplateParameterFile aşağıdaki PowerShell komutunu kullanın.

    $parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"}
    $templateFile="C:\JSON\maintemplate.json"
    $TemplateParameterFile= "C:\JSON\maintemplate.parameters.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-3-"+"$today"
    
    New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateFile $templateFile `
        -TemplateParameterFile $TemplateParameterFile
    

    Dağıtımdan sonra sonuçlarınız aşağıdaki örneğe benzer olmalıdır.

    DeploymentName          : DeployLocalTemplate-3-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:54:40 p.m.
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              vnetName         String                     VNet-001
                              costCenterIO     String                     12345
                              ownerName        String                     John Smith
    
    Outputs                 :
    DeploymentDebugLogLevel :
    
    

Dış veya uzak şablonu dağıtma

Bazı durumlarda yerel makineniz yerine dış veya uzak konumda bulunan bir şablonu dağıtmanız gerekir. Şablonları bir kaynak denetimi deposunda (GitHub gibi) saklayabilirsiniz. İsterseniz kuruluşunuzda paylaşılan erişim sağlamak için bir Azure depolama hesabı kullanabilirsiniz.

  1. Dış şablon kullanmak için TemplateUri parametresini kullanın.

    Bir sonraki alıştırmada GitHub deposunda bulunan bir ARM şablonunu dağıtacaksınız. Depo genel erişime açık olduğundan paylaşılan erişim imzası (SAS) belirteci gerektiren bir şablonu dağıtma konusunda endişelenmenize gerek yoktur. Özel veya güvenli bir uzak konum kullanma hakkındaki ayrıntılar için bkz. SAS belirteciyle özel şablon dağıtma.

    Bu alıştırmada kullanılan şablonun URI'si: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Korumalı alan ortamınıza temel bir depolama hesabı dağıtan kısa bir şablon.

  2. PowerShell komutu, yerel şablona yönelik komutla tamamen aynıdır. Tek fark, -TemplateUri parametresi yerine -TemplateFile parametresi olmasıdır.

    Belirtilen korumalı alanda dağıtım gerçekleştirmek için aşağıdaki kodu kullanın:

    $parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"}
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-4-"+"$today"
    
    New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
    

    Sonuçlar aşağıdaki ekran görüntüsüne benzer. Şablonun konumuna dair bilgiler görüntülenecektir.

    DeploymentName          : DeployLocalTemplate-4-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:56:55 p.m.
    Mode                    : Incremental
    TemplateLink            :
                              Uri            :
                              https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
                              ContentVersion : 1.0.0.0
    
    Parameters              :
                              Name                  Type                       Value
                              ====================  =========================  ==========
                              storageAccountType    String                     Standard_LRS
                              location              String                     westus
    
    Outputs                 :
                              Name                  Type                       Value
                              ====================  =========================  ==========
                              storageAccountName    String                     storepgxosadmbq77e
    
    DeploymentDebugLogLevel :
    
    

Not

Bu bölüm, Windows 10 üzerinde Windows Linux Subsystem (WSL2) içinde Azure CLI komutları kullanılarak yazılmıştır. Komutlar PowerShell, CMD veya Bash kabuğundaki Azure CLI ortamında da aynı olacaktır. Ancak değişkenlerin ele alınma yöntemi farklı olabilir.

Azure'da oturum açma

  1. Visual Studio Code’daki terminalden, Azure’da oturum açmak için şu komutu çalıştırın. Bu komutun çalıştırılması, hesabınızda oturum açmanıza olanak tanıyan bir tarayıcı açar.

    az login
    
  2. Oturum açtıktan sonra, terminalde bu hesapla ilişkilendirilmiş aboneliklerin JSON listesini görürsünüz. Korumalı alanı etkinleştirdiyseniz bu listede Concierge Aboneliği’ni görmeniz gerekir.

  3. Abonelik kimliğini alın. Aşağıdaki komut, aboneliklerinizi ve bunların kimliklerini listeler. Abonelik kimliği, üçüncü sütundur. Concierge Subscription öğesini bulun ve üçüncü sütunu kopyalayın. gibi cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0görünmelidir.

    az account list -o table
    
  4. Etkin aboneliğinizi, Concierge Aboneliği olarak değiştirin. {Your subscription ID} yerine bir önceki komutla elde ettiğiniz Concierge Aboneliği kimliğini yazmayı unutmayın.

    az account set -s {Your subscription ID}
    

Varsayılan kaynak grubunu ayarlama

Şimdi korumalı alanda sizin için oluşturulan kaynak grubunu varsayılan kaynak grubu olarak ayarlamanız gerekiyor. Bu işlemi gerçekleştirmek için öncelikle aşağıdaki komutu kullanarak kaynak grubu adını almanız gerekir:

az group list -o table

Bu komutta, önceki komuttan aldığınız kaynak adını kullanın. (Şuna benzer: learn-a73131a1-b618-48b8-af70-21af7ca420c4.) Bu komut, bu alıştırmadaki Azure CLI komutlarının geri kalanından bu parametreyi atlamanızı sağlar.

Not

Normalde Azure CLI komutu kullanarak şablon dağıttığınızda hedef kaynak grubu adını belirtmeniz gerekir. Bu modüldeki alıştırmada, dağıtımımızın bağlamını ayarlayarak bu gereksinimi atlıyoruz. az configure Azure CLI komutunu kullanarak sonraki adımda korumalı alan kaynak grubu adımızı belirteceğiz.

az configure --defaults group={Resource Group Name}

Yerel şablonu dağıtma

Aşağıdaki alıştırmada, yerel makinenizden bir şablon dağıtacaksınız. Önceki bölümde varsayılan kaynak grubunu tanımladığımızdan, burada normalde kendi ortamınızda dağıtım yaparken kullandığınız kaynak grubu adına gerek yoktur.

  1. Başlamak için aşağıdaki şablon kodunun içeriğini kopyalayıp yerel dizinde bulunan bir dosyaya yapıştırın. Örneğin C:\JSON\maintemplate.json veya /mnt/c/Users/you/json/maintemplate.json kullanın.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "VnetName": {
            "type": "string",
            "defaultValue": "VNet-001",
            "metadata": {
              "description": "Virtual Network Name"
            }
          },
          "CostCenterIO": {
            "type": "string",
            "defaultValue": "12345",
            "metadata": {
              "description": "Cost Center IO number for cross billing"
            }
          },
          "OwnerName": {
            "type": "string",
            "defaultValue": "John Smith",
            "metadata": {
              "description": "Name of the stakeholder responsible for this resource"
            }
          }
        },
        "variables": {},
        "resources": [
            {
                "apiVersion": "2018-10-01",
                "type": "Microsoft.Network/virtualNetworks",
                "name": "[parameters('VnetName')]",
                "location": "[resourceGroup().location]",
                "tags": {
                    "CostCenter": "[parameters('CostCenterIO')]",
                    "Owner": "[parameters('OwnerName')]"
                },  
                "properties": {
                    "addressSpace": {
                        "addressPrefixes": [
                            "10.0.0.0/16"
                        ]
                    },
                    "enableVmProtection": false,
                    "enableDdosProtection": false,
                    "subnets": [
                        {
                            "name": "subnet001",
                            "properties": {
                                "addressPrefix": "10.0.0.0/24"
                            }
                        },
                        {
                            "name": "subnet002",
                            "properties": {
                                "addressPrefix": "10.0.1.0/24"
                            }
                        }
                    ]
                }
            }
        ]
    }
    
  2. Dosyayı yerel olarak kaydettikten sonra Azure CLI komutunu kullanarak son ünitede bahsettiğimiz kaynak grubu düzeyinde dağıtabilirsiniz. Kullanmanız gereken komut: az deployment group create.

    Not

    Aşağıdaki örnekte şablon dosyası, Windows Linux Subsystem (WSL2) içindeki ana sürücünün json klasöründedir. Komutunuzu, tercih ettiğiniz kabuğa göre ayarlayın.

    templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-"$today
    
    az deployment group create \
      --name $deploymentname \
      --template-file $templateFile
    

    Tamamlandıktan sonra, sonuçta elde edilen çıkış aşağıdaki örneğe benzer olmalıdır. Dağıtımın başarılı olduğundan emin olmak için "provisioningState": "Succeeded" satırını arayın.

    {
      "id": "/subscriptions/082d0d73-f197-45c5-9884-581c8f0ce102/resourceGroups/learn-e692001a-b605-48d4-97bd-7c05669db9dd/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2020-08-19",
      "location": null,
      "name": "DeployLocalTemplate-2020-08-19",
      "properties": {
        "correlationId": "6ad759d5-cda5-4a71-a772-05a03d983c6f",
        "debugSetting": null,
        "dependencies": [],
        "duration": "PT8.9060761S",
        "error": null,
        "mode": "Incremental",
        "onErrorDeployment": null,
        "outputResources": [
          {
            "id": "/subscriptions/082d0d73-f197-45c5-9884-581c8f0ce102/resourceGroups/    learn-e692001a-b605-48d4-97bd-7c05669db9dd/providers/Microsoft.Network/virtualNetworks/VNet-001",
            "resourceGroup": "learn-e692001a-b605-48d4-97bd-7c05669db9dd"
          }
        ],
        "outputs": null,
        "parameters": {
          "costCenterIO": {
            "type": "String",
            "value": "12345"
          },
          "ownerName": {
            "type": "String",
            "value": "John Smith"
          },
          "vnetName": {
            "type": "String",
            "value": "VNet-001"
          }
        },
        "parametersLink": null,
        "providers": [
          {
            "id": null,
            "namespace": "Microsoft.Network",
            "registrationPolicy": null,
            "registrationState": null,
            "resourceTypes": [
              {
                "aliases": null,
                "apiVersions": null,
                "capabilities": null,
                "locations": [
                  "westus"
                ],
                "properties": null,
                "resourceType": "virtualNetworks"
              }
            ]
          }
        ],
        "provisioningState": "Succeeded",
        "templateHash": "11553431046699679955",
        "templateLink": null,
        "timestamp": "2020-08-19T14:47:06.403362+00:00",
        "validatedResources": null
      },
      "resourceGroup": "learn-e692001a-b605-48d4-97bd-7c05669db9dd",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }
    

Aynı yerel şablonu parametre değerleriyle dağıtma

Son alıştırmada şablonunuzu parametrelerin varsayılan değerini kullanarak dağıttınız. Yerel ARM şablonu dağıtırken, parametre değerlerini geçirmeniz gerekebilir. Satır içi parametreleri veya bir parametre dosyası kullanabilirsiniz.

Sonraki alıştırmada dağıtımınıza satır içi parametreler geçireceksiniz. Satır içi parametreler veya parametre dosyası kullanıyor olun, komutunu kullanarak parametrelerin az deployment group create adlarını sağlamanız gerekir.

  1. Son alıştırmayla aynı şablonu kullanarak, gerekli şablon parametreleri için JSON dize biçiminde parametreleri içeren bir değişken oluşturun.

    Not

    Aşağıdaki örnekte şablon dosyası, Windows Linux Subsystem (WSL2) içindeki json klasöründedir. Komutunuzu, tercih ettiğiniz kabuğa ve işletim sistemine göre ayarlayın.

    parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}"
    templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-2-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-file $templateFile \
    --parameters "$parameters"
    

    Tamamlandıktan sonra, aşağıdaki örneğe benzer sonuçlarınız olması gerekir. Komutun başarılı olduğundan emin olmak için bölümüne ve "provisioningState" değerine bakın"parameters".

      {- Finished ..
        "id": "/subscriptions/082d0d73-f197-45c5-9884-581c8f0ce102/resourceGroups/learn-e692001a-b605-48d4-97bd-7c05669db9dd/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2-2020-08-19",      
        "location": null,
        "name": "DeployLocalTemplate-2-2020-08-19",
        "properties": {
          "correlationId": "edb2992e-08be-4ec2-940e-df23b1c09453",
          "debugSetting": null,
          "dependencies": [],
          "duration": "PT4.6990388S",
          "error": null,
          "mode": "Incremental",
          "onErrorDeployment": null,
          "outputResources": [
            {
              "id": "/subscriptions/082d0d73-f197-45c5-9884-581c8f0ce102/resourceGroups/learn-e692001a-b605-48d4-97bd-7c05669db9dd/providers/Microsoft.Network/virtualNetworks/VNet-001",
              "resourceGroup": "learn-e692001a-b605-48d4-97bd-7c05669db9dd"
            }
          ],
          "outputs": null,
          "parameters": {
            "costCenterIO": {
              "type": "String",
              "value": "12345"
            },
            "ownerName": {
              "type": "String",
              "value": "John Smith"
            },
            "vnetName": {
              "type": "String",
              "value": "VNet-001"
            }
          },
          "parametersLink": null,
          "providers": [
            {
              "id": null,
              "namespace": "Microsoft.Network",
              "registrationPolicy": null,
              "registrationState": null,
              "resourceTypes": [
                {
                  "aliases": null,
                  "apiVersions": null,
                  "capabilities": null,
                  "locations": [
                    "westus"
                  ],
                  "properties": null,
                  "resourceType": "virtualNetworks"
                }
              ]
            }
          ],
          "provisioningState": "Succeeded",
          "templateHash": "11553431046699679955",
          "templateLink": null,
          "timestamp": "2020-08-19T16:40:20.249786+00:00",
          "validatedResources": null
        },
        "resourceGroup": "learn-e692001a-b605-48d4-97bd-7c05669db9dd",
        "tags": null,
        "type": "Microsoft.Resources/deployments"
      }
    

    Parametreleri betiğinize satır içi değerler olarak geçirmek yerine parametre değerlerini içeren bir JSON dosyası kullanmak daha kolayınıza gelebilir. Parametre dosyası, yerel dosya veya erişilebilir URI değerine sahip dış/uzak dosya olabilir. Parametre dosyası hakkında daha fazla bilgi için bkz. Resource Manager parametre dosyası oluşturma.

  2. Yerel parametre dosyası geçirmek için aynı komutla birlikte --parameters parametresini kullanırız. Ancak bunu yapabilmek için bir parametre dosyası oluşturup kaydetmeniz şarttır.

    1. Visual Studio Code'u Azure Resource Manager Araçları uzantısıyla birlikte kullandığımız için, yerel olarak kaydettiğiniz ARM şablonunu açabilir ve Tam doğrulamayı etkinleştirmek için Parametre dosyası seçin veya oluşturun bağlantısını seçebilirsiniz.

    2. Menüden Yeni’yi seçin. Uzantı, açık olan şablonu temel alan bir parametre dosyası oluşturur.

    Visual Studio Code’da parametre dosyası oluşturmaya yönelik seçeneklerin gösterildiği ekran görüntüsü.

  3. Aşağıdaki Azure CLI komutunu --parameters parametresiyle kullanın.

    Not

    Aşağıdaki örnekte şablon dosyası, Windows Linux Subsystem (WSL2) içindeki json klasöründedir. Komutu, tercih ettiğiniz kabuğa ve işletim sistemine göre ayarlayın.

    templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json
    templateparameterfile=/mnt/c/Users/<UserName>/json/maintemplate.parameters.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-3-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-file $templateFile \
    --parameters $templateparameterfile
    

    Dağıtımdan sonra, sonuç houdl'unuz aşağıdaki örneğe benzer şekilde görünür.

      {- Finished ..
        "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19",
        "location": null,
        "name": "DeployLocalTemplate-3-2020-08-19",
        "properties": {
          "correlationId": "2a668f55-d8d0-48ac-862f-7170b48c02b6",
          "debugSetting": null,
          "dependencies": [],
          "duration": "PT4.2058912S",
          "error": null,
          "mode": "Incremental",
          "onErrorDeployment": null,
          "outputResources": [
            {
              "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Network/virtualNetworks/VNet-001",
              "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b"
            }
          ],
          "outputs": null,
          "parameters": {
            "costCenterIO": {
              "type": "String",
              "value": "12345"
            },
            "ownerName": {
              "type": "String",
              "value": "John Smith"
            },
            "vnetName": {
              "type": "String",
              "value": "VNet-001"
            }
          },
          "parametersLink": null,
          "providers": [
            {
              "id": null,
              "namespace": "Microsoft.Network",
              "registrationPolicy": null,
              "registrationState": null,
              "resourceTypes": [
                {
                  "aliases": null,
                  "apiVersions": null,
                  "capabilities": null,
                  "locations": [
                    "westus"
                  ],
                  "properties": null,
                  "resourceType": "virtualNetworks"
                }
              ]
            }
          ],
          "provisioningState": "Succeeded",
          "templateHash": "11553431046699679955",
          "templateLink": null,
          "timestamp": "2020-08-19T20:42:44.069215+00:00",
          "validatedResources": null
        },
        "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b",
        "tags": null,
        "type": "Microsoft.Resources/deployments"
      }
    

Dış veya uzak şablonu dağıtma

Bazı durumlarda yerel makineniz yerine dış veya uzak konumda bulunan bir şablonu dağıtmanız gerekir. Şablonları bir kaynak denetimi deposunda (GitHub gibi) saklayabilirsiniz. İsterseniz kuruluşunuzda paylaşılan erişim sağlamak için bir Azure depolama hesabı kullanabilirsiniz.

  1. Dış şablon kullanmak için --template-uri parametresini kullanın.

Bu alıştırmada, GitHub deposundan bir ARM şablonu dağıtacaksınız. Depo genel erişime açık olduğundan paylaşılan erişim imzası (SAS) belirteci gerektiren bir şablonu dağıtma konusunda endişelenmenize gerek yoktur. Özel veya güvenli bir uzak konum kullanma hakkındaki ayrıntılar için bkz. SAS belirteciyle özel şablon dağıtma.

Bu alıştırmada kullanılan şablonun URI'si: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Korumalı alan ortamınıza temel bir depolama hesabı dağıtan kısa bir şablon.

  1. Azure CLI komutu, yerel şablona yönelik komutla tamamen aynıdır. Tek fark, --template-uri parametresi yerine --template-file parametresi olmasıdır.

  2. Belirtilen korumalı alanda dağıtım gerçekleştirmek için aşağıdaki kodu kullanın:

    parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}"
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-4-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
    

    Sonuçlar aşağıdaki kod bloğuna benzer. "templateLink" bölümündeki şablonun konumuna dair bilgiler görüntülenecektir. Ayrıca bölümünde dağıtımın başarılı "provisioningState" olup olmadığını da gösterirler.

    {- Finished ..
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-4-2020-08-19",
      "location": null,
      "name": "DeployLocalTemplate-4-2020-08-19",
      "properties": {
        "correlationId": "2ccc49de-9d46-4375-a25d-19ec10daf88b",
        "debugSetting": null,
        "dependencies": [],
        "duration": "PT24.3286124S",
        "error": null,
        "mode": "Incremental",
        "onErrorDeployment": null,
        "outputResources": [
          {
            "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4",
            "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b"
          }
        ],
        "outputs": {
          "storageAccountName": {
            "type": "String",
            "value": "store7zk7eyqew54l4"
          }
        },
        "parameters": {
          "location": {
            "type": "String",
            "value": "westus"
          },
          "storageAccountType": {
            "type": "String",
            "value": "Standard_LRS"
          }
        },
        "parametersLink": null,
        "providers": [
          {
            "id": null,
            "namespace": "Microsoft.Storage",
            "registrationPolicy": null,
            "registrationState": null,
            "resourceTypes": [
              {
                "aliases": null,
                "apiVersions": null,
                "capabilities": null,
                "locations": [
                  "westus"
                ],
                "properties": null,
                "resourceType": "storageAccounts"
              }
            ]
          }
        ],
        "provisioningState": "Succeeded",
        "templateHash": "12600309984865991765",
        "templateLink": {
          "contentVersion": "1.0.0.0",
          "id": null,
          "relativePath": null,
          "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json"
        },
        "timestamp": "2020-08-19T20:53:36.759312+00:00",
        "validatedResources": null
      },
      "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }