共用方式為


移動 DevTest Labs 和排程

您可以將 DevTest Labs 及其相關聯的排程移至另一個區域或資源群組。 您可以透過 Azure 入口網站行動資源群組。 若要移動實驗室,請在另一個區域中建立現有實驗室的複本。 當您移動實驗室,且目標區域中有虛擬機(VM)時,您可以移動實驗室排程。

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

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

必要條件

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

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

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

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

移動實驗室

下一節說明如何將資源移至不同的資源群組,並建立和自定義ARM範本,以將實驗室從某個區域移至另一個區域。

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

使用 Azure 入口網站移動資源群組

現在已在 DevTest Labs 中順暢地啟用在不同位置的資源群組之間移動資源。 您可以毫不費力地將任何資源從一個群組傳輸到相同訂用帳戶中的另一個群組。

若要開始,請選取您想要移動的資源。 在資源的 [概觀 ] 頁面上,您會發現顯示在頂端的目前 資源群組 。 在資源組名旁邊,您會看到括弧中的文字 (move)

按兩下超連結 move 文字,將引導您前往新頁面,您可以在其中將資源重新放置至相同訂用帳戶內的任何其他資源群組。 請注意,即使目的地資源群組位於不同的位置,移動資源也不會變更其位置。 如果您未透過 Azure 入口網站移動資源,或轉送到不同訂用帳戶中的資源群組,請使用 ARM 的替代方法如下所述。

將實驗室移至不同的區域

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

  • 準備虛擬網路
  • 匯出實驗室的 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 中的區域之間移動資源和災害復原,請參閱: