Azure Resource Group 간에 Resource 옮기기

제목과 동일하게, Azure에서 Resource Group 간에 리소스를 옮기는 방법입니다.

물론, Azure Portal(http://portal.azure.com)에서도 이동을 가능하게 할 수 있습니다. 히지만, 여러 개의 리소스를 한꺼번에 옮기려고 하는 경우에는 PowerShell이 훨씬 더 편하겠죠.

각설하고, PowerShell 구문은 다음과 같습니다.

Login-AzureRmAccount #Azure로 로그인

$subscriptionName = “your subscription name” #작업하려는 구독(subscription)의 이름

Select-AzureRmSubscription -SubscriptionName $subscriptionName #구독 선택

$resourceName = “your resource name” #옮기려는 리소스의 이름
$srcResourceGroupName = “source resource group”    #옮기려는 원본 리소스가 위치하고 있는 리소스 그룹
$destResourceGroupName = “destination resource group” #옮길 대상 리소스 그룹

$resource = Get-AzureRmResource -ResourceName $resourceName -ResourceGroupName $srcResourceGroupName
Move-AzureRmResource -DestinationResourceGroupName $destResourceGroupName -ResourceId $resource.ResourceId

 

추가 : 2016-06-08 17:43

때오님께서 설명은 여러 개를 옮긴다고 하고, 코드는 하나를 옮기는거를 적었다는 징징거림이 있어서 추가합니다. (본인도 할줄 알면서 말이죠)

Login-AzureRmAccount #Azure로 로그인

$subscriptionName = “your subscription name” #작업하려는 구독(subscription)의 이름

Select-AzureRmSubscription -SubscriptionName $subscriptionName #구독 선택

$resourceGroupName = “source resource group”    #옮기려는 원본 리소스가 위치하고 있는 리소스 그룹
$destResourceGroupName = “destination resource group” #옮길 대상 리소스 그룹

 

Get-AzureRmResource | Where-Object {$_.ResourceGroupName -eq $resourceGroupName} | Select Name, ResourceType | ForEach-Object {
$resource = Get-AzureRmResourceResourceName $_.Name -ResourceGroupName $srcResourceGroupName
Move-AzureRmResource -DestinationResourceGroupName $destResourceGroupName -ResourceId $resource.ResourceId
}

Move Azure (ARM) VM between Storage Accounts and beyond > Azure PowerShell 1.4.0에 적용된 버전

다음과 같은 조건으로 VM을 옮기는 경우 사용할 수 있도록 프랑스의 어느 분이 PowerShell을 작성해 두었는데요…

  • VM을 다른 Storage account로 이동하는 경우
  • VM을 다른 container로 이동하는 경우
  • VM을 다른 구독(subscription)으로 이동하는 경우
  • 이동하면서 VM 이름을 변경하는 경우
  • 이동하면서 VM의 리소스 그룹을 변경하는 경우
  • 이동하면서 VM의 가용성 집합(availability set)을 변경하는 경우

소스 링크는 https://gallery.technet.microsoft.com/Move-Azure-ARM-VM-between-66adb292/ 

사용방법은 https://buildwindows.wordpress.com/2016/03/05/move-azure-arm-vm-between-storage-accounts-and-beyond/

하지만, PowerShell 버전이 이전 버전으로 작성이 되어서, 1.4.0 버전에서는 잘 동작하지 않습니다. Sad smile

이걸 동작하도록 변경해보았는데요.

변경된 코드는 아래에 올려 두었습니다.

https://github.com/jiyongseong/myPowerShellRepo/blob/master/Move-ArmVM.ps1