본문 바로가기
Azure & Windows/Azure

Creating Virtual Netwok and Subnet in Azure using PowerShell and Some mistake

by 강철 벼룩 2018. 4. 20.

 Azure에서 PowerShell을 사용한 가상 네트워크와 서브넷을 만들때 범할 수 있는 실수.


Azure에서 PowerShell을 사용해 가상네트워크와 서브넷을 만드는 방법은 두 가지 입니다.


1. New-AzureRmVirtualNetworkSubnetConfig를 먼저 실행한 후, New-AzureRmVirtualNetwork을 실행하는 방법.

2. New-AzureRmVirtualNetwork으로 가상 네트워크를 먼저 만든 후, Add-AzureRmVirtualNetworkSubnetConfig를 실행하는 방법.

물론, 최종적으로 Set-AzureRmVirtualNetwork으로 설정을 업데이트 해야 합니다.

두 가지 방법 모두 가상네트워크를 만들고 해당 네트워크에 서브넷을 만들지만, 각 방법으로 만든 서브넷의 정보를 보면 다음 차이가 있습니다.

1번의 방법으로 한 경우, 



2번의 방법으로 한 경우,


두 가지 결과의 차이점이 보이나요?

2번 방법은 Id와 Etag 값이 없습니다.
이런 경우 네트워크 카드 리소스를 만들때 지정해야 하는 서브넷 ID를 사용하지 못하니 문제가 됩니다.

여기서 중요한 PowerShell 사용의 실수가 나옵니다.

2번의 경우 먼저, 다음과 같이 가상 네트워크를 만듭니다.

$vnet3 = New-AzureRmVirtualNetwork -ResourceGroupName $rg2.ResourceGroupName -Name 'AzureBCKor02-VNet1' -AddressPrefix '10.12.0.0/16' -Location $locName

그리고 여기에 서브넷을 다음과 같이 추가하겠죠.
$subnet4=Add-AzureRmVirtualNetworkSubnetConfig -Name 'VNet3SubNet1' -AddressPrefix '10.12.0.0/24' -VirtualNetwork $vnet3

그 다음, 최종적으로 설정을 업데이트 합니다.

Set-AzureRmVirtualNetwork -VirtualNetwork $vnet3

그리고, 흐뭇하게 $vnet3 변수에 담긴 서브넷의 정보를 확인하면, 위의 2번 그림과 같은 상황이 발생합니다.

결론적으로, $vnet3 변수에 담아 놓은 정보는 Set-AzureRmVirtualNetwork으로 업데이트하기전의 결과이므로, 다음 명령으로 다시 한번 값을 업데이트 해줘야, 나중에 정확한 값을 사용할 수 있는 것입니다.

$vnet3=Get-AzureRmVirtualNetwork -Name 'AzureBCKor02-VNet1' -ResourceGroupName $rg2.ResourceGroupName