Microsoft/Azure

[PowerShell] Azure NSG 복사 (Rule Export and Import)

megapain 2020. 9. 20. 22:37

기존 NSG의 구성 정보와 규칙을 Azure Resource Manager Template (Json) 형태로 내보낸 후 몇 가지 매개 변수(Parameters)들을 수정하여 새로운 NSG를 생성하는 방법을 설명합니다.

예를 들어, NSG에 수십, 수백개의 규칙을 등록해서 사용 중인 상황에서
동일한 규칙을 가진 새로운 이름의 NSG를 생성하거나, NSG를 다른 지역으로 복사할 때 사용하는 방법입니다.

예제에서는 Azure Korea Central의 NSG(PUB1-T1-SN-NSG)를 json 파일로 Export 후, Korea South에 새로운 NSG(koreasouth-nsg)로 배포합니다.

<참고 - 원본 NSG>

 

1. 원본 NSG를 .json 파일로 내보내기 

아래 Script에서 $resourceGroupName과 $nsgName을 실제 사용 환경에 맞게 수정합니다.

$resourceGroupName = "PUB1-NW-RG"
$nsgName = "PUB1-T1-SN-NSG"

$sourceNSGID = (Get-AzNetworkSecurityGroup -Name $nsgName -ResourceGroupName $resourceGroupName).Id

Export-AzResourceGroup -ResourceGroupName $resourceGroupName -Resource $sourceNSGID -IncludeParameterDefaultValue

 

스크립트 실행 결과로 '리소스 그룹 명.json' 파일이 만들어집니다. 

 

2.  .json 파일 수정

json 파일을 수정합니다.

수정 대상

  • parameters

    • networkSecurityGroups_PUB1_T1_SN_NSG_name 의 defaultValue (PUB1-T1-SN-NSG -> koreasouth-nsg)

 

  • resources 

    • location (koreacentral -> koreasouth)

 

.json 파일을 저장합니다.

 

3. 대상 지역에 새 Resource Group 생성

대상 지역(koreasouth)에 아래와 같이 새 Resource Group (KRSOUTH-NW-RG)을 만듭니다.

$newResourceGroupName = "KRSOUTH-NW-RG"
$newLocation = "koreasouth"
New-AzResourceGroup -Name $newResourceGroupName -location $newLocation

 

4. 새 NSG 배포

New-AzResourceGroupDeployment 명령을 사용하여 새 NSG를 배포합니다.

$templateFile = "D:\move-nsg\PUB1-NW-RG.json"
New-AzResourceGroupDeployment -ResourceGroupName $newResourceGroupName -TemplateFile $templateFile

 

json 템플릿을 이용한 배포이기 때문에, Resource Group의 Deployments 메뉴에서 배포 상태를 확인할 수 있습니다.

 

새로 배포된 NSG를 확인해보면 지역은 다르지만, 기존 NSG와 동일한 규칙을 가지고 있습니다.

 

-끝-