共用方式為


將 DevTest Labs 和排程移至另一個區域

您可以將 DevTest Labs 及其相關聯的排程移至另一個區域。 若要移動實驗室,請在另一個區域中建立現有實驗室的複本。 當您移動實驗室,且目標區域中有虛擬機器 (VM) 時,就可以移動實驗室排程。

在本文中,您將學會如何:

  • 匯出實驗室的 Azure Resource Manager (ARM) 範本。
  • 藉由新增或更新目的地區域與其他參數來修改範本。
  • 部署範本以在目標區域中建立新的實驗室。
  • 設定新的實驗室。
  • 將資料移至新的實驗室。
  • 將排程移至新的實驗室。
  • 刪除來源區域中的資源。

必要條件

  • 確定目的地區域中支援您帳戶所使用的服務和功能。

  • 針對預覽功能,請確保您的訂閱已加入目標區域的允許清單。

  • DevTest Labs 不會儲存這些功能,也不會從匯出的 ARM 範本中公開密碼。 您必須知道下列項目的密碼/祕密:

    • VM
    • 預存祕密
    • 私人成品存放庫的 PAT 權杖,以將私人存放庫與實驗室一起移動。
  • 移動實驗室排程時,請確定目標區域中存在計算 VM。

移動實驗室

下一節說明如何建立和自訂 ARM 範本,以將實驗室從某個區域移至另一個區域。

如果在目標區域中有 VM,您可以移動排程而不移動實驗室。 如果您想要移動排程而不移動實驗室,請參閱移動排程

準備移動實驗室

移動實驗室時,您必須採取一些步驟來為移動做準備。 您需要:

  • 準備虛擬網路
  • 匯出實驗室的 ARM 範本
  • 修改範本
  • 部署範本以移動實驗室
  • 設定新的實驗室
  • 在新的 VM 下交換計算 VM 的 OS 磁碟
  • 清除原始實驗室

準備虛擬網路

若要開始使用,請匯出並修改 Resource Manager 範本。

  1. 登入 Azure 入口網站

  2. 若您沒有目標區域下的資源群組,請立即建立一個。

  3. 使用「將 Azure 虛擬網路移至另一個區域」一文中包含的步驟,將目前的虛擬網路移至新區域與資源群組。

    或者,若您不需要保留原始虛擬網路,則可以建立新的虛擬網路。

匯出實驗室的 ARM 範本

接下來,您將匯出內含描述實驗室之設定的 JSON 範本。

使用 Azure 入口網站匯出範本:

  1. 選取 [所有資源],然後選取實驗室的資源群組。

  2. 選取 [匯出範本]

  3. 選擇 [匯出範本] 中的 [下載]

  4. 找出您從入口網站下載的 .zip 檔案,並將該檔案解壓縮至您選擇的資料夾。

    此 zip 檔案包含由部署範本的範本與指令碼所組成的 .json 檔案。 其包含 ARM 範本格式所列實驗室下的所有資源,但共用映像庫資源除外。

修改範本

為了讓 ARM 範本在新的區域中正確部署,您必須變更範本的幾個部分。

若要使用 Azure 入口網站更新範本:

  1. 在 Azure 入口網站中,選取 [建立資源]

  2. 在 [搜尋 Marketplace] 中,輸入範本部署,然後按 ENTER

  3. 選取 [範本部署]

    顯示已選取範本部署的 Azure Marketplace 螢幕快照。

  4. 選取 建立

  5. 選取 [在編輯器中組建您自己的範本]

  6. 選取 [載入檔案],然後遵循指示載入您在上一節下載的範本 template.json 檔案。

  7. 在編輯器中,對 template.json 檔案進行下列變更:

    1. 將原始 location 取代為您要在其中部署的新區域,例如 westus2southeastasia 等。若要取得區域位置代碼,請參閱 Azure 位置。 區域代碼為不含空白的區域名稱:美國中部 = centralus

      "variables": {},
      "resources": [
        {
          "type": "microsoft.devtestlab/labs",
          "location": "centralus",
      
    2. 若您在「實驗室設定」中設定了「一個資源群組中的所有虛擬機器」,則也會更新 ARM 範本中的下列值:

      • microsoft.devtestlab/labs 資源的 apiVersion 更新為 2018-10-15-preview
      • vmCreationResourceGroupId 加入到 properties 區段。
      "variables": {},
      "resources": [
        {
          "type": "microsoft.devtestlab/labs",
          "apiVersion": "2018-10-15-preview",
          "name": "[parameters('labs_lj_dtl_rgsettings_name')]",
          "location": "<regionName>",
          "properties": {
            "vmCreationResourceGroupId": "/subscriptions/<subscriptionID>/resourceGroups/<myResourceGroup>",
            "labStorageType": "Premium",
      
    3. 尋找 "type": "microsoft.devtestlab/labs/users" 資源。 在此處,移除整個 secretStore 區段,包括 keyVaultldkeyVaultUri 參數。

      secretStore": {
        "keyVaultUri": "<vaultvalue>"
        "keyVaultld": "<id>"
      }
      
    4. 尋找 "type": "microsoft.devtestlab/labs/virtualnetworks" 資源。 若您稍早在這些步驟中建立新的虛擬網路,則必須在 /subnets/[SUBNET_NAME] 中新增實際的子網路名稱。 若您選擇將虛擬網路移至新的區域,則應跳過此步驟。

    5. 尋找 "type": "microsoft.devtestlab/labs/virtualmachines" 資源。

      1. 在 [屬性] 下,新增 "password": "RANDOM_PASSWORD"

        注意

        需要有 "password" 屬性,才能建立新的 VM。 因為稍後會以原始 VM 交換 OS 磁碟,所以要輸入隨機密碼。

      2. 針對共用 IP 虛擬機器,請在 "properties.networkInterface" 下新增此程式碼片段。

        使用 RDP 的 Windows VM:

        "networkInterface": {
          "sharedPublicIpAddressConfiguration": {
            "inboundNatRules": [
              {
                "transportProtocol": "tcp",
                "backendPort": 3389
              }
            ]
          }
        }
        

        使用 SSH 的 Linux VM:

         "networkInterface": {
            "sharedPublicIpAddressConfiguration": {
              "inboundNatRules": [
                {
                  "transportProtocol": "tcp",
                  "backendPort": 22
                }
              ]
            }
          }
        
    6. microsoft.devtestlab/labs/users/secrets 資源下,後續參數為 "properties"。 以您的密碼取代 YOUR_STORED_PASSWORD

      重要

      針對密碼值使用 secureString。

      "value": "YOUR_STORED_PASSWORD"
      
    7. microsoft.devtestlab/labs/artifactsources 資源下,後續參數為 "properties"。 以您的密碼取代 YOUR_STORED_PASSWORD。 再次針對密碼值使用 secureString。

      "securityToken": "YOUR_PAT_TOKEN_VALUE"
      
    8. 在編輯器中,儲存範本。

部署範本以移動實驗室

部署範本,以在目標區域中建立新的實驗室。

  1. 在 [自訂部署] 頁面中,以範本中定義的對應值來更新所有參數。

  2. 輸入下列值:

    名稱
    訂用帳戶 選取 Azure 訂用帳戶。
    資源群組 選取您在上一節中建立的資源群組名稱。
    地點 選取實驗室的位置。 例如,美國中部
    實驗室名稱 必須為不同的名稱。
    Vnet 識別碼 必須為移動的 Vnet 識別碼,或是您建立的新 Vnet 識別碼。
  3. 選取 [檢閱 + 建立]。

  4. 選取 建立

  5. 從畫面頂端選取鈴鐺圖示 (通知),以查看部署狀態。 您應該會看到 [部署進行中]。 請等候部署完成。

設定新的實驗室

雖然大部分的實驗室資源已在使用 ARM 範本的新區域下進行複寫,但仍需要手動移動一些編輯。

  1. 若原始實驗室中有任何資源,請將計算資源庫新增回實驗室。
  2. 將原則「每個使用者的虛擬機器數目」、「每個實驗室的虛擬機器數目」與「允許的虛擬機器大小」新增回已移動的實驗室

在新的 VM 下交換計算 VM 的 OS 磁碟

請注意,新實驗室下的 VM 具有與舊實驗室下的 VM 相同的規格。 唯一的差異在於其 OS 磁碟。

  1. 在新區域下建立空白磁碟。

    • 取得新實驗室下的目標計算 VM OS 磁碟名稱。 您可以在實驗室其 [虛擬機器] 頁面的 [資源群組] 下,找到計算 VM 及其磁碟。

    • 使用 AzCopy,將舊磁碟內容複寫至新區域中的新/空白磁碟。 您可以從開發箱或 Azure Cloud Shell 執行 Powershell 命令。

      AzCopy 是移動資料的慣用工具。 已針對效能最佳化。 其中一個較快的方式是直接複製資料,如此 AzCopy 不會使用電腦的網路頻寬。 在命令列或自訂指令碼中使用 AzCopy。 請參閱開始使用 AzCopy

      # Fill in the source/target disk names and their resource group names
      $sourceDiskName = "SOURCE_DISK"
      $sourceRG = "SOURCE_RG"
      $targetDiskName = "TARGET_DISK"
      $targetRG = "TARGET_RG"
      $targetRegion = "TARGET_LOCATION"
      
      # Create an empty target disk from the source disk
      $sourceDisk = Get-AzDisk -ResourceGroupName $sourceRG -DiskName $sourceDiskName
      $targetDiskconfig = New-AzDiskConfig -SkuName $sourceDisk.Sku.Name -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) -Location $targetRegion -OsType $sourceDisk.OsType -CreateOption 'Upload'
      $targetDisk = New-AzDisk -ResourceGroupName $targetRG -DiskName $targetDiskName -Disk $targetDiskconfig
      
      # Copy the disk content from source to target
      $sourceDiskSas = Grant-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName -DurationInSecond 1800 -Access 'Read'
      $targetDiskSas = Grant-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName -DurationInSecond 1800 -Access 'Write'
      azcopy copy $sourceDiskSas.AccessSAS $targetDiskSas.AccessSAS --blob-type PageBlob
      Revoke-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName
      Revoke-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName
      

      然後,您會在新的區域下擁有新磁碟。

    1. 將新實驗室下計算 VM 的 OS 磁碟與新的磁碟交換。 若要了解方法,請參閱<使用 PowerShell 變更 Azure VM 所使用的 OS 磁碟>一文。

移動排程

移動排程的方式有兩種:

  • 在已移動的 VM 上手動重新建立排程。 這個流程可能既耗時又困難。 當您有一些排程和 VM 時,此方法最有用。
  • 使用 ARM 範本匯出和重新部署排程。

使用下列步驟,利用 ARM 範本匯出並重新部署另一個 Azure 區域中的排程:

  1. 登入 Azure 入口網站

  2. 前往保留 VM 的來源資源群組。

  3. 在 [資源群組概觀] 頁面的 [資源] 下,選取 [顯示隱藏的類型]

  4. 選取類型為 microsoft.devtestlab/schedules 的所有資源。

  5. 選取 [匯出範本]

    顯示資源群組中隱藏資源的螢幕快照,其中已選取排程。

  6. 在 [匯出資源群組範本] 頁面上,選取 [部署]

  7. 從 [自訂部署] 頁面中,選取 [編輯範本]

  8. 在範本程式碼中,將 "location": "<old location>" 的所有執行個體變更為 "location": "<new location>",然後選取 [儲存]

  9. 在 [自訂部署] 頁面上,輸入符合目標 VM 的值:

    名稱
    訂用帳戶 選取 Azure 訂用帳戶。
    資源群組 選取資源群組名稱。
    區域 選取實驗室排程的位置。 例如,美國中部
    排程名稱 必須是全域唯一名稱。
    VirtualMachine_xxx_externalId 必須是目標 VM。

    顯示自定義部署頁面的螢幕快照,其中包含相關設定的新位置值。

    重要

    每個排程都必須有全域唯一的名稱;您將必須變更新位置的排程名稱。

  10. 選取 [檢閱並建立] 以建立部署。

  11. 部署完成時,請確認新排程已在新的 VM 上正確設定。

捨棄或清除

部署之後,若您想要從頭開始,可以刪除目標實驗室,然後重複本文準備移動章節中所述的步驟。

若要認可變更並完成移動,您必須刪除原始實驗室。

若要使用 Azure 入口網站移除實驗室:

  1. 在 Azure 入口網站中,展開左側功能表以開啟服務的功能表,然後選擇 [DevTest Labs] 以顯示實驗室的清單。

  2. 找出要刪除的目標實驗室,然後以滑鼠右鍵按一下清單右側的 [更多] 按鈕 ([...])。

  3. 選取 [刪除],然後確認。

您也可以選擇於原始排程不再使用時加以清除。 前往原始排程資源群組 (您在上述步驟 5 中,已匯出範本),並刪除排程資源。

下一步

在本文中,您已將 DevTest Labs 從某區域移至另一個區域,並已清除來源資源。 若要深入了解如何在 Azure 中的區域之間移動資源和災害復原,請參閱: