Latihan - Menyebarkan templat ARM Anda

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 menggunakan templat Azure Resource Manager (ARM) dari komputer Anda dan dari repositori GitHub dengan menentukan URI.

Penting

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

Menyiapkan lingkungan Anda dengan langganan Microsoft Learn Sandbox

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. Verifikasi nama langganan. Perintah berikut mencantumkan langganan, nama, dan ID mereka dalam format tabel yang mudah dibaca. Cari Concierge Subscription.

    Get-AzSubscription
    
  4. Ubah langganan aktif Anda menjadi Langganan Concierge.

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

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, Anda harus terlebih dahulu mendapatkan nama grup sumber daya dengan menjalankan perintah berikut.

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

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 untuk menghilangkan parameter tersebut dari perintah Azure PowerShell lainnya dalam latihan ini.

Catatan

Biasanya, saat Anda menjalankan perintah PowerShell atau Azure CLI untuk menyebarkan templat, Anda harus menentukan nama grup sumber daya target. Menjalankan perintah sebelumnya, kita telah mengatur konteks penyebaran kita. Kita telah menentukan nama grup sumber daya kotak pasir kita dengan menjalankan perintah PowerShell Set-AzDefault:

Set-AzDefault -ResourceGroupName {Resource Group Name}

Menyebarkan templat lokal

Dalam latihan berikut, Anda menyebarkan templat dari komputer lokal Anda. Nama grup sumber daya yang biasanya Anda gunakan saat menyebarkan di lingkungan Anda sendiri tidak diperlukan di sini, karena kami sudah menentukan grup sumber daya default di bagian sebelumnya.

  1. Untuk memulai, salin dan tempel konten kode templat berikut ini ke dalam file di direktori lokal. Gunakan C:\JSON\maintemplate.json, misalnya.

    {
        "$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. Setelah menyimpan file secara lokal, Anda dapat menggunakan perintah PowerShell untuk menyebarkannya di tingkat grup sumber daya yang kita bicarakan di unit terakhir. Yaitu, gunakan perintah New-AzResourceGroupDeployment .

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

    Setelah selesai, Anda harus memiliki hasil seperti contoh ini.

    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 :
    
    

Menyebarkan templat lokal yang sama dengan nilai parameter

Pada latihan terakhir, Anda menyebarkan templat dengan menggunakan nilai default parameter. Saat Anda menggunakan templat ARM lokal, Anda mungkin perlu meneruskan nilai parameter. Anda dapat menggunakan parameter sebaris atau file parameter.

Untuk meneruskan parameter sebaris ke penyebaran Anda, Anda perlu memberikan nama parameter dengan New-AzResourceGroupDeployment cmdlet. Pada latihan berikutnya, Anda akan meneruskan parameter sebagai parameter sebaris dan sebagai file parameter.

  1. Dengan menggunakan templat yang sama dengan latihan terakhir, buat tabel hash yang berisi nilai untuk parameter templat yang diperlukan.

    $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
    

    Setelah selesai, Anda pasti memiliki hasil seperti ini:

    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 :
    

    Daripada meneruskan parameter sebagai nilai sebaris dalam skrip Anda, akan lebih mudah bila Anda menggunakan file JSON yang berisi nilai parameter. File parameter dapat menjadi file lokal atau file eksternal/jarak jauh dengan URI yang dapat diakses. Untuk informasi selengkapnya tentang file parameter, lihat Membuat file parameter Resource Manager.

  2. Untuk meneruskan file parameter lokal, kami menggunakan TemplateParameterFile parameter dalam perintah yang sama dengan yang telah kami gunakan. Tetapi pertama-tama, Anda perlu membuat dan menyimpan file parameter Anda.

    1. Karena kami menggunakan Visual Studio Code dengan ekstensi Alat Azure Resource Manager, Anda dapat membuka templat ARM yang Anda simpan secara lokal dan memilih tautan Pilih/buat file parameter... .

    2. Pilih Baru pada menu, lalu pilih Hanya parameter yang diperlukan. Ekstensi membuat file parameter berdasarkan templat yang saat ini dibuka.

    Cuplikan layar yang memperlihatkan pilihan untuk membuat file parameter di Visual Studio Code.

  3. Gunakan perintah PowerShell berikut dengan TemplateParameterFile parameter .

    $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
    

    Setelah penyebaran, hasil Anda akan terlihat seperti contoh berikut.

    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 :
    
    

Menyebarkan templat eksternal atau jarak jauh

Dalam beberapa kasus, Anda perlu menyebarkan dari lokasi eksternal atau jarak jauh alih-alih dari templat di komputer lokal Anda. Anda dapat menyimpan templat di repositori kontrol sumber (seperti GitHub). Atau, Anda dapat menyimpannya di akun penyimpanan Azure untuk akses bersama di organisasi Anda.

  1. Untuk menyebarkan templat eksternal, gunakan TemplateUri parameter.

    Dalam latihan ini, Anda akan menyebarkan template ARM dari repositori GitHub. Repositori bersifat publik, jadi Anda tidak perlu khawatir tentang menyebarkan templat yang memerlukan token tanda tangan akses bersama (SAS). Untuk detail tentang menggunakan lokasi jarak jauh pribadi atau aman, lihat Menyebarkan templat pribadi dengan token SAS.

    Templat URI untuk latihan adalah https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Ini adalah templat singkat yang menyebarkan akun penyimpanan dasar di lingkungan kotak pasir Anda.

  2. Perintah PowerShell sama persis dengan templat lokal. Satu-satunya perbedaan adalah bahwa -TemplateUri parameter menggantikan -TemplateFile parameter.

    Gunakan kode berikut untuk menyebarkan di kotak pasir yang disediakan:

    $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
    

    Hasilnya seperti tangkapan layar berikut. Mereka menguraikan detail lokasi templat.

    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 :
    
    

Catatan

Bagian ini ditulis menggunakan perintah Azure CLI di Subsistem Linux Windows (WSL2) pada Windows 10. Perintahnya sama baik Anda menggunakan Azure CLI dalam PowerShell, CMD, atau Bash shell. Tetapi cara penanganan variabel dapat berbeda.

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 akan 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 sumber daya yang Anda dapatkan dari perintah sebelumnya. (Ini terlihat seperti learn-a73131a1-b618-48b8-af70-21af7ca420c4.) Perintah 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 lokal

Dalam latihan berikut, Anda menyebarkan templat dari komputer lokal Anda. Nama grup sumber daya yang biasanya Anda gunakan saat menyebarkan di lingkungan Anda sendiri tidak diperlukan di sini, karena kami sudah menentukan grup sumber daya default di bagian sebelumnya.

  1. Untuk memulai, salin dan tempel konten kode templat berikut ini ke dalam file di direktori lokal. Gunakan C:\JSON\maintemplate.json atau /mnt/c/Users/you/json/maintemplate.json, misalnya.

    {
        "$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. Setelah menyimpan file secara lokal, Anda dapat menggunakan perintah Azure CLI untuk menyebarkannya di tingkat grup sumber daya yang kita bicarakan di unit terakhir. Yakni, gunakan buat grup penyebaran az.

    Catatan

    Dalam contoh berikut, file template berada dalam folder json di home drive di Windows Linux Subsystem (WSL2). Sesuaikan perintah Anda berdasarkan shell pilihan Anda.

    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
    

    Setelah selesai, output yang dihasilkan akan terlihat seperti contoh berikut. Untuk memastikan bahwa penyebaran Anda berhasil, cari garis "provisioningState": "Succeeded".

    {
      "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"
    }
    

Menyebarkan templat lokal yang sama dengan nilai parameter

Pada latihan terakhir, Anda menyebarkan templat dengan menggunakan nilai default parameter. Saat Anda menggunakan templat ARM lokal, Anda mungkin perlu meneruskan nilai parameter. Anda dapat menggunakan parameter sebaris atau file parameter.

Pada latihan berikutnya, Anda meneruskan parameter sebaris ke penyebaran Anda. Anda perlu memberikan nama parameter apakah Anda menggunakan parameter sebaris atau file parameter, dengan menggunakan az deployment group create perintah .

  1. Dengan menggunakan templat yang sama dengan latihan terakhir, buat variabel yang berisi parameter dalam format string JSON untuk parameter templat yang diperlukan.

    Catatan

    Dalam contoh berikut, file templat berada dalam folder json di Windows Linux Subsystem (WSL2). Sesuaikan perintah Anda berdasarkan shell pilihan Anda.

    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"
    

    Setelah selesai, Anda harus memiliki hasil seperti contoh berikut. Untuk memastikan bahwa perintah berhasil, lihat bagian "parameters" dan nilainya "provisioningState" .

      {- 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"
      }
    

    Daripada meneruskan parameter sebagai nilai sebaris dalam skrip Anda, akan lebih mudah bila Anda menggunakan file JSON yang berisi nilai parameter. File parameter dapat menjadi file lokal atau file eksternal/jarak jauh dengan URI yang dapat diakses. Untuk informasi selengkapnya tentang file parameter, lihat Membuat file parameter Resource Manager.

  2. Untuk meneruskan file parameter lokal, kami menggunakan --parameters parameter dalam perintah yang sama dengan yang telah kami gunakan. Tetapi pertama-tama, Anda perlu membuat dan menyimpan file parameter Anda.

    1. Karena kami menggunakan Visual Studio Code dengan ekstensi Alat Azure Resource Manager, Anda dapat membuka templat ARM yang Anda simpan secara lokal dan memilih pilih atau buat file parameter untuk mengaktifkan tautan validasi penuh.

    2. Pilih Baru pada menu. Ekstensi membuat file parameter berdasarkan templat yang saat ini dibuka.

    Cuplikan layar yang memperlihatkan pilihan untuk membuat file parameter di Visual Studio Code.

  3. Gunakan perintah Azure CLI berikut dengan --parameters parameter.

    Catatan

    Dalam contoh berikut, file templat berada dalam folder json di Windows Linux Subsystem (WSL2). Sesuaikan perintah Anda berdasarkan shell dan OS pilihan Anda.

    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
    

    Setelah penyebaran, hasil Anda akan terlihat seperti contoh berikut.

      {- 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"
      }
    

Menyebarkan templat eksternal atau jarak jauh

Dalam beberapa kasus, Anda perlu menyebarkan dari lokasi eksternal atau jarak jauh alih-alih dari templat di komputer lokal Anda. Anda dapat menyimpan templat di repositori kontrol sumber (seperti GitHub). Atau, Anda dapat menyimpannya di akun penyimpanan Azure untuk akses bersama di organisasi Anda.

  1. Untuk menyebarkan templat eksternal, gunakan --template-uri parameter.

Dalam latihan ini, Anda menyebarkan templat ARM dari repositori GitHub. Repositori bersifat publik, jadi Anda tidak perlu khawatir tentang menyebarkan templat yang memerlukan token tanda tangan akses bersama (SAS). Untuk detail tentang menggunakan lokasi jarak jauh pribadi atau aman, lihat Menyebarkan templat pribadi dengan token SAS.

Templat URI untuk latihan adalah https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Ini adalah templat singkat yang menyebarkan akun penyimpanan dasar di lingkungan kotak pasir Anda.

  1. Perintah Cli Azure sama persis dengan templat lokal. Satu-satunya perbedaan adalah bahwa --template-uri parameter menggantikan --template-file parameter.

  2. Gunakan kode berikut untuk menyebarkan di kotak pasir yang disediakan:

    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
    

    Hasilnya seperti blok kode berikut. Mereka menguraikan detail lokasi templat di "templateLink"bagian tersebut. Mereka juga menunjukkan apakah penyebaran berhasil di bagian ."provisioningState"

    {- 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"
    }