Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje, jak pomocí Azure CLI s šablonami Azure Resource Manageru (šablony ARM) nasadit prostředky do Azure. Pokud neznáte koncepty nasazení a správy řešení Azure, prohlédněte si přehled nasazení šablon.
Příkazy nasazení se změnily v Azure CLI verze 2.2.0. Příklady v tomto článku vyžadují Azure CLI verze 2.20.0 nebo novější.
Pokud chcete tuto ukázku spustit, nainstalujte nejnovější verzi Azure CLI. Spuštěním příkazu az login vytvořte připojení k Azure.
Ukázky pro Azure CLI jsou napsané pro bash shell. Pokud chcete tuto ukázku spustit ve Windows PowerShellu nebo příkazovém řádku, budete možná muset změnit prvky skriptu.
Pokud nemáte nainstalované Azure CLI, můžete použít Azure Cloud Shell. Další informace najdete v tématu Nasazení šablon ARM z Azure Cloud Shellu.
Návod
Doporučujeme Bicep, protože nabízí stejné možnosti jako šablony ARM a syntaxe se snadněji používá. Další informace najdete v tématu Nasazení prostředků pomocí Bicep a Azure CLI.
Požadavky
Požadována oprávnění
Pokud chcete nasadit soubor Bicep nebo šablonu Azure Resource Manageru (ARM), potřebujete přístup k zápisu k prostředkům, které nasazujete, a přístup ke všem operacím s typem Microsoft.Resources/deployments prostředku. Pokud chcete například nasadit virtuální počítač, potřebujete Microsoft.Compute/virtualMachines/write a Microsoft.Resources/deployments/* oprávnění. Operace "co-kdyby" má stejné požadavky na oprávnění.
Azure CLI verze 2.76.0 nebo novější a Azure PowerShell verze 13.4.0 nebo novější zavádí přepínač ValidationLevel a zjistěte, jak důkladně ARM během tohoto procesu ověřuje šablonu Bicep. Další informace najdete v tématu Příkazy typu co by kdyby.
Seznam rolí a oprávnění najdete v tématu Předdefinované role Azure.
Obor nasazení
Šablonu nasazení Azure můžete cílit na skupinu prostředků, předplatné, skupinu pro správu nebo tenanta. V závislosti na rozsahu nasazení použijete různé příkazy.
K nasazení do skupiny prostředků použijte příkaz az deployment group create:
az deployment group create --resource-group <resource-group-name> --template-file <path-to-template>K nasazení do předplatného použijte az deployment sub create:
az deployment sub create --location <location> --template-file <path-to-template>Další informace o nasazeních na úrovni předplatného najdete v tématu Vytváření skupin prostředků a prostředků na úrovni předplatného.
K nasazení do skupiny pro správu použijte az deployment mg create:
az deployment mg create --location <location> --template-file <path-to-template>Další informace o nasazeních na úrovni skupiny pro správu najdete v tématu Vytváření prostředků na úrovni skupiny pro správu.
K nasazení do tenanta použijte příkaz az deployment tenant create:
az deployment tenant create --location <location> --template-file <path-to-template>Další informace o nasazeních na úrovni tenanta najdete v tématu Vytváření prostředků na úrovni tenanta.
Pro každý obor musí mít uživatel, který šablonu nasazuje, požadovaná oprávnění k vytváření prostředků.
Nasazení místní šablony
Šablonu ARM můžete nasadit z místního počítače nebo z externě uloženého úložiště. Tato část popisuje nasazení místní šablony.
Pokud nasazujete do neexistující skupiny prostředků, vytvořte tuto skupinu prostředků. Název skupiny prostředků může obsahovat pouze alfanumerické znaky, tečky, podtržítka, pomlčky a závorky. Může to být až 90 znaků. Název nemůže končit tečkou.
az group create --name ExampleGroup --location "Central US"
Pokud chcete nasadit místní šablonu, použijte --template-file parametr v příkazu nasazení. Následující příklad také ukazuje, jak nastavit hodnotu parametru.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file <path-to-template> \
--parameters storageAccountType=Standard_GRS
Hodnota parametru --template-file musí být soubor typu Bicep, .json nebo .jsonc. Přípona .jsonc souboru označuje, že soubor může obsahovat // komentáře ke stylu. Systém ARM přijímá // komentáře v .json souborech. Nezajímá se o příponu souboru. Další podrobnosti o komentářích a metadatech najdete v tématu Vysvětlení struktury a syntaxe šablon ARM.
Dokončení šablony nasazení Azure může trvat několik minut. Po dokončení se zobrazí zpráva, která obsahuje výsledek:
"provisioningState": "Succeeded",
Nasazení vzdálené šablony
Místo ukládání šablon ARM na místním počítači je možná budete chtít uložit do externího umístění. Šablony můžete uložit do úložiště pro správu zdrojového kódu (jako je GitHub). Nebo je můžete uložit do účtu úložiště v Azure, abyste k nim mohli v organizaci sdílet přístup.
Poznámka:
Pokud chcete nasadit šablonu nebo odkazovat na propojenou šablonu uloženou v privátním úložišti GitHubu, podívejte se na vlastní řešení popsané v tématu Vytvoření vlastní a zabezpečené nabídky webu Azure Portal. Můžete vytvořit funkci Azure, která stáhne token GitHubu ze služby Azure Key Vault.
Pokud nasazujete do neexistující skupiny prostředků, vytvořte tuto skupinu prostředků. Název skupiny prostředků může obsahovat pouze alfanumerické znaky, tečky, podtržítka, pomlčky a závorky. Může to být až 90 znaků. Název nemůže končit tečkou.
az group create --name ExampleGroup --location "Central US"
K nasazení externí šablony použijte parametr template-uri.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" \
--parameters storageAccountType=Standard_GRS
Předchozí příklad vyžaduje veřejně přístupný identifikátor URI pro šablonu, který funguje ve většině scénářů, protože vaše šablona by neměla obsahovat citlivá data. Pokud potřebujete zadat citlivá data (například heslo správce), předejte tuto hodnotu jako zabezpečený parametr. Pokud ale chcete spravovat přístup k šabloně, zvažte použití specifikací šablon.
Pokud chcete nasadit vzdálené propojené šablony s relativní cestou uloženou v účtu úložiště, použijte query-string k určení tokenu SAS:
az deployment group create \
--name linkedTemplateWithRelativePath \
--resource-group myResourceGroup \
--template-uri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" \
--query-string $sasToken
Další informace naleznete v tématu Použití relativní cesty pro propojené šablony.
Název šablony nasazení Azure
Při nasazování šablony ARM můžete šabloně nasazení Azure dát název. Tento název vám může pomoci načíst nasazení z historie nasazení. Pokud nezadáte název nasazení, použije se název souboru šablony. Pokud například nasadíte šablonu s názvem azuredeploy.json a nezadáte název nasazení, bude nasazení pojmenované azuredeploy.
Při každém spuštění nasazení se do historie nasazení skupiny prostředků přidá položka s názvem nasazení. Pokud spustíte jiné nasazení a dáte mu stejný název, nahradí se předchozí položka aktuálním nasazením. Pokud chcete zachovat jedinečné položky v historii nasazení, dejte každému nasazení jedinečný název.
Pokud chcete vytvořit jedinečný název, můžete přiřadit náhodné číslo.
deploymentName='ExampleDeployment'$RANDOM
Nebo přidejte hodnotu data.
deploymentName='ExampleDeployment'$(date +"%d-%b-%Y")
Pokud spustíte souběžná nasazení do stejné skupiny prostředků se stejným názvem nasazení, dokončí se pouze poslední nasazení. Všechna nasazení se stejným názvem, která nejsou dokončena, jsou nahrazena posledním nasazením. Pokud například spustíte nasazení s názvem newStorage , které nasadí účet úložiště s názvem storage1, a současně spustíte jiné nasazení, které nasadí účet úložiště s názvem newStoragestorage2, nasadíte pouze jeden účet úložiště. Výsledný účet úložiště má název storage2.
Pokud však spustíte nasazení s názvem newStorage , které nasadí účet úložiště s názvem storage1, a hned po jeho dokončení spustíte jiné nasazení, které nasadí účet úložiště s názvem newStoragestorage2, pak máte dva účty úložiště. Jeden má název storage1a druhý má název storage2. V historii nasazení ale máte jenom jednu položku.
Když pro každé nasazení zadáte jedinečný název, můžete je spustit souběžně bez konfliktu. Pokud spustíte nasazení s názvem newStorage1 , které nasadí účet úložiště s názvem storage1, a současně spustíte jiné nasazení, které nasadí účet úložiště s názvem newStorage2storage2, budete mít dva účty úložiště a dvě položky v historii nasazení.
Aby nedocházelo ke konfliktům se souběžnými nasazeními a k zajištění jedinečných položek v historii nasazení, dejte každému nasazení jedinečný název.
Nasazení specifikace šablony
Místo nasazení místní nebo vzdálené šablony můžete vytvořit specifikaci šablony. Specifikace šablony je prostředek ve vašem předplatném Azure, který obsahuje šablonu ARM. Usnadňuje bezpečné sdílení šablony s uživateli ve vaší organizaci. Pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělíte přístup ke specifikaci šablony. Tato funkce je aktuálně ve verzi Preview.
Následující příklady ukazují, jak vytvořit a nasadit specifikaci šablony.
Nejprve vytvořte specifikaci šablony zadáním šablony ARM.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "./mainTemplate.json"
Pak získejte ID specifikace šablony a nasaďte ho.
id = $(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
az deployment group create \
--resource-group demoRG \
--template-spec $id
Další informace najdete v tématu Specifikace šablon Azure Resource Manageru.
Náhled změn
Před nasazením šablony ARM můžete zobrazit náhled změn, které šablona provede ve vašem prostředí. Pomocí operace co-kdyby ověřte, že šablona provede očekávané změny. Simulace "Co kdyby" také ověří šablonu z hlediska chyb.
Parametry
K předání hodnot parametrů můžete použít vložené parametry nebo soubor parametrů. Soubor parametrů může být soubor parametrů Bicep nebo soubor parametrů JSON.
Vložené parametry
Chcete-li předat parametry inline, zadejte hodnoty v parameters. Pokud chcete například předat řetězec a pole šabloně v prostředí Bash, použijte:
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters exampleString='inline string' exampleArray='("value1", "value2")'
Pokud používáte Azure CLI s příkazovým řádkem Windows (CMD) nebo PowerShellem, předejte pole ve formátu: exampleArray="['value1','value2']"
Můžete také získat obsah souboru a poskytnout ho jako vložený parametr.
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json
Získání hodnoty parametru ze souboru je užitečné, když potřebujete zadat konfigurační hodnoty. Můžete například zadat hodnoty cloud-init pro virtuální počítač s Linuxem.
Formát arrayContent.json je:
[
"value1",
"value2"
]
K předání objektu, například k nastavení značek, použijte JSON. Šablona může například obsahovat parametr podobný tomuto:
"resourceTags": {
"type": "object",
"defaultValue": {
"Cost Center": "IT Department"
}
}
V tomto případě můžete předat řetězec JSON a nastavit parametr, jak je znázorněno v následujícím skriptu Bash:
tags='{"Owner":"Contoso","Cost Center":"2345-324"}'
az deployment group create --name addstorage --resource-group myResourceGroup \
--template-file $templateFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"
Kolem json, který chcete předat do objektu, použijte dvojité uvozovky.
Proměnnou můžete použít k zahrnutí hodnot parametrů. V Bash nastavte proměnnou na všechny hodnoty parametrů a přidejte ji do příkazu nasazení.
params="prefix=start suffix=end"
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters $params
Pokud ale používáte Azure CLI s příkazovým řádkem Windows (CMD) nebo PowerShellem, nastavte proměnnou na řetězec JSON. Odstraňte uvozovky: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }'.
Soubory parametrů JSON
Místo předávání parametrů jako vložených hodnot ve skriptu může být jednodušší použít soubor parametrů( .bicepparam soubor nebo soubor parametrů JSON), který obsahuje hodnoty parametrů. Soubor parametrů musí být místní soubor. Soubory externích parametrů se v Azure CLI nepodporují.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters 'storage.parameters.json'
Další informace o souboru parametrů najdete v tématu Vytvoření souboru parametrů Resource Manageru.
Soubory parametrů Bicep
Pomocí Azure CLI verze 2.53.0 nebo novější a bicep CLI verze 0.22.6 nebo novější můžete nasadit soubor Bicep pomocí souboru parametrů Bicep. S prohlášením using v souboru parametrů Bicep není nutné při určování souboru parametrů Bicep pro přepínač --template-file zadávat přepínač --parameters. Díky zahrnutí přepínače --template-file se zobrazí chyba: "Je povolen pouze soubor .bicep se souborem .bicepparam."
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--parameters storage.bicepparam
Soubor parametrů musí být místní soubor. Soubory externích parametrů se v Azure CLI nepodporují. Další informace o souboru parametrů naleznete v tématu Vytvoření souboru parametrů Resource Manageru.
Komentáře a rozšířený formát JSON
Do souboru parametrů můžete zahrnout // komentáře ke stylu, ale musíte ho pojmenovat s příponou .jsonc .
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters '@storage.parameters.jsonc'
Další podrobnosti o komentářích a metadatech najdete v tématu Vysvětlení struktury a syntaxe šablon ARM.
Pokud používáte Azure CLI s verzí 2.3.0 nebo starší, můžete pomocí přepínače nasadit šablonu s víceřádkovými řetězci nebo komentáři --handle-extended-json-format . Příklad:
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2025-04-01",
"name": "[variables('vmName')]", // to customize name, change it in variables
"location": "[
parameters('location')
]", //defaults to resource group location
/*
storage account and network interface
must be deployed first
*/
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
"[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
Další kroky
- Chcete-li se vrátit k úspěšnému nasazení po výskytu chyby, přečtěte si téma Vrácení při chybě na úspěšné nasazení.
- Pokud chcete určit, jak zpracovávat prostředky, které existují ve skupině prostředků, ale nejsou definované v šabloně, podívejte se na režimy nasazení Azure Resource Manageru.
- Informace o definování parametrů v šabloně najdete v tématu Vysvětlení struktury a syntaxe šablon ARM.
- Tipy k řešení běžných chyb nasazení najdete v tématu Řešení běžných chyb nasazení Azure pomocí Azure Resource Manageru.