Создание и публикация спецификации шаблона
Рассмотрим, как создать и опубликовать спецификацию шаблона.
Создать шаблон
Чтобы создать шаблон для использования в качестве спецификации шаблона, необходимо написать шаблон Azure Resource Manager (шаблон ARM), как обычно. Можно включить параметры, переменные, ресурсы и выходные данные.
Можно использовать связанные шаблоны, которые позволяют определять части развертывания в отдельных файлах. При работе со спецификациями шаблонов, связанные шаблоны можно встраивать в спецификацию шаблона и ссылаться на них из основного шаблона.
Важно, чтобы ваш шаблон был прост для понимания, в частности его параметры, и использования любым сотрудником вашей организации. Используйте понятные имена параметров. Используйте свойства параметров и метаданные шаблона, чтобы предоставить информацию о значениях, которые должны включать параметры, как в следующем примере.
{
"$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": []
}
В этом примере параметры шаблона используют allowedValues
maxValue
свойства и description
свойства, чтобы определить, какие параметры предназначены и какие эффекты настройки их значений. В шаблон также включен тип secureString
, который указывает, что параметр key
содержит данные секрета.
Важно, чтобы ваш шаблон был прост для понимания, в частности его параметры, и использования любым сотрудником вашей организации. Используйте понятные имена параметров. Используйте декораторы параметров, чтобы предоставить информацию о значениях, которые должны быть включены в параметры, как в следующем примере.
@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
В этом примере параметры шаблона используют @allowed
атрибуты , @maxValue
а @description
также декораторы, чтобы определить, какие параметры предназначены и какие эффекты настройки их значений. Шаблон также включает декоратор secure
, указывающий, что параметр key
содержит данные секрета.
Когда кто-то развертывает спецификацию шаблона с помощью портала Azure, на портале происходит следующее.
- Отображается имя и описание параметра.
- Скрывается текст для защищенных параметров.
- Обеспечивает соблюдение допустимых значений, ограничений длины и определяемых значений.
На этом снимке экрана показана запись значений параметров.
Важно подумать о том, как пользователи используют спецификацию шаблона, и убедиться, что параметры понятны и понятны.
Публикация спецификации шаблона в Azure
После написания шаблона вместо отправки шаблона в Azure для развертывания вы публикуете спецификацию шаблона.
Важно!
При публикации файла Bicep как спецификации шаблона код Bicep преобразуется в шаблон JSON. В процессе преобразования кода Bicep в JSON часть данных из файла Bicep удаляется. Например, комментарии, символьные имена ресурсов и порядок, в котором определяются ресурсы, могут отсутствовать или отличаться в файле JSON. Это означает, что не получится легко опубликовать файл Bicep как спецификацию шаблона, а затем вернуть исходный файл Bicep (эта возможность называется многократным преобразованием). Рекомендуется хранить копию исходного кода Bicep в репозитории кода, например Git, особенно при работе со спецификациями шаблонов.
Чтобы создать спецификацию шаблона, используйте командлет New-AzTemplateSpec
. В следующем примере показано, как создать спецификацию шаблона для шаблона учетной записи хранения.
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
.