Nasazení prostředků pomocí šablon ARM a Azure PowerShell
Tento článek vysvětluje, jak pomocí Azure PowerShell s Azure Resource Manager (šablonami ARM) nasadit prostředky do Azure. Pokud nejste obeznámeni s koncepty nasazování a správy řešení Azure, podívejte se na přehled nasazení šablon.
Požadavky
K nasazení potřebujete šablonu. Pokud ji ještě nemáte, stáhněte si a uložte si příklad šablony z úložiště šablon Azure pro rychlý start. Místní název souboru použitý v tomto článku je C:\MyTemplates\azuredeploy.json.
Je potřeba nainstalovat Azure PowerShell a připojit se k Azure:
- Nainstalujte Azure PowerShell rutiny na místní počítač. Další informace najdete v tématu Začínáme s Azure PowerShellem.
- Připojení do Azure pomocí Připojení-AZAccount. Pokud máte více předplatných Azure, možná budete muset také spustit Set-AzContext. Další informace najdete v tématu Použití několika předplatných Azure.
Pokud nemáte powershell nainstalovaný, můžete použít Azure Cloud Shell. Další informace najdete v tématu Nasazení šablon ARM z Azure Cloud Shell.
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.
K nasazení do skupiny prostředků použijte new-AzResourceGroupDeployment:
New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateFile <path-to-template>K nasazení do předplatného použijte rutinu New-AzSubscriptionDeployment, která je aliasem
New-AzDeploymentrutiny :New-AzSubscriptionDeployment -Location <location> -TemplateFile <path-to-template>Další informace o nasazeních na úrovni předplatného najdete v tématu Vytvoření skupin prostředků a prostředků na úrovni předplatného.
K nasazení do skupiny pro správu použijte rumen New-AzManagementGroupDeployment.
New-AzManagementGroupDeployment -Location <location> -TemplateFile <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 new-AzTenantDeployment.
New-AzTenantDeployment -Location <location> -TemplateFile <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 nasazující šablonu požadovaná oprávnění k vytváření prostředků.
Název nasazení
Při nasazování šablony ARM můžete nasazení dejte název. Tento název vám může pomoct 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 a nezadáte název azuredeploy.json nasazení, nasazení bude mít název azuredeploy .
Pokaždé, když spustíte 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í. Nasazení se stejným názvem, která se nedokončila, se nahradí posledním nasazením. Pokud například spustíte nasazení s názvem , které nasadí účet úložiště s názvem a zároveň spustíte další nasazení s názvem , které nasadí účet úložiště s názvem , nasadíte pouze newStorage storage1 jeden účet newStorage storage2 úložiště. Výsledný účet úložiště má název storage2 .
Pokud však spustíte nasazení s názvem , které nasadí účet úložiště s názvem , a ihned po jeho dokončení spustíte další nasazení s názvem , které nasadí účet úložiště s názvem , budete mít newStorage storage1 dva účty newStorage storage2 úložiště. Jedna má název storage1 a druhá má název storage2 . V historii nasazení ale máte jenom jednu položku.
Pokud 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 , které nasadí účet úložiště s názvem a zároveň spustíte další nasazení s názvem , které nasadí účet úložiště s názvem , pak máte dva účty úložiště a dvě položky v historii newStorage1 storage1 newStorage2 storage2 nasazení.
Pokud chcete zabránit konfliktům se souběžnými nasazeními a zajistit jedinečné položky 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 počítače. 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, spojovníky a závorky. Může mít až 90 znaků. Název nemůže končít 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 chtít ukládat v externím 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, která je uložená v soukromém úložišti GitHubu, přečtěte si vlastní řešení dokumentované na blogu MVP. Službu Azure Functions můžete nastavit jako proxy a vytvořit tak adresu URL potřebnou pro přístup k souboru šablony v soukromém úložišti GitHub.
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, spojovníky a závorky. Může mít až 90 znaků. Název nemůže končít 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 šablona by neměla obsahovat citlivá data. Pokud potřebujete zadat citlivá data (například heslo správce), předejte ji jako zabezpečený parametr. Pokud však chcete spravovat přístup k šabloně, zvažte použití specifikací šablony.
Pokud chcete nasadit vzdálené propojené šablony s relativní cestou uloženou v účtu úložiště, použijte QueryString k zadání tokenu SAS:
New-AzResourceGroupDeployment `
-Name linkedTemplateWithRelativePath `
-ResourceGroupName "myResourceGroup" `
-TemplateUri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" `
-QueryString "$sasToken"
Další informace najdete v tématu Použití relativní cesty pro propojené šablony.
Specifikace šablony nasazení
Místo nasazení místní nebo vzdálené šablony můžete vytvořit specifikace š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. K udělení přístupu ke specifikacím šablon použijete řízení přístupu na základě role v Azure (Azure RBAC). Tato funkce je aktuálně ve verzi Preview.
Následující příklady ukazují, jak vytvořit a nasadit specifikace šablony.
Nejprve vytvořte specifikace šablony tím, že poskytnete šablonu 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 Azure Resource Manager specifikace šablon.
Náhled změn
Před nasazením šablony si můžete zobrazit náhled změn, které šablona v prostředí změní. Pomocí operace what-if ověřte, že šablona provede požadované změny. What-if také ověří, jestli šablona obsahuje chyby.
Předání hodnot parametrů
K předání hodnot parametrů můžete použít buď vložené parametry, nebo soubor parametrů.
Vložené parametry
Pokud chcete předat vložené parametry, zadejte názvy parametru pomocí New-AzResourceGroupDeployment příkazu . Pokud například chcete do šablony předat řetězec a pole, použijte:
$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
-TemplateFile <path-to-template> `
-exampleString "inline string" `
-exampleArray $arrayParam
Můžete také získat obsah souboru a poskytnout tento obsah 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 hodnoty konfigurace. 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. Předejte toto pole 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ů
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 Manageru.
Pokud chcete předat místní soubor parametrů, použijte TemplateParameterFile parametr :
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
-TemplateFile <path-to-template> `
-TemplateParameterFile c:\MyTemplates\storage.parameters.json
Chcete-li předat externí soubor parametrů, použijte 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ší kroky
- Chcete-li se vrátit k úspěšnému nasazení, když se zobrazí chyba, přečtěte si téma vrácení chyby při úspěšném nasazení.
- Pokud chcete určit, jak se mají zpracovávat prostředky, které existují ve skupině prostředků, ale nejsou definované v šabloně, přečtěte si téma režimy nasazení Azure Resource Manager.
- Informace o definování parametrů v šabloně najdete v tématu pochopení struktury a syntaxe šablon ARM.
- Informace o nasazení šablony, která vyžaduje token SAS, najdete v tématu nasazení privátní šablony ARM pomocí tokenu SAS.