중첩된 템플릿을 사용하여 DevTest Labs 환경 배포
중첩된 배포는 기본 템플릿 내에서 보조 ARM(Azure Resource Manager) 템플릿을 실행합니다. 이 문서에서는 Azure DevTest Labs 환경을 배포하기 위한 중첩 템플릿의 예를 보여 줍니다. DevTest Labs 환경에는 PaaS(Platform-as-a-Service) 리소스가 설치된 여러 IaaS(Infrastructure-as-a-Service) VM(가상 머신)이 포함되어 있습니다. ARM 템플릿을 사용하여 PaaS 리소스 및 VM을 프로비저닝할 수 있습니다.
배포를 대상이 지정된 목적별 템플릿 집합으로 분해하면 테스트, 재사용 및 가독성 면에서 이점이 제공됩니다. 코드 샘플을 포함하여 중첩된 템플릿에 대한 일반적인 정보는 Azure 리소스를 배포할 때 연결된 및 중첩된 템플릿 사용을 참조하세요.
Visual Studio를 사용하여 중첩된 템플릿 배포
Visual Studio의 Azure Resource Group 프로젝트 템플릿을 사용하면 ARM 템플릿을 쉽게 개발하고 디버그할 수 있습니다. 중첩된 템플릿을 기본 azuredeploy.json 템플릿 파일에 추가하면 Visual Studio에서 템플릿을 보다 유연하게 만들기 위해 다음 항목을 추가합니다.
- 보조 템플릿 및 매개 변수 파일이 있는 하위 폴더
- 기본 템플릿 파일의 변수 이름
- 두 개의 주요 매개 변수
_artifactsLocation
및_artifactsLocationSasToken
DevTest Labs에서는 랩에 링크하는 Git 리포지토리에 ARM 템플릿을 저장합니다. 연결된 리포지토리 템플릿 중 하나를 사용하여 새 환경을 만드는 경우 배포는 템플릿 파일을 랩의 Azure Storage 컨테이너에 복사합니다. 중첩된 템플릿 리소스를 리포지토리 및 기본 템플릿 파일에 추가하면 Visual Studio에서 _artifactsLocation
및 _artifactsLocationSasToken
값을 식별하고 하위 폴더를 스토리지 컨테이너에 복사하고 위치 및 SaS(공유 액세스 서명) 토큰을 매개 변수 파일에 삽입합니다.
중첩된 템플릿 폴더 구조
다음 템플릿 예에서 Git 리포지토리 폴더에는 중첩된 템플릿 파일 NestOne.json 및 NestOne.parameters.json이 있는 nestedtemplates 하위 폴더가 있습니다. azuredeploy.json 기본 템플릿 파일은 아티팩트 위치, 중첩된 템플릿 폴더 및 중첩된 템플릿 파일 이름을 사용하여 보조 템플릿에 대한 URI를 빌드합니다. 매개 변수 파일의 URI는 아티팩트 위치, 중첩된 템플릿 폴더 및 중첩된 템플릿 매개 변수 파일입니다. 기본 폴더에 중첩된 템플릿 하위 폴더를 더 추가할 수 있지만 하나의 중첩 수준에서만 가능합니다.
다음 스크린샷은 Visual Studio의 프로젝트 구조를 보여 줍니다.
중첩된 배포 예제
다음 예는 중첩된 배포를 위한 기본 azuredeploy.json ARM 템플릿 파일을 보여 줍니다.
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"_artifactsLocation": {
"type": "string"
},
"_artifactsLocationSasToken": {
"type": "securestring"
}},
"variables": {
"NestOneTemplateFolder": "nestedtemplates",
"NestOneTemplateFileName": "NestOne.json",
"NestOneTemplateParametersFileName": "NestOne.parameters.json"},
"resources": [
{
"name": "NestOne",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2016-09-01",
"dependsOn": [ ],
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
},
"parametersLink": {
"uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateParametersFileName'), parameters('_artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
}
}
}],
"outputs": {}
다음 단계
- DevTest Labs 환경에 대한 자세한 내용은 ARM 템플릿을 사용하여 DevTest Labs 환경 만들기를 참조하세요.
- 코드 샘플을 포함하여 Visual Studio Azure 리소스 그룹 프로젝트 템플릿 사용에 대한 자세한 내용은 Visual Studio를 통해 Azure 리소스 그룹 만들기 및 배포를 참조하세요.