Azure Stack Hub 구독 복제자를 사용하여 리소스 복제

Azure Stack Hub 구독 복제자 PowerShell 스크립트를 사용하여 Azure Stack Hub 구독 간, Azure Stack Hub 스탬프 간 또는 Azure Stack Hub와 Azure 간에 리소스를 복사할 수 있습니다. 복제자 스크립트는 다른 Azure 및 Azure Stack Hub 구독에서 Azure Resource Manager 리소스를 읽고 다시 빌드합니다. 이 문서에서는 스크립트의 작동 방식, 스크립트 사용 방법을 살펴보고 스크립트 작업에 대한 참조를 제공합니다.

이 문서에 사용된 스크립트는 Azure Intelligent Edge 패턴 GitHub 리포지토리에서 찾을 수 있습니다. 스크립트는 구독 복제자 폴더에 있습니다.

구독 복제자 개요

Azure 구독 복제자는 모듈식으로 설계되었습니다. 이 도구는 리소스 복제를 오케스트레이션하는 핵심 프로세서를 사용합니다. 또한 이 도구는 다양한 유형의 리소스를 복사하기 위한 템플릿 역할을 하는 사용자 지정 가능한 프로세서를 지원합니다.

코어 프로세서는 다음 세 가지 스크립트로 구성됩니다.

  • resource_retriever.ps1

    • 출력 파일을 저장할 폴더를 생성합니다.

    • 컨텍스트를 원본 구독으로 설정합니다.

    • 리소스를 검색하고 resource_processor.ps1전달합니다 .

  • resource_processor.ps1

    • resource_retriever.ps1에서 전달한 리소스를 처리합니다.

    • 사용할 사용자 지정된 프로세서를 결정하고 리소스를 전달합니다.

  • post_process.ps1

    • Post는 사용자 지정된 프로세서에서 생성된 출력을 처리하여 대상 구독에 배포할 준비를 합니다.

    • 대상 구독에 리소스를 배포하는 배포 코드를 생성합니다.

세 스크립트는 더 큰 유연성을 허용하기 위해 표준 방식으로 정보 흐름을 제어합니다. 예를 들어 추가 리소스에 대한 지원을 추가해도 코어 프로세서의 코드를 변경할 필요가 없습니다.

위에서 언급한 사용자 지정된 프로세서는 ps1 특정 유형의 리소스를 처리하는 방법을 지시하는 파일입니다. 사용자 지정된 프로세서의 이름은 항상 리소스의 형식 데이터를 사용하여 명명됩니다. 예를 들어 을 실행하는 $vm가상 머신 개체가 있다고 가정 $vm 합니다. 형식은 를 생성합니다Microsoft.Compute/virtualMachines. 즉, 가상 머신의 프로세서 이름은 이 virtualMachines_processor.ps1고, 핵심 프로세서가 사용할 사용자 지정된 프로세서를 결정하는 방식과 마찬가지로 이름이 리소스 메타데이터에 표시되는 것과 정확히 똑 같은 이름이어야 합니다.

사용자 지정된 프로세서는 중요한 정보를 결정하고 해당 정보를 리소스 메타데이터에서 꺼내는 방법을 지시하여 리소스를 복제하는 방법을 지시합니다. 그런 다음 사용자 지정된 프로세서는 추출된 모든 데이터를 가져와서 Azure Resource Manager 템플릿과 함께 사용하여 대상 구독에 리소스를 배포하는 매개 변수 파일을 생성합니다. 이 매개 변수 파일은 post_process.ps1 후 Parameter_Files 저장됩니다.

replicator 파일 구조에는 Standardized_ARM_Templates 폴더가 있습니다. 원본 환경에 따라 배포는 이러한 표준화된 Azure Resource Manager 템플릿 중 하나를 사용하거나 사용자 지정된 Azure Resource Manager 템플릿을 생성해야 합니다. 이 경우 사용자 지정된 프로세서는 Azure Resource Manager 템플릿 생성기를 호출해야 합니다. 앞에서 시작한 예제에서는 가상 머신에 대한 Azure Resource Manager 템플릿 생성기의 이름을 virtualMachines_ARM_Template_Generator.ps1. Azure Resource Manager 템플릿 생성기는 리소스의 메타데이터에 있는 정보를 기반으로 사용자 지정된 Azure Resource Manager 템플릿을 만듭니다. 예를 들어 가상 머신 리소스에 가용성 집합의 멤버임을 지정하는 메타데이터가 있는 경우 Azure Resource Manager 템플릿 생성기는 가상 머신이 속한 가용성 집합의 ID를 지정하는 코드를 사용하여 Azure Resource Manager 템플릿을 만듭니다. 이렇게 하면 가상 머신이 새 구독에 배포되면 배포 시 가용성 집합에 자동으로 추가됩니다. 이러한 사용자 지정된 Azure Resource Manager 템플릿은 Standardized_ARM_Templates 폴더 내에 있는 Custom_ARM_Templates 폴더에 저장됩니다. post_processor.ps1 배포가 표준화된 Azure Resource Manager 템플릿 또는 사용자 지정된 템플릿을 사용해야 하는지 여부를 결정하고 해당 배포 코드를 생성합니다.

스크립트post-process.ps1 매개 변수 파일을 정리하고 사용자가 새 리소스를 배포하는 데 사용할 스크립트를 만듭니다. 정리 단계에서 스크립트는 원본 구독 ID, 테넌트 ID 및 위치에 대한 모든 참조를 해당 대상 값으로 바꿉니다. 그런 다음 매개 변수 파일을 Parameter_Files 폴더에 출력합니다. 그런 다음 처리 중인 리소스가 사용자 지정된 Azure Resource Manager 템플릿을 사용하는지 여부를 확인하고 New-AzResourceGroupDeployment cmdlet을 활용하는 해당 배포 코드를 생성합니다. 그런 다음 배포 코드가 Deployment_Files 폴더에 저장된 DeployResources.ps1 파일에 추가됩니다. 마지막으로 스크립트는 리소스가 속한 리소스 그룹을 결정하고 DeployResourceGroups.ps1 스크립트를 확인하여 해당 리소스 그룹을 배포할 배포 코드가 이미 있는지 확인합니다. 그렇지 않으면 해당 스크립트에 코드를 추가하여 리소스 그룹을 배포합니다. 그렇지 않으면 아무 작업도 수행하지 않습니다.

동적 API 검색

이 도구에는 원본 구독에서 사용할 수 있는 최신 리소스 공급자 API 버전을 사용하여 대상 구독에 리소스를 배포할 수 있도록 동적 API 검색이 기본 제공됩니다.

그림 API 검색

resource_processor.ps1의 그림 API 검색

그러나 대상 구독의 리소스 공급자 API 버전이 원본 구독보다 오래되어 원본 구독에서 제공되는 버전을 지원하지 않을 가능성이 있습니다. 이 경우 배포가 실행될 때 오류가 발생합니다. 이 resolve 원본 구독의 리소스 공급자와 일치하도록 대상 구독의 리소스 공급자를 업데이트합니다.

병렬 배포

이 도구에는 parallel이라는 매개 변수가 필요합니다. 이 매개 변수는 검색된 리소스를 병렬로 배포해야 하는지 여부를 지정하는 부울 값을 사용합니다. 값이 true 로 설정된 경우 New-AzResourceGroupDeployment 에 대한 각 호출에는 -asJob 플래그가 있고 병렬 작업이 완료될 때까지 기다리는 코드 블록이 리소스 종류에 따라 리소스 배포 집합 사이에 추가됩니다. 다음 유형의 리소스를 배포하기 전에 한 유형의 모든 리소스가 모두 배포되었는지 확인합니다. 병렬 매개 변수 값이 false로 설정되면 리소스가 모두 직렬로 배포됩니다.

추가 리소스 종류 추가

새 리소스 종류를 추가하는 것은 간단합니다. 개발자는 사용자 지정된 프로세서와 Azure Resource Manager 템플릿 또는 Azure Resource Manager 템플릿 생성기를 만들어야 합니다. 이 작업이 완료되면 개발자는 $resourceType 매개 변수의 ValidateSet 및 resource_retriever.ps1$resourceTypes 배열에 리소스 형식을 추가해야 합니다. 리소스 종류를 $resourceTypes 배열에 추가할 때 올바른 순서로 추가해야 합니다. 배열의 순서에 따라 리소스가 배포되는 순서가 결정되므로 종속성을 염두에 두어야 합니다. 마지막으로 사용자 지정된 프로세서가 Azure Resource Manager 템플릿 생성기를 사용하는 경우post_process.ps1의 $customTypes 배열에 리소스 유형 이름을 추가해야 합니다.

Azure 구독 복제자 실행

Azure 구독 복제기(v3) 도구를 실행하려면 모든 매개 변수를 제공하여 resource_retriever.ps1 시작해야 합니다. resourceType 매개 변수에는 하나의 리소스 종류가 아닌 모두를 선택하는 옵션이 있습니다. 모두 를 선택하면 resource_retriever.ps1 배포가 실행될 때 종속 리소스가 먼저 배포되도록 모든 리소스를 순서대로 처리합니다. 예를 들어 가상 머신을 제대로 배포하려면 VNet이 있어야 하므로 VNet은 가상 머신 이전에 배포됩니다.

스크립트 실행이 완료되면 Deployment_Files, Parameter_FilesCustom_ARM_Templates 세 개의 새 폴더가 있습니다.

참고

생성된 스크립트를 실행하기 전에 올바른 환경을 설정하고 대상 구독(예: 새 Azure Stack Hub)에 로그인하고 작업 디렉터리를 Deployment_Files 폴더로 설정해야 합니다.

Deployment_Files DeployResourceGroups.ps1및 DeployResources.ps1 두 개의 파일을 보유합니다. DeployResourceGroups.ps1 실행하면 리소스 그룹이 배포됩니다. DeployResources.ps1 실행하면 처리된 모든 리소스가 배포됩니다. 도구가 리소스 유형으로 All 또는 Microsoft.Compute/virtualMachines 로 실행된 경우 DeployResources.ps1 모든 가상 머신을 만드는 데 사용할 가상 머신 관리자 암호를 입력하라는 메시지를 사용자에게 표시합니다.

예제

  1. 스크립트를 실행합니다.

    스크립트 실행

    참고

    PS instance 대한 원본 환경 및 구독 컨텍스트를 구성하는 것을 잊지 마세요.

  2. 새로 만든 폴더를 검토합니다.

    폴더 검토

  3. 컨텍스트를 대상 구독으로 설정하고 폴더를 Deployment_Files 변경하고 리소스 그룹을 배포한 다음(DeployResourceGroups.ps1 스크립트 실행) 리소스 배포를 시작합니다(DeployResources.ps1 스크립트 실행).

    배포 구성 및 시작

  4. 를 실행 Get-Job 하여 상태 검사. Get-Job | Receive-Job 결과를 반환합니다.

정리

replicatorV3 폴더 내에는 cleanup_generated_items.ps1 라는 파일이 있습니다. 이 파일은 Deployment_Files, Parameter_FilesCustom_ARM_Templates 폴더와 모든 내용을 제거합니다.

구독 복제자 작업

Azure 구독 복제자(v3)는 현재 다음 리소스 유형을 복제할 수 있습니다.

  • Microsoft.Compute/availabilitySets

  • Microsoft.Compute/virtualMachines

  • Microsoft.Network/loadBalancers

  • Microsoft.Network/networkSecurityGroups

  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/routeTables

  • Microsoft.Network/virtualNetworks

  • Microsoft.Network/virtualNetworkGateways

  • Microsoft.Storage/storageAccounts

All을 리소스 유형으로 사용하여 도구를 실행할 때 복제 및 배포할 때 다음 순서가 수행됩니다(아래에서는 모든 리소스의 구성이 복제됩니다., 즉 sku, 제안 등).

  • Microsoft.Network/virtualNetworks

    • 복제: - 모든 주소 공간 - 모든 서브넷
  • Microsoft.Network/virtualNetworkGateways

    • 복제: - 공용 IP 구성 - 서브넷 구성 - VPN 유형 - 게이트웨이 유형
  • Microsoft.Network/routeTables

  • Microsoft.Network/networkSecurityGroups

    • 복제: - 모든 보안 규칙 인바운드 및 아웃바운드
  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/loadBalancers

    • 복제: - 개인 IP 주소 - 공용 IP 주소 구성 - 서브넷 구성
  • Microsoft.Compute/availabilitySets

    • 복제: - 장애 도메인 수 - 업데이트 도메인 수
  • Microsoft.Storage/storageAccounts

  • Microsoft.Compute/virtualMachines

    • 복제:
      - 데이터 디스크(데이터 없음)
      - 가상 머신 크기
      -운영 체제
      - 진단 스토리지 계정 구성
      - 공용 IP 구성
      - 네트워크 인터페이스
      - 네트워크 인터페이스 개인 IP 주소
      - 네트워크 보안 그룹 구성
      - 가용성 집합 구성

참고

OS 디스크 및 데이터 디스크에 대한 관리 디스크만 만듭니다. 현재 스토리지 계정 사용에 대한 지원은 없습니다.

제한 사항

대상 구독의 리소스 공급자가 원본 구독에서 복제되는 모든 리소스 및 옵션을 지원하는 한 이 도구는 한 구독에서 다른 구독으로 리소스를 복제할 수 있습니다.

성공적인 복제를 보장하려면 대상 구독의 리소스 공급자 버전이 원본 구독의 버전과 일치하는지 확인합니다.

상업용 Azure에서 상업용 Azure로 또는 Azure Stack Hub 내의 한 구독에서 동일한 Azure Stack Hub 내의 다른 구독으로 복제하는 경우 스토리지 계정을 복제할 때 문제가 발생합니다. 이는 모든 스토리지 계정 이름이 모든 상업용 Azure 또는 Azure Stack Hub 지역/instance 모든 구독에서 고유해야 하는 스토리지 계정 명명 요구 사항 때문입니다. 스택이 별도의 지역/인스턴스이므로 여러 Azure Stack Hub 인스턴스에서 스토리지 계정을 복제하는 데 성공합니다.

다음 단계

Azure Stack Hub 네트워킹에 대한 차이점 및 고려 사항