Nasazení prostředků pomocí šablon ARM a Azure PowerShell

Tento článek vysvětluje, jak používat Azure PowerShell se šablonami Azure Resource Manager (šablony ARM) k nasazení prostředků do Azure. Pokud neznáte koncepty nasazení a správy řešení Azure, přečtěte si template – přehled nasazení.

Návod

Doporučujeme Bicep, protože nabízí stejné možnosti jako šablony ARM a syntaxe se snadněji používá. Další informace o nasazení prostředků pomocí Bicep a Azure PowerShell naleznete v Deploy resources with Bicep and Azure PowerShell.

Požadavky

K nasazení potřebujete šablonu. Pokud ho ještě nemáte, stáhněte a uložte šablonu example z úložiště šablon pro rychlý start Azure. Název místního souboru použitý v tomto článku je C:\MyTemplates\azuredeploy.json.

Musíte nainstalovat Azure PowerShell a připojit se k Azure:

Pokud nemáte nainstalovaný PowerShell, můžete použít Azure Cloud Shell. Další informace najdete v tématu Nasazení šablon ARM z Azure Cloud Shell.

Požadována oprávnění

Pokud chcete nasadit soubor Bicep nebo šablonu Azure Resource Manager (ARM), potřebujete přístup k zápisu k prostředkům, které nasazujete, a přístup ke všem operacím s typem prostředku Microsoft.Resources/deployments. Například k nasazení virtuálního počítače potřebujete oprávnění Microsoft.Compute/virtualMachines/write a Microsoft.Resources/deployments/*. 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ést přepínač ValidationLevel a určit, jak důkladně ARM během tohoto procesu šablonu Bicep ověřuje. Další informace najdete v tématu Příkazy co-kdyby.

Seznam rolí a oprávnění najdete v tématu Azure předdefinované role.

Obor nasazení

Nasazení 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.

Pro každý obor musí mít uživatel, který šablonu nasazuje, požadovaná oprávnění k vytváření prostředků.

Název nasazení

Při nasazování šablony ARM můžete nasazení pojmenovat. 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 se nasazení jmenovat 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.

$suffix = Get-Random -Maximum 1000
$deploymentName = "ExampleDeployment" + $suffix

Nebo přidejte hodnotu data.

$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="ExampleDeployment"+"$today"

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í místní šablony

Šablonu můžete nasadit z místního počítače nebo z externího úložiště. Tato část popisuje nasazení místní šablony.

Pokud nasazujete do skupiny prostředků, která neexistuje, vytvořte 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.

New-AzResourceGroup -Name ExampleGroup -Location "Central US"

Pokud chcete nasadit místní šablonu, použijte -TemplateFile parametr v příkazu nasazení. Následující příklad také ukazuje, jak nastavit hodnotu parametru, která pochází ze šablony.

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleGroup `
  -TemplateFile <path-to-template>

Dokončení nasazení může trvat několik minut.

Nasazení vzdálené šablony

Místo ukládání šablon ARM na místním počítači je můžete raději uložit do externího umístění. Šablony můžete ukládat do úložiště správy zdrojového kódu (například GitHub). Nebo je můžete uložit do účtu úložiště Azure pro sdílený přístup ve vaší organizaci.

Poznámka:

Pokud chcete nasadit šablonu nebo odkazovat na propojenou šablonu uloženou v privátním úložišti GitHub, přečtěte si vlastní řešení popsané v Vytvoření vlastní a zabezpečené nabídky Azure Portal. Můžete vytvořit funkci Azure, která přetáhne token GitHub z Azure Key Vault.

Pokud nasazujete do skupiny prostředků, která neexistuje, vytvořte 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.

New-AzResourceGroup -Name ExampleGroup -Location "Central US"

K nasazení externí šablony použijte parametr -TemplateUri.

New-AzResourceGroupDeployment `
  -Name remoteTemplateDeployment `
  -ResourceGroupName ExampleGroup `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json

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 QueryString k určení tokenu SAS:

New-AzResourceGroupDeployment `
  -Name linkedTemplateWithRelativePath `
  -ResourceGroupName "myResourceGroup" `
  -TemplateUri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" `
  -QueryString "$sasToken"

Další informace naleznete v tématu Použití relativní cesty pro propojené šablony.

Nasazení specifikace šablony

Místo nasazení místní nebo vzdálené šablony můžete vytvořit specifikaci template. Specifikace šablony je prostředek ve vašem Azure předplatném, které obsahuje šablonu ARM. Usnadňuje bezpečné sdílení šablony s uživateli ve vaší organizaci. K udělení přístupu ke specifikaci šablony použijete Azure řízení přístupu podle role (Azure RBAC). 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.

New-AzTemplateSpec `
  -Name storageSpec `
  -Version 1.0 `
  -ResourceGroupName templateSpecsRg `
  -Location westus2 `
  -TemplateJsonFile ./mainTemplate.json

Pak získejte ID specifikace šablony a nasaďte ho.

$id = (Get-AzTemplateSpec -Name storageSpec -ResourceGroupName templateSpecsRg -Version 1.0).Versions.Id

New-AzResourceGroupDeployment `
  -ResourceGroupName demoRG `
  -TemplateSpecId $id

Další informace najdete v tématu Azure Resource Manager specifikace šablon.

Náhled změn

Před nasazením šablony můžete zobrazit náhled změn, které šablona provede ve vašem prostředí. Pomocí operace "co kdyby" ověřte, zda šablona provede očekávané změny. What-if analýza také validuje šablonu na chyby.

Předání hodnot parametrů

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

Pokud chcete předat vložené parametry, zadejte názvy parametru pomocí New-AzResourceGroupDeployment příkazu. Pokud například chcete šabloně předat řetězec a pole, použijte:

$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile <path-to-template> `
  -exampleString "inline string" `
  -exampleArray $arrayParam

Pomocí parametru TemplateParameterObject můžete projít hashtable, která obsahuje parametry šablony.

$params = @{
  exampleString = "inline string"
  exampleArray = "value1", "value2"
}

New-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile <path-to-bicep> `
  -TemplateParameterObject $params

Můžete také získat obsah souboru a poskytnout ho jako vložený parametr.

$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile <path-to-template> `
  -exampleString $(Get-Content -Path c:\MyTemplates\stringcontent.txt -Raw) `
  -exampleArray $arrayParam

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.

Pokud potřebujete předat pole objektů, vytvořte v PowerShellu tabulky hash a přidejte je do pole. Toto pole předejte jako parametr během nasazování.

$hash1 = @{ Name = "firstSubnet"; AddressPrefix = "10.0.0.0/24"}
$hash2 = @{ Name = "secondSubnet"; AddressPrefix = "10.0.1.0/24"}
$subnetArray = $hash1, $hash2
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile <path-to-template> `
  -exampleArray $subnetArray

Soubory parametrů JSON

Místo předávání parametrů v podobě hodnot vložených do skriptu pro vás možná bude jednodušší použít soubor JSON, který obsahuje hodnoty parametrů. Soubor parametrů může být místní soubor nebo externí soubor s přístupným identifikátorem URI.

Další informace o souboru parametrů najdete v tématu Vytvoření souboru parametrů Resource Manager.

Pokud chcete předat místní soubor parametrů, použijte tento TemplateParameterFile parametr:

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile <path-to-template> `
  -TemplateParameterFile c:\MyTemplates\storage.parameters.json

Pokud chcete předat soubor externího parametru, použijte tento TemplateParameterUri parametr:

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json `
  -TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.parameters.json

Další informace o souboru parametrů najdete v tématu Vytvoření souboru parametrů Resource Manager.

soubory parametrů Bicep

Pomocí Azure PowerShell verze 10.4.0 nebo novější a Bicep CLI verze 0.22.6 nebo novější můžete nasadit soubor šablony ARM pomocí souboru parametrů Bicep. Příkaz using v souboru parametrů Bicep znamená, že není nutné použít přepínač -TemplateFile při specifikaci souboru parametrů pro přepínač -TemplateParameterFile.

Následující příklad ukazuje soubor parametrů s názvem storage.bicepparam. Soubor je ve stejném adresáři, ve kterém je příkaz spuštěn.

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateParameterFile storage.bicepparam

Další informace o souboru parametrů Bicep najdete v tématu soubor parametrů Bicep.

Další kroky