템플릿 사양 만들기 및 게시
템플릿 사양을 만들고 게시하는 방법을 살펴보겠습니다.
템플릿 생성
템플릿 사양으로 사용할 템플릿을 만들려면 평소처럼 ARM 템플릿(Azure Resource Manager 템플릿)을 작성합니다. 매개 변수, 변수, 리소스 및 출력을 포함할 수 있습니다.
연결된 템플릿을 사용할 수 있으며, 이를 통해 배포의 일부를 별도의 파일에 정의할 수 있습니다. 템플릿 사양을 사용하는 경우 연결된 템플릿을 템플릿 사양에 포함하고 기본 템플릿에서 참조할 수 있습니다.
템플릿은 조직의 모든 사용자가 특히 해당 매개 변수에 대해 쉽게 이해하고 사용할 수 있어야 합니다. 명확하고 이해하기 쉬운 매개 변수 이름을 사용해야 합니다. 이 예제와 같이 매개 변수 속성 및 템플릿 메타데이터를 사용하여 매개 변수에 포함될 것으로 예상되는 값에 대한 정보를 제공합니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"environmentType": {
"type": "string",
"allowedValues": [
"Production",
"NonProduction"
],
"metadata": {
"description": "The type of the environment to deploy. This will determine the SKUs and cost of the resources."
}
},
"key": {
"type": "secureString",
"metadata": {
"description": "The secret key to use."
}
},
"location": {
"type": "string",
"metadata": {
"description": "The Azure region into which the resources should be deployed."
}
},
"sqlServerCount": {
"type": "int",
"maxValue": 5,
"metadata": {
"description": "The number of Azure SQL logical servers to create."
}
}
},
"resources": []
}
이 예제에서 템플릿 매개 변수는 , maxValue
및 description
속성을 사용하여 allowedValues
매개 변수의 용도와 해당 값 설정의 효과를 명확하게 합니다. 템플릿은 key
매개 변수에 비밀 데이터가 포함되어 있음을 나타내는 secureString
형식 또한 포함합니다.
템플릿은 조직의 모든 사용자가 특히 매개 변수에 대해 쉽게 이해하고 사용할 수 있어야 합니다. 명확하고 이해하기 쉬운 매개 변수 이름을 사용해야 합니다. 이 예제와 같이, 데코레이터 매개 변수를 사용하여 매개 변수에 포함될 것으로 예상되는 값에 대한 정보를 제공합니다.
@description('The type of the environment to deploy. This will determine the SKUs and cost of the resources.')
@allowed([
'Production'
'NonProduction'
])
param environmentType string
@secure()
@description('The secret key to use.')
param key string
@description('The Azure region into which the resources should be deployed.')
param location string
@description('The number of Azure SQL logical servers to create.')
@maxValue(5)
param sqlServerCount int
이 예제에서 템플릿 매개 변수는 , @maxValue
및 @description
데코레이터를 사용하여 @allowed
매개 변수의 용도와 해당 값 설정의 효과를 명확하게 합니다. 템플릿은 key
매개 변수에 비밀 데이터가 포함되어 있음을 나타내는 secure
데코레이터 또한 포함합니다.
누군가 Azure Portal를 사용하여 템플릿 사양을 배포하는 경우 포털은 다음을 수행합니다.
- 매개 변수 이름 및 설명을 표시합니다.
- 보안 매개 변수에 대한 텍스트 항목을 숨깁니다.
- 사용자가 정의한 허용되는 값, 길이 제한, 값 제한을 적용합니다.
이 스크린샷은 매개 변수 값의 항목을 보여줍니다.
사용자가 템플릿 사양을 사용하는 방법에 대해 생각하고 매개 변수가 명확하고 이해할 수 있는지 확인하는 것이 중요합니다.
Azure에 템플릿 사양 게시
템플릿을 작성한 후 배포를 위해 Azure에 템플릿을 제출하는 대신 템플릿 사양을 게시합니다.
Important
Bicep 파일을 템플릿 사양으로 게시하면 Bicep 코드가 JSON 템플릿으로 변환됩니다. Bicep 코드를 JSON으로 변환하는 프로세스는 Bicep 파일에서 일부 정보를 제거합니다. 예를 들어 주석, 리소스의 기호 이름 및 리소스를 정의하는 순서가 JSON에서는 누락되거나 다를 수 있습니다. 이는 Bicep 파일을 템플릿 사양으로 쉽게 게시하고 원래의 Bicep 파일(왕복이라고도 함)로 다시 가져올 수 없다는 의미입니다. 특히 템플릿 사양을 사용할 때 원래 Bicep 코드의 복사본을 Git와 같은 코드 리포지토리에 유지하는 것이 좋습니다.
템플릿 사양을 만들려면 New-AzTemplateSpec
cmdlet을 사용합니다. 다음 예제에서는 스토리지 계정 템플릿에 대한 템플릿 사양을 만드는 방법을 살펴봅니다.
New-AzTemplateSpec `
-Name StorageWithoutSAS `
-Location westus `
-DisplayName 'Storage account with SAS disabled' `
-Description 'This template spec creates a storage account, which is preconfigured to disable SAS authentication.' `
-Version '1.0' `
-TemplateFile main.bicep
New-AzTemplateSpec `
-Name StorageWithoutSAS `
-Location westus `
-DisplayName 'Storage account with SAS disabled' `
-Description 'This template spec creates a storage account, which is preconfigured to disable SAS authentication.' `
-Version '1.0' `
-TemplateFile azuredeploy.json
각 매개 변수를 살펴보겠습니다.
-Name
은(는) 공백을 포함할 수 없는 템플릿 사양의 리소스 이름입니다.-Location
은(는) 템플릿 사양 메타데이터를 만들어야 하는 위치입니다. 그러나 템플릿 사양의 배포는 모든 지역에서 가능합니다.-DisplayName
은(는) 사람이 읽을 수 있는 이름으로, 공백을 포함할 수 있습니다.-Description
은(는) 사람이 읽을 수 있는 설명으로, 템플릿 사양의 콘텐츠와 다른 사용자가 사용할 수 있는 경우에 대한 세부 정보를 제공하는 데 사용할 수 있습니다.-Version
는 템플릿 사양의 버전입니다. 이 모듈의 뒷부분에서 버전에 대해 알아봅니다.-TemplateFile
은(는) 템플릿 사양을 만들 ARM 템플릿의 패스입니다.
템플릿 사양을 만들려면 az ts create
명령을 사용합니다. 다음 예제에서는 스토리지 계정 템플릿에 대한 템플릿 사양을 만드는 방법을 살펴봅니다.
az ts create \
--name StorageWithoutSAS \
--location westus \
--display-name "Storage account with SAS disabled" \
--description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
--version 1.0 \
--template-file main.bicep
az ts create \
--name StorageWithoutSAS \
--location westus \
--display-name "Storage account with SAS disabled" \
--description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
--version 1.0 \
--template-file azuredeploy.json
각 인수를 살펴보겠습니다.
--name
은(는) 공백을 포함할 수 없는 템플릿 사양의 리소스 이름입니다.--location
은(는) 템플릿 사양 메타데이터를 만들어야 하는 위치입니다. 그러나 템플릿 사양의 배포는 모든 지역에서 가능합니다.--display-name
은(는) 사람이 읽을 수 있는 이름으로, 공백을 포함할 수 있습니다.--description
은(는) 사람이 읽을 수 있는 설명으로, 템플릿 사양의 콘텐츠와 다른 사용자가 사용할 수 있는 경우에 대한 세부 정보를 제공하는 데 사용할 수 있습니다.--version
는 템플릿 사양의 버전입니다. 이 모듈의 뒷부분에서 버전에 대해 알아봅니다.--template-file
은(는) 템플릿 사양을 만들 ARM 템플릿의 패스입니다.
팁
ARM 템플릿 내에서 템플릿 사양을 정의할 수도 있습니다! 템플릿 사양 자체가 Azure 리소스이므로 형식 Microsoft.Deployments/templateSpecs
을(를) 통해 리소스를 정의하는 템플릿을 배포할 수 있습니다.