Azure Resource Manager 사용하여 Azure Stack Hub용 템플릿 개발

앱을 개발할 때 Azure와 Azure Stack Hub 간에 템플릿 이식성을 갖는 것이 중요합니다. 이 문서에서는 Azure Resource Manager 템플릿을 개발하기 위한 고려 사항을 제공합니다. 이러한 템플릿을 사용하면 Azure Stack Hub 환경에 액세스하지 않고도 Azure에서 앱을 프로토타입으로 만들고 배포를 테스트할 수 있습니다.

리소스 공급자 가용성

배포하려는 템플릿은 Azure Stack Hub에서 이미 사용 가능하거나 미리 보기로 제공되는 Microsoft Azure 서비스만 사용해야 합니다.

공용 네임스페이스

Azure Stack Hub는 데이터 센터에서 호스트되므로 Azure 퍼블릭 클라우드와 서비스 엔드포인트 네임스페이스가 다릅니다. 따라서 Azure Stack Hub에 배포하려고 하면 Azure Resource Manager 템플릿에서 하드 코딩된 퍼블릭 엔드포인트가 실패합니다. 및 concatenate 함수를 사용하여 reference 서비스 엔드포인트를 동적으로 빌드하여 배포 중에 리소스 공급자에서 값을 검색할 수 있습니다. 예를 들어 템플릿에서 하드 코딩 blob.core.windows.net 하는 대신 primaryEndpoints.blob을 검색하여 osDisk.URI 엔드포인트를 동적으로 설정합니다.

"osDisk": {"name": "osdisk","vhd": {"uri":
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2015-06-15').primaryEndpoints.blob, variables('vmStorageAccountContainerName'),
 '/',variables('OSDiskName'),'.vhd')]"}}

API 버전 관리

Azure 서비스 버전은 Azure와 Azure Stack Hub 간에 다를 수 있습니다. 각 리소스에는 제공되는 기능을 정의하는 apiVersion 특성이 필요합니다. Azure Stack Hub에서 API 버전 호환성을 보장하기 위해 각 리소스 공급자에 대해 다음 API 버전이 유효합니다.

리소스 공급자 apiVersion
Compute 2015-06-15
네트워크 2015-06-15, 2015-05-01-preview
스토리지 2016-01-01, 2015-06-15, 2015-05-01-preview
KeyVault 2015-06-01
App Service 2015-08-01

템플릿 함수

Azure Resource Manager 함수는 동적 템플릿을 빌드하는 데 필요한 기능을 제공합니다. 예를 들어 다음과 같은 작업에 함수를 사용할 수 있습니다.

  • 문자열 연결 또는 트리밍
  • 다른 리소스의 값 참조
  • 리소스를 반복하여 여러 인스턴스를 배포합니다.

이러한 함수는 Azure Stack Hub에서 사용할 수 없습니다.

  • 건너뛰기
  • Take

리소스 위치

Azure Resource Manager 템플릿은 특성을 사용하여 location 배포 중에 리소스를 배치합니다. Azure에서 위치는 미국 서부 또는 남미와 같은 지역을 참조합니다. Azure Stack Hub에서는 Azure Stack Hub가 데이터 센터에 있기 때문에 위치가 다릅니다. Azure와 Azure Stack Hub 간에 템플릿을 전송할 수 있도록 하려면 개별 리소스를 배포할 때 리소스 그룹 위치를 참조해야 합니다. 를 사용하여 [resourceGroup().Location] 모든 리소스가 리소스 그룹 위치를 상속하도록 할 수 있습니다. 다음 코드는 스토리지 계정을 배포하는 동안 이 함수를 사용하는 예제입니다.

"resources": [
{
  "name": "[variables('storageAccountName')]",
  "type": "Microsoft.Storage/storageAccounts",
  "apiVersion": "[variables('apiVersionStorage')]",
  "location": "[resourceGroup().location]",
  "comments": "This storage account is used to store the VM disks",
  "properties": {
  "accountType": "Standard_LRS"
  }
}
]

다음 단계