DevTest Labs 및 일정 이동
DevTest Labs 및 관련 일정을 다른 지역 또는 리소스 그룹으로 이동할 수 있습니다. Azure Portal을 통해 리소스 그룹을 이동할 수 있습니다. 랩을 이동하려면 다른 지역에 기존 랩의 복사본을 만듭니다. 랩을 이동했고 대상 지역에 VM(가상 머신)이 있는 경우 랩 일정을 이동할 수 있습니다.
이 문서에서는 다음 방법을 설명합니다.
- 리소스를 다른 리소스 그룹으로 이동합니다.
- 랩의 ARM(Azure Resource Manager) 템플릿을 내보냅니다.
- 대상 지역 및 기타 매개 변수를 추가하거나 업데이트하여 템플릿을 수정합니다.
- 템플릿을 배포하여 대상 지역에 새로운 랩을 만듭니다.
- 새 랩을 구성합니다.
- 새 랩으로 데이터를 이동합니다.
- 일정을 새 랩으로 이동합니다.
- 원본 지역에서 리소스를 삭제합니다.
필수 조건
계정에서 사용하는 서비스 및 기능이 대상 지역에서 지원되는지 확인합니다.
미리 보기 기능의 경우 구독이 대상 지역의 허용 목록에 있는지 확인합니다.
DevTest Labs는 내보낸 ARM 템플릿에서 암호를 저장하거나 노출하지 않습니다. 다음의 암호/비밀을 알아야 합니다.
- VM
- 저장된 비밀
- 프라이빗 아티팩트 리포지토리의 PAT 토큰으로 랩과 함께 프라이빗 리포지토리를 이동합니다.
랩 일정을 이동할 때 대상 지역에 Compute VM이 있는지 확인합니다.
랩 이동
다음 섹션에서는 리소스를 다른 리소스 그룹으로 이동하고 ARM 템플릿을 만들고 사용자 지정하여 랩을 한 지역에서 다른 지역으로 이동하는 방법을 설명합니다.
대상 지역에 VM이 있는 경우 랩을 이동하지 않고도 일정을 이동할 수 있습니다. 랩을 이동하지 않고 일정을 이동하려면 일정 이동을 참조하세요.
Azure Portal을 사용하여 리소스 그룹 이동
이제 DevTest Labs에서 다른 위치에 있는 리소스 그룹 간에 리소스를 원활하게 이동할 수 있습니다. 동일한 구독 내에서 한 그룹에서 다른 그룹으로 리소스를 쉽게 전송할 수 있습니다.
시작하려면 이동하려는 리소스를 선택합니다. 리소스의 개요 페이지에서 위쪽에 표시되는 현재 리소스 그룹을 찾을 수 있습니다. 리소스 그룹 이름 옆에 괄호 안에 단어가 (move)
표시됩니다.
하이퍼링크 텍스트를 move
클릭하면 동일한 구독 내의 다른 리소스 그룹으로 리소스를 재배치할 수 있는 새 페이지로 이동됩니다. 대상 리소스 그룹이 다른 위치에 있더라도 리소스를 이동해도 해당 위치는 변경되지 않습니다. Azure Portal을 통해 리소스를 이동하지 않거나 다른 구독의 리소스 그룹으로 전송하는 경우 ARM을 사용하는 대체 방법이 아래에 설명되어 있습니다.
랩을 다른 지역으로 이동
랩을 이동할 때 이동을 준비하기 위해 수행해야 하는 몇 가지 단계가 있습니다. 그러려면 다음 작업을 수행해야 합니다.
- Virtual Network 준비
- 랩의 ARM 템플릿 내보내기
- 템플릿 수정
- 템플릿을 배포하여 랩 이동
- 새 랩 구성
- 새 VM에서 컴퓨팅 VM의 OS 디스크를 교환합니다.
- 원래 랩을 정리합니다
Virtual Network 준비
시작하려면 Resource Manager 템플릿을 내보내고 수정합니다.
Azure Portal에 로그인합니다.
대상 지역에 리소스 그룹이 없으면 지금 만듭니다.
‘Azure Virtual Network를 다른 지역으로 이동’ 문서에 포함된 단계를 사용하여 현재 Virtual Network를 새 지역 및 리소스 그룹으로 이동합니다.
또는 원래 가상 네트워크를 유지할 필요가 없는 경우 새 가상 네트워크를 만들 수 있습니다.
랩의 ARM 템플릿 내보내기
다음으로, 랩을 설명하는 설정이 포함된 JSON 템플릿을 내보냅니다.
Azure Portal을 사용하여 템플릿을 내보내려면:
모든 리소스를 선택한 다음 랩에 대한 리소스 그룹을 선택합니다.
템플릿 내보내기를 선택합니다.
템플릿 내보내기에서 다운로드를 선택합니다.
포털에서 다운로드한 .zip 파일을 찾은 다음, 선택한 폴더에 파일 압축을 풉니다.
이 zip 파일에는 템플릿과 템플릿 배포 스크립트로 구성된 .json 파일이 들어 있습니다. 여기에는 공유 이미지 갤러리 리소스를 제외하고 ARM 템플릿 형식으로 나열된 랩 아래의 리소스가 모두 포함됩니다.
템플릿 수정
ARM 템플릿이 새 지역에 올바르게 배포되도록 하려면 템플릿의 몇 가지 부분을 변경해야 합니다.
Azure Portal을 사용하여 템플릿을 업데이트하려면 다음을 수행합니다.
Azure Portal에서 리소스 만들기를 선택합니다.
Marketplace 검색에서 템플릿 배포를 입력하고 ENTER를 누릅니다.
템플릿 배포를 선택합니다.
만들기를 실행합니다.
편집기에서 사용자 고유의 템플릿을 빌드합니다.를 선택합니다.
파일 로드를 선택한 다음 지침에 따라 마지막 섹션에서 다운로드한 template.json 파일을 로드합니다.
편집기에서 template.json 파일을 다음과 같이 변경합니다.
location
원본을 배포하려는 새 지역(예:westus2
,southeastasia
등)으로 바꿉니다. 지역 위치 코드를 가져오려면 Azure 위치를 참조하세요. 지역 코드는 공백이 없는 지역 이름입니다(예: 미국 중부 =centralus
)."variables": {}, "resources": [ { "type": "microsoft.devtestlab/labs", "location": "centralus",
“랩 설정”에 “한 리소스 그룹의 모든 가상 머신”이 설정된 경우 ARM 템플릿에서도 다음 값을 업데이트합니다.
microsoft.devtestlab/labs
리소스의apiVersion
을2018-10-15-preview
로 업데이트합니다.properties
섹션에vmCreationResourceGroupId
을 추가합니다.
"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",
"type": "microsoft.devtestlab/labs/users"
리소스를 찾습니다.keyVaultld
및keyVaultUri
매개 변수를 포함하여 전체secretStore
섹션을 제거합니다.secretStore": { "keyVaultUri": "<vaultvalue>" "keyVaultld": "<id>" }
"type": "microsoft.devtestlab/labs/virtualnetworks"
리소스를 찾습니다. 이 단계의 앞부분에서 새 가상 네트워크를 만든 경우, 실제 서브넷 이름을/subnets/[SUBNET_NAME]
에 추가해야 합니다. 가상 네트워크를 새 지역으로 이동하기로 선택한 경우 이 단계를 건너뛰어야 합니다."type": "microsoft.devtestlab/labs/virtualmachines"
리소스를 찾습니다.‘속성’ 아래에
"password": "RANDOM_PASSWORD"
를 추가합니다.참고 항목
새 VM을 만들려면 ‘암호’ 속성이 필요합니다. 나중에 OS 디스크를 원래 VM과 교환하므로 임의 암호를 입력합니다.
공유 IP 가상 머신의 경우 ‘properties.networkInterface’ 아래에 이 조각을 추가합니다.
RDP를 사용하는 Windows VM:
"networkInterface": { "sharedPublicIpAddressConfiguration": { "inboundNatRules": [ { "transportProtocol": "tcp", "backendPort": 3389 } ] } }
SSH를 사용하는 Linux VM:
"networkInterface": { "sharedPublicIpAddressConfiguration": { "inboundNatRules": [ { "transportProtocol": "tcp", "backendPort": 22 } ] } }
microsoft.devtestlab/labs/users/secrets
리소스 아래의 다음 매개 변수가 ‘properties’입니다.YOUR_STORED_PASSWORD
를 암호로 바꿉니다.Important
암호 값에 secureString을 사용합니다.
"value": "YOUR_STORED_PASSWORD"
microsoft.devtestlab/labs/artifactsources
리소스 아래의 다음 매개 변수가 ‘properties’입니다.YOUR_STORED_PASSWORD
를 암호로 바꿉니다. 암호 값에 secureString을 다시 사용합니다."securityToken": "YOUR_PAT_TOKEN_VALUE"
편집기에서 템플릿을 저장합니다.
템플릿을 배포하여 랩 이동
템플릿을 배포하여 대상 지역에 새 랩을 만듭니다.
사용자 지정 배포 페이지에서 템플릿에 정의된 해당 값으로 모든 매개 변수를 업데이트합니다.
다음 값을 입력합니다.
속성 값 구독 Azure 구독을 선택합니다. 리소스 그룹 마지막 섹션에서 만든 리소스 그룹 이름을 선택합니다. 위치 랩 위치를 선택합니다. 예: 미국 중부 랩 이름 다른 이름을 선택해야 합니다. Vnet ID 이동한 항목이거나 새로 만든 항목이어야 합니다. 검토 + 만들기를 선택합니다.
만들기를 선택합니다.
화면 위쪽에서 벨 아이콘(알림)을 선택하여 배포 상태를 확인합니다. 배포 진행 중이 표시됩니다. 배포가 완료될 때까지 기다립니다.
새 랩 구성
대부분의 랩 리소스는 ARM 템플릿을 사용하여 새 지역에서 복제되었지만, 몇 가지 편집 사항을 수동으로 이동해야 합니다.
- 원래 갤러리에 있는 경우 컴퓨팅 갤러리를 랩에 다시 추가합니다.
- ‘사용자당 가상 머신’, ‘랩당 가상 머신’ 및 ‘허용되는 가상 머신 크기’ 정책을 이동된 랩에 다시 추가합니다.
새 VM에서 컴퓨팅 VM의 OS 디스크를 교환합니다.
새 랩 아래의 VM은 이전 랩 아래의 VM과 사양이 동일합니다. 유일한 차이점은 OS 디스크입니다.
새 지역 아래에 빈 디스크를 만듭니다.
새 랩에서 대상 컴퓨팅 VM OS 디스크 이름을 가져옵니다. 랩의 Virtual Machine 페이지에 있는 리소스 그룹에서 컴퓨팅 VM 및 해당 디스크를 찾을 수 있습니다.
AzCopy를 사용하여 새 지역의 새/빈 디스크에 이전 디스크 콘텐츠를 복사합니다. Dev Box 또는 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
그러면 새 지역에 새 디스크가 생깁니다.
- 새 랩에서 컴퓨팅 VM의 OS 디스크를 새 디스크로 교환합니다. 방법을 알아보려면 ‘PowerShell을 사용하여 Azure VM에서 사용하는 OS 디스크 변경’ 문서를 참조하세요.
일정 이동
일정을 이동하는 방법에는 두 가지가 있습니다.
- 이동된 VM에서 일정을 수동으로 다시 만듭니다. 이 프로세스는 시간이 많이 걸리고 오류가 발생하기 쉽습니다. 이 방법은 일정과 VM이 적을 때 가장 유용합니다.
- ARM 템플릿을 사용하여 일정을 내보내고 다시 배포합니다.
ARM 템플릿을 사용하여 다른 Azure 지역에서 일정을 내보내고 재배포하려면 다음 단계를 따릅니다.
Azure Portal에 로그인합니다.
VM을 보유한 원본 리소스 그룹으로 이동합니다.
리소스 그룹 개요 페이지의 리소스에서 숨겨진 형식 표시를 선택합니다.
형식이 microsoft.devtestlab/schedules인 모든 리소스를 선택합니다.
템플릿 내보내기를 선택합니다.
리소스 그룹 템플릿 내보내기 페이지에서 배포를 선택합니다.
사용자 지정 배포 페이지에서 템플릿 편집을 선택합니다.
템플릿 코드에서
"location": "<old location>"
의 모든 인스턴스를"location": "<new location>"
로 변경한 다음 저장을 선택합니다.사용자 지정 배포 페이지에서 대상 VM과 일치하는 값을 입력합니다.
속성 값 구독 Azure 구독을 선택합니다. 리소스 그룹 해당 리소스 그룹 이름을 선택합니다. 지역 랩 일정의 위치를 선택합니다. 예: 미국 중부 일정 이름 전역적으로 고유한 이름이어야 합니다. VirtualMachine_xxx_externalId 대상 VM이어야 합니다. Important
각 일정에는 전역적으로 고유한 이름이 있어야 합니다. 새 위치의 일정 이름을 변경해야 합니다.
검토 및 만들기를 선택하여 배포를 만듭니다.
배포가 완료되면 새 일정이 새 VM에서 올바르게 구성되었는지 확인합니다.
삭제 또는 정리
배포 후 다시 시작하려면 대상 랩을 삭제하고 이 문서의 준비 및 이동 섹션에 설명된 단계를 반복하면 됩니다.
변경 내용을 커밋하고 이동을 완료하려면 원래 랩을 삭제해야 합니다.
Azure Portal을 사용하여 랩을 제거하려면 다음을 수행합니다.
Azure Portal에서 왼쪽의 메뉴를 확장하여 서비스 메뉴를 열고 DevTest Labs를 선택하여 랩 목록을 표시합니다.
삭제할 대상 랩을 찾아 목록 오른쪽에 있는 자세히 단추(...)를 마우스 오른쪽 단추로 클릭합니다.
삭제를 선택하고 확인합니다.
더 이상 사용되지 않는 경우 원래 일정을 정리하도록 선택할 수도 있습니다. 원래 일정 리소스 그룹(위의 5단계에서 템플릿을 내보낸 위치)으로 이동하여 일정 리소스를 삭제합니다.
다음 단계
이 문서에서는 DevTest Lab을 한 지역에서 다른 지역으로 이동하고 원본 리소스를 정리했습니다. Azure에서 지역 및 재해 복구 간에 리소스를 이동하는 방법에 대한 자세한 내용은 다음을 참조하세요.