Tento rychlý start popisuje, jak vytvořit a nasadit specifikaci šablony pomocí souboru Bicep. Specifikace šablony se nasadí do skupiny prostředků, aby lidé ve vaší organizaci mohli nasazovat prostředky v Microsoft Azure. Specifikace šablon umožňují sdílet šablony nasazení bez nutnosti udělit uživatelům přístup ke změně souboru Bicep. Tento příklad specifikace šablony používá k nasazení účtu úložiště soubor Bicep.
Při vytváření specifikace šablony se soubor Bicep přeloží do formátu JSON (JavaScript Object Notation). Specifikace šablony používá k nasazení prostředků Azure JSON. V současné době nemůžete pomocí webu Microsoft Azure Portal importovat soubor Bicep a vytvořit prostředek specifikace šablony.
Požadavky
Vytvoření souboru Bicep
Vytvoříte specifikaci šablony z místního souboru Bicep. Zkopírujte následující ukázku a uložte ji do počítače jako main.bicep. Příklady používají cestu C:\templates\main.bicep. Můžete použít jinou cestu, ale musíte změnit příkazy.
Následující soubor Bicep se používá na kartách PowerShellu a rozhraní příkazového řádku . Karta Soubor Bicep používá jinou šablonu, která kombinuje Bicep a JSON k vytvoření a nasazení specifikace šablony.
@allowed([
'Premium_LRS'
'Premium_ZRS'
'Standard_GRS'
'Standard_GZRS'
'Standard_LRS'
'Standard_RAGRS'
'Standard_RAGZRS'
'Standard_ZRS'
])
@description('Storage account type.')
param storageAccountType string = 'Standard_LRS'
@description('Location for all resources.')
param location string = resourceGroup().location
var storageAccountName = 'storage${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountType
}
kind: 'StorageV2'
properties: {}
}
output storageAccountNameOutput string = storageAccount.name
Vytvoření specifikace šablony
Specifikace šablony je typ prostředku s názvem Microsoft.Resources/templateSpecs. Pokud chcete vytvořit specifikaci šablony, použijte Azure CLI, Azure PowerShell nebo soubor Bicep.
V tomto příkladu se používá název templateSpecRGskupiny prostředků . Můžete použít jiný název, ale musíte změnit příkazy.
Vytvořte novou skupinu prostředků, která bude obsahovat specifikaci šablony.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
Vytvořte specifikaci šablony v této skupině prostředků. Zadejte novou specifikaci šablony název storageSpec.
New-AzTemplateSpec `
-Name storageSpec `
-Version "1.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\templates\main.bicep"
Vytvořte novou skupinu prostředků, která bude obsahovat specifikaci šablony.
az group create \
--name templateSpecRG \
--location westus2
Vytvořte specifikaci šablony v této skupině prostředků. Zadejte novou specifikaci šablony název storageSpec.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location westus2 \
--template-file "C:\templates\main.bicep"
Můžete vytvořit specifikaci šablony se souborem Bicep, ale mainTemplate musí být ve formátu JSON. Šablona JSON nepoužívá standardní syntaxi JSON. Například neexistují žádné čárky konce řádku, dvojité uvozovky jsou nahrazeny jednoduchými uvozovkami a zpětné lomítka (\) se používají k řídicím jednoduchým uvozovkách ve výrazech.
Zkopírujte následující šablonu a uložte ji do počítače jako main.bicep.
param templateSpecName string = 'storageSpec'
param templateSpecVersionName string = '1.0'
@description('Location for all resources.')
param location string = resourceGroup().location
resource createTemplateSpec 'Microsoft.Resources/templateSpecs@2022-02-01' = {
name: templateSpecName
location: location
}
resource createTemplateSpecVersion 'Microsoft.Resources/templateSpecs/versions@2022-02-01' = {
parent: createTemplateSpec
name: templateSpecVersionName
location: location
properties: {
mainTemplate: {
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
'contentVersion': '1.0.0.0'
'metadata': {}
'parameters': {
'storageAccountType': {
'type': 'string'
'defaultValue': 'Standard_LRS'
'metadata': {
'description': 'Storage account type.'
}
'allowedValues': [
'Premium_LRS'
'Premium_ZRS'
'Standard_GRS'
'Standard_GZRS'
'Standard_LRS'
'Standard_RAGRS'
'Standard_RAGZRS'
'Standard_ZRS'
]
}
'location': {
'type': 'string'
'defaultValue': '[resourceGroup().location]'
'metadata': {
'description': 'Location for all resources.'
}
}
}
'variables': {
'storageAccountName': '[format(\'{0}{1}\', \'storage\', uniqueString(resourceGroup().id))]'
}
'resources': [
{
'type': 'Microsoft.Storage/storageAccounts'
'apiVersion': '2025-06-01'
'name': '[variables(\'storageAccountName\')]'
'location': '[parameters(\'location\')]'
'sku': {
'name': '[parameters(\'storageAccountType\')]'
}
'kind': 'StorageV2'
'properties': {}
}
]
'outputs': {
'storageAccountNameOutput': {
'type': 'string'
'value': '[variables(\'storageAccountName\')]'
}
}
}
}
}
K vytvoření nové skupiny prostředků použijte Azure PowerShell nebo Azure CLI.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
az group create \
--name templateSpecRG \
--location westus2
Vytvořte specifikaci šablony v této skupině prostředků. Název specifikace šablony StorageSpec a číslo 1.0 verze jsou parametry v souboru Bicep.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "C:\templates\main.bicep"
az deployment group create \
--resource-group templateSpecRG \
--template-file "C:\templates\main.bicep"
Nasazení specifikace šablony
Pomocí specifikace šablony nasaďte účet úložiště. V tomto příkladu se používá název storageRGskupiny prostředků . Můžete použít jiný název, ale musíte změnit příkazy.
Vytvořte skupinu prostředků, která bude obsahovat nový účet úložiště.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
Získejte ID prostředku specifikace šablony.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
Nasaďte specifikaci šablony.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG
Parametry zadáte přesně tak, jak byste zadali pro nasazení souboru Bicep. Znovu nasaďte specifikaci šablony s parametrem pro typ účtu úložiště.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-storageAccountType Standard_GRS
Vytvořte skupinu prostředků, která bude obsahovat nový účet úložiště.
az group create \
--name storageRG \
--location westus2
Získejte ID prostředku specifikace šablony.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
Poznámka:
Existuje známý problém se získáním ID specifikace šablony a jeho přiřazením k proměnné v prostředí Windows PowerShell.
Nasaďte specifikaci šablony.
az deployment group create \
--resource-group storageRG \
--template-spec $id
Parametry zadáte přesně tak, jak byste zadali pro nasazení souboru Bicep. Znovu nasaďte specifikaci šablony s parametrem pro typ účtu úložiště.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters storageAccountType="Standard_GRS"
Pokud chcete nasadit specifikaci šablony pomocí souboru Bicep, použijte modul. Modul odkazuje na existující specifikaci šablony. Další informace naleznete v souboru specifikace šablony.
Zkopírujte následující modul Bicep a uložte ho do počítače jako storage.bicep.
module deployTemplateSpec 'ts:<subscriptionId>/templateSpecRG/storageSpec:1.0' = {
name: 'deployVersion1'
}
Nahraďte <subscriptionId> v modulu. Id předplatného získáte pomocí Azure PowerShellu nebo Azure CLI.
(Get-AzContext).Subscription.Id
az account show --query "id" --output tsv
K vytvoření nové skupiny prostředků pro účet úložiště použijte Azure PowerShell nebo Azure CLI.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
az group create \
--name storageRG \
--location westus2
Nasaďte specifikaci šablony pomocí Azure PowerShellu nebo Azure CLI.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "C:\templates\storage.bicep"
az deployment group create \
--resource-group storageRG \
--template-file "C:\templates\storage.bicep"
Můžete přidat parametr a znovu nasadit specifikaci šablony s jiným typem účtu úložiště. Zkopírujte ukázku a nahraďte soubor storage.bicep . Pak znovu nasaďte nasazení specifikace šablony.
module deployTemplateSpec 'ts:<subscriptionId>/templateSpecRG/storageSpec:1.0' = {
name: 'deployVersion1'
params: {
storageAccountType: 'Standard_GRS'
}
}
Udělit přístup
Pokud chcete umožnit ostatním uživatelům ve vaší organizaci nasadit specifikaci šablony, musíte jim udělit přístup pro čtení. Roli Čtenář můžete přiřadit ke skupině prostředků Microsoft Entra, která obsahuje specifikace šablony, které chcete sdílet. Další informace najdete v tématu Kurz: Udělení přístupu ke skupinám k prostředkům Azure pomocí Azure PowerShellu.
Aktualizace souboru Bicep
Po vytvoření specifikace šablony jste se rozhodli aktualizovat soubor Bicep. Pokud chcete pokračovat s příklady na kartách PowerShellu nebo rozhraní příkazového řádku , zkopírujte ukázku a nahraďte soubor main.bicep .
storageNamePrefix Parametr určuje hodnotu předpony pro název účtu úložiště.
storageAccountName Proměnná zřetězí předponu s jedinečným řetězcem.
@allowed([
'Premium_LRS'
'Premium_ZRS'
'Standard_GRS'
'Standard_GZRS'
'Standard_LRS'
'Standard_RAGRS'
'Standard_RAGZRS'
'Standard_ZRS'
])
@description('Storage account type.')
param storageAccountType string = 'Standard_LRS'
@description('Location for all resources.')
param location string = resourceGroup().location
@maxLength(11)
@description('The storage account name prefix.')
param storageNamePrefix string = 'storage'
var storageAccountName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountType
}
kind: 'StorageV2'
properties: {}
}
output storageAccountNameOutput string = storageAccount.name
Aktualizace verze specifikace šablony
Místo vytvoření nové specifikace šablony pro revidovanou šablonu přidejte novou verzi pojmenovanou 2.0 ke stávající specifikaci šablony. Uživatelé se můžou rozhodnout pro nasazení jedné z verzí.
Vytvořte novou verzi specifikace šablony.
New-AzTemplateSpec `
-Name storageSpec `
-Version "2.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\templates\main.bicep"
Pokud chcete nasadit novou verzi, získejte ID prostředku pro verzi 2.0 .
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
Nasaďte novou verzi a použijte storageNamePrefix k zadání předpony pro název účtu úložiště.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-storageNamePrefix "demo"
Vytvořte novou verzi specifikace šablony.
az ts create \
--name storageSpec \
--version "2.0" \
--resource-group templateSpecRG \
--location westus2 \
--template-file "C:\templates\main.bicep"
Pokud chcete nasadit novou verzi, získejte ID prostředku pro verzi 2.0 .
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "2.0" --query "id")
Nasaďte novou verzi a použijte storageNamePrefix k zadání předpony pro název účtu úložiště.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters storageNamePrefix="demo"
Vytvořte novou verzi specifikace šablony. Zkopírujte ukázku a nahraďte soubor main.bicep .
storageNamePrefix Parametr určuje hodnotu předpony pro název účtu úložiště.
storageAccountName Proměnná zřetězí předponu s jedinečným řetězcem.
param templateSpecName string = 'storageSpec'
param templateSpecVersionName string = '2.0'
@description('Location for all resources.')
param location string = resourceGroup().location
resource createTemplateSpec 'Microsoft.Resources/templateSpecs@2022-02-01' = {
name: templateSpecName
location: location
}
resource createTemplateSpecVersion 'Microsoft.Resources/templateSpecs/versions@2022-02-01' = {
parent: createTemplateSpec
name: templateSpecVersionName
location: location
properties: {
mainTemplate: {
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
'contentVersion': '1.0.0.0'
'metadata': {}
'parameters': {
'storageAccountType': {
'type': 'string'
'defaultValue': 'Standard_LRS'
'metadata': {
'description': 'Storage account type.'
}
'allowedValues': [
'Premium_LRS'
'Premium_ZRS'
'Standard_GRS'
'Standard_GZRS'
'Standard_LRS'
'Standard_RAGRS'
'Standard_RAGZRS'
'Standard_ZRS'
]
}
'location': {
'type': 'string'
'defaultValue': '[resourceGroup().location]'
'metadata': {
'description': 'Location for all resources.'
}
}
'storageNamePrefix': {
'type': 'string'
'defaultValue': 'storage'
'metadata': {
'description': 'The storage account name prefix.'
}
'maxLength': 11
}
}
'variables': {
'storageAccountName': '[format(\'{0}{1}\', toLower(parameters(\'storageNamePrefix\')), uniqueString(resourceGroup().id))]'
}
'resources': [
{
'type': 'Microsoft.Storage/storageAccounts'
'apiVersion': '2025-06-01'
'name': '[variables(\'storageAccountName\')]'
'location': '[parameters(\'location\')]'
'sku': {
'name': '[parameters(\'storageAccountType\')]'
}
'kind': 'StorageV2'
'properties': {}
}
]
'outputs': {
'storageAccountNameOutput': {
'type': 'string'
'value': '[variables(\'storageAccountName\')]'
}
}
}
}
}
Pokud chcete přidat novou verzi do specifikace šablony, nasaďte šablonu pomocí Azure PowerShellu nebo Azure CLI.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "C:\templates\main.bicep"
az deployment group create \
--resource-group templateSpecRG \
--template-file "C:\templates\main.bicep"
Zkopírujte následující modul Bicep a uložte ho do počítače jako storage.bicep.
module deployTemplateSpec 'ts:<subscriptionId>/templateSpecRG/storageSpec:2.0' = {
name: 'deployVersion2'
params: {
storageNamePrefix: 'demo'
}
}
Nahraďte <subscriptionId> v modulu. Id předplatného získáte pomocí Azure PowerShellu nebo Azure CLI.
(Get-AzContext).Subscription.Id
az account show --query "id" --output tsv
Nasaďte specifikaci šablony pomocí Azure PowerShellu nebo Azure CLI.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "C:\templates\storage.bicep"
az deployment group create \
--resource-group storageRG \
--template-file "C:\templates\storage.bicep"
Vyčištění prostředků
Pokud chcete vyčistit prostředky, které jste nasadili v tomto rychlém startu, odstraňte obě skupiny prostředků. Odstraní se skupina prostředků, specifikace šablon a účty úložiště.
K odstranění skupin prostředků použijte Azure PowerShell nebo Azure CLI.
Remove-AzResourceGroup -Name "templateSpecRG"
Remove-AzResourceGroup -Name "storageRG"
az group delete --name templateSpecRG
az group delete --name storageRG
Další kroky