Rychlý start: Vytvoření a nasazení specifikace šablony
Článek
11/24/2021
9 min ke čtení
Je tato stránka užitečná?
V tomto článku
Tento rychlý start ukazuje, jak zabalit šablonu Azure Resource Manager (šablonu ARM) do specifikace šablony. Pak nasadíte specifikace této šablony. Specifikace šablony obsahuje šablonu ARM, která nasadí účet úložiště.
Požadavky
Účet Azure s aktivním předplatným. Vytvořte si účet zdarma.
Vytvoření šablony
Specifikace šablony se vytváří z místní šablony. Zkopírujte následující šablonu a uložte ji místně do souboru s názvem azuredeploy.json. Tento rychlý start předpokládá, že jste uložili do cesty c:\Templates\azuredeploy.json, ale můžete použít libovolnou cestu.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.4.1008.15138",
"templateHash": "104821603399126558"
}
},
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Premium_LRS",
"Premium_ZRS",
"Standard_GRS",
"Standard_GZRS",
"Standard_LRS",
"Standard_RAGRS",
"Standard_RAGZRS",
"Standard_ZRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"storageAccountName": {
"type": "string",
"defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "The name of the Storage Account"
}
}
},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[parameters('storageAccountName')]"
},
"storageAccountId": {
"type": "string",
"value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
}
}
}
Vytvoření specifikace šablony
Specifikace šablony je typ prostředku s názvem Microsoft.Resources/templateSpecs . Pokud chcete vytvořit specifikace šablony, použijte PowerShell, Azure CLI, portál nebo šablonu ARM.
Vytvořte novou skupinu prostředků, která bude obsahovat specifikace šablony.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
V této skupině prostředků vytvořte specifikace šablony. Zadejte novou specifikace šablony s názvem storageSpec .
New-AzTemplateSpec `
-Name storageSpec `
-Version "1.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\azuredeploy.json"
Vytvořte novou skupinu prostředků, která bude obsahovat specifikace šablony.
az group create \
--name templateSpecRG \
--location westus2
V této skupině prostředků vytvořte specifikace šablony. Zadejte novou specifikace šablony s názvem storageSpec .
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "c:\Templates\azuredeploy.json"
Přihlaste se k webu Azure Portal .
Vyhledejte specifikace šablon. Z dostupných možností vyberte Specifikace šablon.
Vyberte Importovat šablonu.
Vyberte ikonu složky.
Přejděte k místní šabloně, kterou jste uložili, a vyberte ji. Vyberte Otevřít .
Vyberte Importovat .
Zadejte následující hodnoty:
Název: Zadejte název specifikace šablony. Například storageSpec
Předplatné: Vyberte předplatné Azure použité k vytvoření specifikace šablony.
Skupina prostředků: Vyberte Vytvořit novou a pak zadejte název nové skupiny prostředků. Například templateSpecRG .
Umístění: : Vyberte umístění pro skupinu prostředků. Příklad: USA – západ 2 .
Verze: Zadejte verzi specifikace šablony. Použijte 1.0.
Vyberte Zkontrolovat a vytvořit .
Vyberte Vytvořit .
Poznámka
Místo použití šablony ARM doporučujeme k vytvoření specifikace šablony použít PowerShell nebo rozhraní příkazového řádku. Tyto nástroje automaticky převádí propojené šablony na artefakty připojené k hlavní šabloně. Pokud k vytvoření specifikace šablony použijete šablonu ARM, musíte tyto propojené šablony přidat ručně jako artefakty, což může být složité.
Pokud k vytvoření specifikace šablony použijete šablonu ARM, je šablona vložena do definice prostředku. V místní šabloně je potřeba provést několik změn. Zkopírujte následující šablonu a uložte ji místně jako azuredeploy.json.
Poznámka
Ve vložené šabloně musí být všechny výrazy šablony uvozeny druhou levou závorkou. Místo "[[ použijte "[ . Pole JSON stále používají jednu levou závorku.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2021-05-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
},
"tags": {},
"resources": [
{
"type": "versions",
"apiVersion": "2021-05-01",
"name": "1.0",
"location": "westus2",
"dependsOn": [ "storageSpec" ],
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {
"storageAccountName": "[[concat('store', uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[[variables('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "[[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[[variables('storageAccountName')]"
}
}
}
},
"tags": {}
}
]
}
],
"outputs": {}
}
K vytvoření nové skupiny prostředků použijte Azure CLI nebo PowerShell.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
az group create \
--name templateSpecRG \
--location westus2
Nasaďte šablonu pomocí Azure CLI nebo PowerShellu.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "c:\Templates\azuredeploy.json"
az deployment group create \
--name templateSpecRG \
--template-file "c:\Templates\azuredeploy.json"
Specifikace šablony nasazení
Pokud chcete nasadit specifikace šablony, použijte stejné příkazy nasazení, jako byste k nasazení šablony použít. Předejte ID prostředku specifikace šablony, kterou chcete nasadit.
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 specifikace šablony.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG
Parametry zadáte přesně tak, jak byste zadat pro šablonu ARM. Znovu nasaďte specifikace š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 Windows PowerShell.
Nasaďte specifikace šablony.
az deployment group create \
--resource-group storageRG \
--template-spec $id
Parametry zadáte přesně tak, jak byste zadat pro šablonu ARM. Znovu nasaďte specifikace šablony s parametrem pro typ účtu úložiště.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters storageAccountType='Standard_GRS'
Vyberte specifikace šablony, kterou jste vytvořili.
Vyberte Nasadit .
Zadejte následující hodnoty:
Předplatné: Vyberte předplatné Azure pro vytvoření prostředku.
Skupina prostředků: Vyberte Vytvořit novou a pak zadejte storageRG.
Storage typ účtu: vyberte Standard_GRS .
Vyberte Zkontrolovat a vytvořit .
Vyberte Vytvořit .
Zkopírujte následující šablonu a uložte ji místně do souboru s názvem storage.json.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '1.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
],
"outputs": {}
}
Pomocí Azure CLI nebo PowerShellu vytvořte novou skupinu prostředků pro účet úložiště.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
az group create \
--name storageRG \
--location westus2
Nasaďte šablonu pomocí Azure CLI nebo PowerShellu.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "c:\Templates\storage.json"
az deployment group create \
--name storageRG \
--template-file "c:\Templates\storage.json"
Udělení přístupu
Pokud chcete ostatním uživatelům ve vaší organizaci nechat nasazovat specifikace šablony, musíte jim udělit přístup pro čtení. Roli Čtenář můžete přiřadit skupině Azure AD pro skupinu prostředků, která obsahuje specifikace šablon, které chcete sdílet. Další informace najdete v tématu Kurz: Udělení skupinového přístupu k prostředkům Azure pomocí Azure PowerShell .
Aktualizace šablony
Předpokládejme, že jste ve specifikací šablony identifikovali změnu, kterou chcete v šabloně provést. Následující šablona je podobná vaší předchozí šabloně s tím rozdílem, že přidá předponu pro název účtu úložiště. Zkopírujte následující šablonu a aktualizujte soubor azuredeploy.json.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"namePrefix": {
"type": "string",
"maxLength": 11,
"defaultValue": "store",
"metadata": {
"description": "Prefix for storage account name"
}
}
},
"variables": {
"storageAccountName": "[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
}
}
}
Aktualizace verze specifikace šablony
Místo vytváření nové specifikace šablony pro upravenou šablonu přidejte novou verzi s názvem do specifikace existující šablony. Uživatelé mohou zvolit kterou z verzí k 2.0 nasazení.
Vytvořte novou verzi pro specifikaci šablony.
New-AzTemplateSpec `
-Name storageSpec `
-Version "2.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\azuredeploy.json"
Chcete-li nasadit novou verzi, Získejte ID prostředku pro danou 2.0 verzi.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
Nasaďte tuto verzi. Zadejte předponu názvu účtu úložiště.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-namePrefix "demoaccount"
Vytvořte novou verzi pro specifikaci šablony.
az ts create \
--name storageSpec \
--version "2.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "c:\Templates\azuredeploy.json"
Chcete-li nasadit novou verzi, Získejte ID prostředku pro danou 2.0 verzi.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "2.0" --query "id")
Nasaďte tuto verzi. Zadejte předponu názvu účtu úložiště.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters namePrefix='demoaccount'
Ve specifikaci šablony vyberte vytvořit novou verzi .
Pojmenujte novou verzi 2.0 a volitelně přidejte poznámky. Vyberte Upravit šablonu .
Nahraďte obsah šablony aktualizovanou šablonou. Vyberte zkontrolovat a uložit .
Vyberte Uložit změny .
Pokud chcete nasadit novou verzi, vyberte verze .
Pro verzi, kterou chcete nasadit, vyberte tři tečky a Nasaďte je.
Vyplňte pole jako při nasazování starší verze.
Vyberte Zkontrolovat a vytvořit .
Vyberte Vytvořit .
Znovu je nutné provést některé změny místní šablony, aby fungovaly se specifikacemi šablon. Zkopírujte následující šablonu a uložte ji místně jako azuredeploy. JSON.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2021-05-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
},
"tags": {},
"resources": [
{
"type": "versions",
"apiVersion": "2021-05-01",
"name": "2.0",
"location": "westus2",
"dependsOn": [ "storageSpec" ],
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"namePrefix": {
"type": "string",
"maxLength": 11,
"defaultValue": "store",
"metadata": {
"description": "Prefix for storage account name"
}
}
},
"variables": {
"storageAccountName": "[[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[[variables('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "[[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[[variables('storageAccountName')]"
}
}
}
},
"tags": {}
}
]
}
],
"outputs": {}
}
Pokud chcete přidat novou verzi do specifikace šablony, nasaďte šablonu pomocí Azure CLI nebo PowerShellu.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "c:\Templates\azuredeploy.json"
az deployment group create \
--name templateSpecRG \
--template-file "c:\Templates\azuredeploy.json"
Zkopírujte následující šablonu a uložte ji místně do souboru s názvem Storage. JSON .
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '2.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
],
"outputs": {}
}
Nasaďte šablonu pomocí Azure CLI nebo PowerShellu.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "c:\Templates\storage.json"
az deployment group create \
--name storageRG \
--template-file "c:\Templates\storage.json"
Vyčištění prostředků
Pokud chcete vyčistit prostředek, který jste nasadili v rámci tohoto rychlého startu, odstraňte obě skupiny prostředků, které jste vytvořili.
Na webu Azure Portal vyberte v nabídce nalevo Skupina prostředků.
Do pole filtrovat podle názvu zadejte název skupiny prostředků (templateSpecRG a storageRG).
Vyberte název skupiny prostředků.
V horní nabídce vyberte Odstranit skupinu prostředků.
Další kroky
Další informace o vytvoření specifikace šablony, která obsahuje propojené šablony, najdete v tématu Vytvoření šablony specifikace propojené šablony .