Latihan - Menyebarkan templat ARM yang ditautkan dan ditumpuk

Selesai

Catatan

Saat Anda pertama kali mengaktifkan kotak pasir dan menerima persyaratan, akun Microsoft Anda dikaitkan dengan direktori Azure baru bernama Microsoft Learn Sandbox. Anda ditambahkan ke langganan khusus bernama Langganan Concierge.

Di sini, Anda menyebarkan templat yang menyertakan dua templat tertaut di lingkungan kotak pasir yang disediakan.

Latihan ini menggunakan Azure Resource Manager Tools untuk Visual Studio Code. Pastikan untuk menginstal ekstensi ini di Visual Studio Code.

Menyiapkan lingkungan pengujian Anda dengan langganan kotak pasir Azure yang disediakan

Untuk melakukan setiap penyebaran di pelajaran ini, Anda harus masuk ke akun Azure Anda dari terminal Visual Studio Code.

Pastikan Anda masuk ke akun yang sama yang mengaktifkan kotak pasir.

Masuk ke Azure

  1. Dari terminal di Visual Studio Code, jalankan perintah berikut untuk masuk ke Azure. Menjalankan perintah ini membuka browser yang memungkinkan Anda masuk ke akun Anda.

    Connect-AzAccount
    
  2. Setelah masuk, Anda akan melihat daftar langganan yang terkait dengan akun ini di terminal. Jika Anda mengaktifkan kotak pasir, Langganan Concierge harus ada dalam daftar ini.

  3. Dapatkan ID langganan. Perintah berikut mencantumkan langganan Anda dan ID mereka dalam format tabel yang mudah dibaca. ID langganan adalah kolom kedua. Cari Concierge Subscription dan salin kolom kedua. Ini terlihat seperti cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    Get-AzSubscription
    
  4. Ubah langganan aktif Anda menjadi Langganan Concierge. Pastikan untuk mengganti {Your subscription ID} dengan ID Langganan Concierge yang Anda dapatkan di perintah terakhir.

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

Menetapkan grup sumber daya default

Anda sekarang perlu mengatur grup sumber daya yang dibuat untuk Anda di kotak pasir sebagai grup sumber daya default. Untuk melakukan operasi tersebut, Pertama-tama Anda harus mendapatkan nama grup sumber daya dengan menggunakan perintah berikut:

Get-AzResourceGroup

Dalam perintah ini, gunakan nama sumber daya yang Anda dapatkan dari perintah sebelumnya. Ini terlihat seperti learn-a73131a1-b618-48b8-af70-21af7ca420c4. Perintah ini memungkinkan Anda menghilangkan parameter tersebut dari sisa perintah Azure PowerShell dalam latihan ini.

Catatan

Biasanya, saat Anda menggunakan perintah Azure PowerShell atau Azure CLI untuk menyebarkan template, Anda perlu menentukan nama grup sumber daya target. Dalam latihan dalam modul ini, kami melewati persyaratan ini dengan menetapkan konteks penyebaran kami. Kami menentukan nama grup sumber daya kotak pasir kami di langkah berikutnya dengan menggunakan perintah PowerShell Set-AzDefault.

Set-AzDefault -ResourceGroupName {Resource Group Name}

Menyebarkan templat tertaut

Dalam latihan ini, kami meninjau dan menyebarkan templat yang menyertakan dua templat tertaut.

  1. Untuk menambahkan templat tertaut ke templat ARM Anda, tambahkan Microsoft.Resources/deploymentssumber daya dan templateLink properti yang dikonfigurasikan dengan lokasi templat.

  2. Dalam templat sampel berikut, perhatikan bahwa dua variabel menentukan templat jarak jauh atau eksternal yang terletak di repositori GitHub.

    Tinjau templat dan catat "type": "Microsoft.Resources/deployments" bagian yang menentukan di mana dan bagaimana templat tertaut disebarkan.

    Templat pertama yang ditautkan menyebarkan akun penyimpanan. Ini mengonsumsi parameter induk dan menyebarkan template penyimpanan.

    Template tertaut kedua dikonfigurasikan untuk bergantung pada penyebaran penyimpanan, dan untuk menyebarkan templat jaringan virtual.

    {
    "$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. Salin dan tempel konten templat sebelumnya ke dalam file di direktori lokal. Gunakan C:\JSON\linkedtemplate.json, misalnya.

  4. Setelah Anda menyimpan file secara lokal, gunakan perintah PowerShell berikut untuk menyebarkannya di tingkat grup sumber daya yang kita bicarakan di unit terakhir. Yaitu, gunakan New-AzResourceGroupDeployment.

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

    Setelah selesai, Anda harus memiliki hasil seperti eksmaple berikut.

    Hasil dari penyebaran templat yang ditautkan.

  5. Validasi hasilnya.

    1. Buka portal Microsoft Azure dan pastikan Anda berada di langganan kotak pasir. Untuk melakukannya, pilih avatar Anda di sudut kanan atas halaman. Lalu pilih Beralih direktori. Dalam daftar, pilih direktori Microsoft Learn Sandbox.

    2. Di panel sebelah kiri, pilih Grup sumber daya.

    3. Pilih [nama grup sumber daya kotak pasir].

    4. Di area Gambaran Umum, Anda melihat bahwa penyebaran berhasil. Pilih 3 Berhasil untuk melihat detail penyebaran. (Mungkin ada penyebaran yang lebih lengkap, tergantung pada apakah Anda melakukan latihan pelajaran sebelumnya.)

    Antarmuka portal Microsoft Azure untuk penyebaran dengan satu penyebaran tercantum dan status berhasil.

    Perhatikan bahwa Anda menggunakan satu templat, tetapi ada tiga templat tercantum di panel penyebaran portal. Ketiga penyebaran tersebut sesuai dengan templat utama dan dua templat yang ditautkan.

    Antarmuka portal Microsoft Azure untuk penyebaran tertentu tanpa sumber daya yang tercantum.

Masuk ke Azure

  1. Dari terminal di Visual Studio Code, jalankan perintah berikut untuk masuk ke Azure. Menjalankan perintah ini membuka browser yang memungkinkan Anda masuk ke akun Anda.

    az login
    
  2. Setelah masuk, Anda akan melihat daftar JSON langganan yang terkait dengan akun ini di terminal. Jika Anda mengaktifkan kotak pasir, Langganan Concierge harus ada dalam daftar ini.

  3. Dapatkan ID langganan. Perintah berikut mencantumkan langganan Anda dan ID mereka. ID langganan adalah kolom kedua. Cari Concierge Subscription dan salin kolom kedua. Ini terlihat seperti cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    az account list -o table
    
  4. Ubah langganan aktif Anda menjadi Langganan Concierge. Pastikan untuk mengganti {Your subscription ID} dengan ID Langganan Concierge yang Anda dapatkan di perintah terakhir.

    az account set -s {Your subscription ID}
    

Menetapkan grup sumber daya default

Anda sekarang perlu mengatur grup sumber daya yang dibuat untuk Anda di kotak pasir sebagai grup sumber daya default. Untuk melakukan operasi tersebut, Pertama-tama Anda harus mendapatkan nama grup sumber daya dengan menggunakan perintah berikut:

az group list -o table

Dalam perintah ini, gunakan nama grup sumber daya yang Anda dapatkan dari perintah sebelumnya. (Ini terlihat seperti learn-a73131a1-b618-48b8-af70-21af7ca420c4.) Mengatur default ini memungkinkan Anda untuk menghilangkan parameter tersebut dari perintah Azure CLI lainnya dalam latihan ini.

Catatan

Biasanya, saat Anda menggunakan perintah Azure CLI untuk menyebarkan template, Anda perlu menentukan nama grup sumber daya target. Dalam latihan dalam modul ini, kami melewati persyaratan ini dengan menetapkan konteks penyebaran kami. Kami menentukan nama grup sumber daya kotak pasir kami di langkah berikutnya dengan menggunakan perintah az configure Azure CLI.

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

Menyebarkan templat tertaut

Dalam latihan ini, kami meninjau dan menyebarkan templat yang menyertakan dua templat tertaut.

  1. Untuk menambahkan templat tertaut ke templat ARM Anda, tambahkan Microsoft.Resources/deploymentssumber daya dan templateLink properti yang dikonfigurasikan dengan lokasi templat.

  2. Dalam templat sampel berikut, perhatikan bahwa dua variabel menentukan templat jarak jauh atau eksternal yang terletak di repositori GitHub.

    Tinjau templat dan catat "type": "Microsoft.Resources/deployments" bagian yang menentukan di mana dan bagaimana templat tertaut disebarkan.

    Templat pertama yang ditautkan menyebarkan akun penyimpanan. Ini mengonsumsi parameter induk dan menyebarkan template penyimpanan.

    Template tertaut kedua dikonfigurasikan untuk bergantung pada penyebaran penyimpanan, dan untuk menyebarkan templat jaringan virtual.

    {
    "$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. Salin dan tempel konten templat sebelumnya ke dalam file di direktori lokal. Gunakan C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json, misalnya.

  4. Setelah Anda menyimpan file tersebut secara lokal, sebarkan di tingkat grup sumber daya dengan menggunakan perintah Azure CLI berikut. Yakni, gunakan buat grup penyebaran az.

    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
    

    Setelah selesai, Anda harus memiliki hasil seperti contoh berikut. Periksa "provisioningState" nilai untuk memastikan bahwa penyebaran berhasil.

    {- 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": "f127f689-badf-4063-ad55-dff549e63e48",
        "debugSetting": null,
        "dependencies": [
          {
            "dependsOn": [
              {
                "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/storage",
                "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b",
                "resourceName": "storage",
                "resourceType": "Microsoft.Resources/deployments"
              }
            ],
            "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/identity",
            "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b",
            "resourceName": "identity",
            "resourceType": "Microsoft.Resources/deployments"
          }
        ],
        "duration": "PT16.4639167S",
        "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"
          },
          {
            "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": {},
        "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-159e2742-d3a1-4e71-84a3-16e19830242b",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }
    
  5. Validasi hasilnya.

    1. Buka portal Microsoft Azure dan pastikan Anda berada di langganan kotak pasir. Untuk melakukannya, pilih avatar Anda di sudut kanan atas halaman. Lalu pilih Beralih direktori. Dalam daftar, pilih direktori Microsoft Learn Sandbox.

    2. Di panel sebelah kiri, pilih Grup sumber daya.

    3. Pilih [nama grup sumber daya kotak pasir].

    4. Di area Gambaran Umum, Anda melihat bahwa penyebaran berhasil. Pilih 3 Berhasil untuk melihat detail penyebaran. (Mungkin ada penyebaran yang lebih lengkap, tergantung pada apakah Anda melakukan latihan pelajaran sebelumnya.)

    Antarmuka portal Microsoft Azure untuk penyebaran dengan satu penyebaran tercantum dan status berhasil.

    Perhatikan bahwa Anda menggunakan satu templat, tetapi ada tiga templat tercantum di panel penyebaran portal. Ketiga penyebaran tersebut sesuai dengan templat utama dan dua templat yang ditautkan.

    Antarmuka portal Microsoft Azure untuk penyebaran tertentu tanpa sumber daya yang tercantum.