Alıştırma - Bağlantılı ve iç içe yerleştirilmiş ARM şablonlarını 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, sağlanan korumalı alan ortamında iki bağlantılı şablon içeren bir şablon dağıtacaksınız.

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.

Verilen Azure korumalı alan aboneliğiyle test 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 kimliğini alın. Aşağıdaki komut, aboneliklerinizi ve bunların kimliklerini kolay okunan bir tablo biçiminde listeler. Abonelik kimliği, ikinci sütundur. Concierge Subscription öğesini bulun ve ikinci sütunu kopyalayın. şuna aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4ebenzer.

    Get-AzSubscription
    
  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.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

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:

Get-AzResourceGroup

Bu komutta, önceki komuttan aldığınız kaynak adını kullanın. şuna learn-a73131a1-b618-48b8-af70-21af7ca420c4benzer. Bu komut, bu alıştırmadaki Azure PowerShell komutlarının geri kalanında bu parametreyi atlamanıza olanak verir.

Not

Normalde PowerShell veya 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. Set-AzDefault PowerShell komutunu kullanarak sonraki adımda korumalı alan kaynak grubu adımızı belirteceğiz.

Set-AzDefault -ResourceGroupName {Resource Group Name}

Bağlantılı şablonu dağıtma

Bu alıştırmada, iki bağlantılı şablon içeren bir şablonu gözden geçirip dağıtacağız.

  1. ARM şablonunuza bağlı bir şablon eklemek için bir Microsoft.Resources/deployments kaynak ve şablonun templateLink konumuyla yapılandırılan özelliği ekleyin.

  2. Aşağıdaki örnek şablonda, iki değişkenin GitHub deposunda bulunan uzak veya dış şablonları tanımladığına dikkat edin.

    Şablonu gözden geçirin ve bağlı şablonların "type": "Microsoft.Resources/deployments" nerede ve nasıl dağıtılacağını tanımlayan bölümleri not edin.

    İlk bağlantılı şablon bir depolama hesabı dağıtır. Ana parametreleri kullanır ve depolama şablonunu dağıtır.

    İkinci bağlantılı şablon, depolama dağıtımına bağımlı olacak şekilde yapılandırılmıştır ve bir sanal ağ şablonu dağıtır.

    {
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "string",
            "defaultValue": "linkeddemo001"
        }
    },
    "variables": {
        "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json",
        "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json"
    },
    "resources": [
        {
            "name": "storage",
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-10-01",
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                    "uri": "[variables('linked-template')]",
                    "contentVersion": "1.0.0.0"
                },
                "parameters": {
                    "location": { "value": "[resourceGroup().location]" }
                }
            }
        },
        {
            "name": "identity",
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-10-01",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/deployments','storage')]"
            ],
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                    "uri": "[variables('linked-template-2')]",
                    "contentVersion": "1.0.0.0"
                }
            }
        }
    ],
    "outputs": {}
    }
    
  3. Önceki şablonun içeriğini yerel dizindeki bir dosyaya kopyalayıp yapıştırın. Örneğin C:\JSON\linkedtemplate.json kullanın.

  4. Dosyayı yerel olarak kaydettikten sonra, son ünitede bahsettiğimiz kaynak grubu düzeyinde dağıtmak için aşağıdaki PowerShell komutunu kullanın. New-AzResourceGroupDeployment komutunu kullanın.

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

    Tamamlandıktan sonra aşağıdaki exmaple gibi sonuçlara sahip olmanız gerekir.

    Bağlantılı şablonu dağıtma işleminin sonucu.

  5. Sonuçları doğrulayın.

    1. Azure portala gidin ve korumalı alan aboneliğinizde olduğunuzdan emin olun. Bunu yapmak için, sayfanın sağ üst köşesinde avatarınızı seçin. Dizini değiştir’i seçin. Listede Microsoft Learn Korumalı Alan dizinini seçin.

    2. Soldaki panelde Kaynak grupları’nı seçin.

    3. [sandbox resource group name] öğesini seçin.

    4. Genel Bakış alanında dağıtımın başarılı olduğunu görürsünüz. Dağıtımın ayrıntılarını görmek için 3 Başarılı seçeneğini belirleyin. (Önceki ünitede yer alan alıştırmaları tamamlayıp tamamlamadığınıza bağlı olarak daha fazla dağıtım olabilir.)

    Bir dağıtımın listelendiği ve bir başarılı durumun gösterildiği, dağıtımlar için Azure portal arabirimi.

    Tek bir şablon dağıtmanıza rağmen portalın dağıtım bölmesinde üç şablonun listelendiğine dikkat edin. Bu üç dağıtım, ana şablonu ve iki bağlantılı şablonu ifade eder.

    Bir kaynağın listelenmediği belirli dağıtım için Azure portal arabirimi.

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. şuna aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4ebenzer.

    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 grubunun adını kullanın. (Şuna benzer: learn-a73131a1-b618-48b8-af70-21af7ca420c4.) Bu varsayılan ayarın ayarlanması, bu alıştırmadaki Azure CLI komutlarının geri kalanından bu parametreyi atlamanıza olanak tanır.

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}

Bağlantılı şablonu dağıtma

Bu alıştırmada, iki bağlantılı şablon içeren bir şablonu gözden geçirip dağıtacağız.

  1. ARM şablonunuza bağlı bir şablon eklemek için bir Microsoft.Resources/deployments kaynak ve şablonun templateLink konumuyla yapılandırılan özelliği ekleyin.

  2. Aşağıdaki örnek şablonda, iki değişkenin GitHub deposunda bulunan uzak veya dış şablonları tanımladığına dikkat edin.

    Şablonu gözden geçirin ve bağlı şablonların "type": "Microsoft.Resources/deployments" nerede ve nasıl dağıtılacağını tanımlayan bölümleri not edin.

    İlk bağlantılı şablon bir depolama hesabı dağıtır. Ana parametreleri kullanır ve depolama şablonunu dağıtır.

    İkinci bağlantılı şablon, depolama dağıtımına bağımlı olacak şekilde yapılandırılmıştır ve bir sanal ağ şablonu dağıtır.

    {
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "string",
            "defaultValue": "linkeddemo001"
        }
    },
    "variables": {
        "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json",
        "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json"
    },
    "resources": [
      {
          "name": "storage",
          "type": "Microsoft.Resources/deployments",
          "apiVersion": "2019-10-01",
          "properties": {
              "mode": "Incremental",
              "templateLink": {
                  "uri": "[variables('linked-template')]",
                  "contentVersion": "1.0.0.0"
              },
              "parameters": {
                  "location": { "value": "[resourceGroup().location]" }
              }
          }
      },
      {
          "name": "identity",
          "type": "Microsoft.Resources/deployments",
          "apiVersion": "2019-10-01",
          "dependsOn": [
              "[resourceId('Microsoft.Resources/deployments','storage')]"
          ],
          "properties": {
              "mode": "Incremental",
              "templateLink": {
                  "uri": "[variables('linked-template-2')]",
                  "contentVersion": "1.0.0.0"
              }
          }
      }
    ],
    "outputs": {}
    }
    
  3. Önceki şablonun içeriğini yerel dizindeki bir dosyaya kopyalayıp yapıştırın. Örneğin C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json kullanın.

  4. Bu dosyayı yerel olarak kaydettikten sonra, aşağıdaki Azure CLI komutunu kullanarak kaynak grubu düzeyinde dağıtın. Kullanmanız gereken komut: az deployment group create.

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

    Tamamlandıktan sonra, aşağıdaki örneğe benzer sonuçlarınız olması gerekir. Dağıtımın başarılı olduğundan emin olmak için "provisioningState" değerini denetleyin.

    {- Finished ..
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19",
      "location": null,
      "name": "DeployLocalTemplate-3-2020-08-19",
      "properties": {
        "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
        "debugSetting": null,
        "dependencies": [
          {
            "dependsOn": [
              {
                "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/storage",
                "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
                "resourceName": "storage",
                "resourceType": "Microsoft.Resources/deployments"
              }
            ],
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/identity",
            "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
            "resourceName": "identity",
            "resourceType": "Microsoft.Resources/deployments"
          }
        ],
        "duration": "PT16.4639167S",
        "error": null,
        "mode": "Incremental",
        "onErrorDeployment": null,
        "outputResources": [
          {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Network/virtualNetworks/vnet-001",
            "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f"
          },
          {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4",
            "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f"
          }
        ],
        "outputs": {},
        "parameters": {
          "name": {
            "type": "String",
            "value": "linkeddemo001"
          }
        },
        "parametersLink": null,
        "providers": [
          {
            "id": null,
            "namespace": "Microsoft.Resources",
            "registrationPolicy": null,
            "registrationState": null,
            "resourceTypes": [
              {
                "aliases": null,
                "apiVersions": null,
                "capabilities": null,
                "locations": [
                  null
                ],
                "properties": null,
                "resourceType": "deployments"
              }
            ]
          }
        ],
        "provisioningState": "Succeeded",
        "templateHash": "12700491000282730217",
        "templateLink": null,
        "timestamp": "2020-08-19T21:07:18.729310+00:00",
        "validatedResources": null
      },
      "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }
    
  5. Sonuçları doğrulayın.

    1. Azure portala gidin ve korumalı alan aboneliğinizde olduğunuzdan emin olun. Bunu yapmak için, sayfanın sağ üst köşesinde avatarınızı seçin. Dizini değiştir’i seçin. Listede Microsoft Learn Korumalı Alan dizinini seçin.

    2. Soldaki panelde Kaynak grupları’nı seçin.

    3. [sandbox resource group name] öğesini seçin.

    4. Genel Bakış alanında dağıtımın başarılı olduğunu görürsünüz. Dağıtımın ayrıntılarını görmek için 3 Başarılı seçeneğini belirleyin. (Önceki ünitede yer alan alıştırmaları tamamlayıp tamamlamadığınıza bağlı olarak daha fazla dağıtım olabilir.)

    Bir dağıtımın listelendiği ve bir başarılı durumun gösterildiği, dağıtımlar için Azure portal arabirimi.

    Tek bir şablon dağıtmanıza rağmen portalın dağıtım bölmesinde üç şablonun listelendiğine dikkat edin. Bu üç dağıtım, ana şablonu ve iki bağlantılı şablonu ifade eder.

    Bir kaynağın listelenmediği belirli dağıtım için Azure portal arabirimi.