Nasazení prostředků pomocí šablon ARM a rozhraní REST API azure Resource Manager
Tento článek vysvětluje, jak pomocí rozhraní AZURE Resource Manager REST API se šablonami Azure Resource Manager (šablony ARM) nasadit prostředky do Azure.
Šablonu můžete zahrnout do textu žádosti nebo odkaz na soubor. Při použití souboru to může být místní soubor nebo externí soubor, který je k dispozici prostřednictvím identifikátoru URI. Pokud je vaše šablona v účtu úložiště, můžete omezit přístup k šabloně a během nasazení poskytnout token sdíleného přístupového podpisu (SAS).
Požadovaná oprávnění
Pokud chcete nasadit soubor Bicep nebo šablonu ARM, musíte mít přístup k zápisu pro prostředky, které nasazujete, a přístup ke všem operacím s prostředky typu Microsoft.Resources/deployments. Například k nasazení virtuálního počítače potřebujete Microsoft.Compute/virtualMachines/write
oprávnění a Microsoft.Resources/deployments/*
. Operace citlivostní analýzy má stejné požadavky na oprávnění.
Seznam rolí a oprávnění najdete v tématu Předdefinované role Azure.
Obor nasazení
Nasazení můžete cílit na skupinu prostředků, předplatné Azure, skupinu pro správu nebo tenanta. V závislosti na rozsahu nasazení se používají různé příkazy.
Pokud chcete nasadit do skupiny prostředků, použijte Nasazení – Vytvořit. Žádost se odešle na:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
K nasazení do předplatného použijte Nasazení – Vytvořit v oboru předplatného. Žádost se odešle na:
PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
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 nasazení – vytvoření v oboru skupiny pro správu. Žádost se odešle na:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
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 nasazení – Vytvoření nebo aktualizace v oboru tenanta. Žádost se odešle na:
PUT https://management.azure.com/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Další informace o nasazeních na úrovni tenanta najdete v tématu Vytváření prostředků na úrovni tenanta.
Příklady v tomto článku používají nasazení skupin prostředků.
Nasazení pomocí rozhraní REST API
Nastavte běžné parametry a hlavičky, včetně ověřovacích tokenů.
Pokud nasazujete do skupiny prostředků, která neexistuje, vytvořte skupinu prostředků. Zadejte ID předplatného, název nové skupiny prostředků a umístění, které potřebujete pro své řešení. Další informace najdete v tématu Vytvoření skupiny prostředků.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>?api-version=2020-06-01
S textem požadavku, jako je:
{ "location": "West US", "tags": { "tagname1": "tagvalue1" } }
Před nasazením šablony si můžete zobrazit náhled změn, které šablona provede ve vašem prostředí. Pomocí operace citlivostní analýzy ověřte, že šablona provádí očekávané změny. Funkce What-if také ověřuje chyby v šabloně.
Pokud chcete nasadit šablonu, zadejte ID předplatného, název skupiny prostředků a název nasazení v identifikátoru URI požadavku.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2020-10-01
V textu požadavku zadejte odkaz na šablonu a soubor parametrů. Další informace o souboru parametrů najdete v tématu Vytvoření souboru parametrů Resource Manageru.
Všimněte si, že
mode
je nastavená na přírůstkové. Pokud chcete spustit úplné nasazení, nastavtemode
na Dokončeno. Při používání režimu dokončení buďte opatrní, protože můžete neúmyslně odstranit prostředky, které nejsou ve vaší šabloně.{ "properties": { "templateLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json", "contentVersion": "1.0.0.0" }, "parametersLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json", "contentVersion": "1.0.0.0" }, "mode": "Incremental" } }
Pokud chcete protokolovat obsah odpovědi, obsah požadavku nebo obojí, zahrňte
debugSetting
do žádosti.{ "properties": { "templateLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json", "contentVersion": "1.0.0.0" }, "parametersLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json", "contentVersion": "1.0.0.0" }, "mode": "Incremental", "debugSetting": { "detailLevel": "requestContent, responseContent" } } }
Účet úložiště můžete nastavit tak, aby používal token sdíleného přístupového podpisu (SAS). Další informace najdete v tématu Delegování přístupu pomocí sdíleného přístupového podpisu.
Pokud potřebujete zadat citlivou hodnotu parametru (například heslo), přidejte tuto hodnotu do trezoru klíčů. Načtěte trezor klíčů během nasazení, jak je znázorněno v předchozím příkladu. Další informace najdete v tématu Použití Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazení.
Místo propojení se soubory pro šablonu a parametry je můžete zahrnout do textu požadavku. Následující příklad ukazuje text požadavku se šablonou a vloženým parametrem:
{ "properties": { "mode": "Incremental", "template": { "$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": "[format('{0}standardsa', uniquestring(resourceGroup().id))]" }, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2022-09-01", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('storageAccountType')]" }, "kind": "StorageV2", "properties": {} } ], "outputs": { "storageAccountName": { "type": "string", "value": "[variables('storageAccountName')]" } } }, "parameters": { "location": { "value": "eastus2" } } } }
Pokud chcete zjistit stav nasazení šablony, použijte nasazení – Získat.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Nasazení s využitím ARMClient
ARMClient je jednoduchý nástroj příkazového řádku pro vyvolání rozhraní API azure Resource Manager. Pokud chcete nástroj nainstalovat, přečtěte si téma ARMClient.
Výpis předplatných:
armclient GET /subscriptions?api-version=2021-04-01
Zobrazení seznamu skupin prostředků:
armclient GET /subscriptions/<subscription-id>/resourceGroups?api-version=2021-04-01
Id předplatného> nahraďte< ID předplatného Azure.
Vytvoření skupiny prostředků v oblasti USA – střed :
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 "{location: 'central us', properties: {}}"
Případně můžete text vložit do souboru JSON s názvem CreateRg.json:
{
"location": "Central US",
"properties": { }
}
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 '@CreateRg.json'
Další informace najdete v tématu ARMClient: nástroj příkazového řádku pro rozhraní Api Azure.
Název nasazení
Nasazení můžete pojmenovat například ExampleDeployment
.
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 pojmenujete ho stejným názvem, 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. Nebo přidejte hodnotu data.
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á se nedokončila, se nahradí 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 další nasazení s názvem newStorage
, které nasadí účet úložiště s názvem storage2
, nasadíte pouze jeden účet úložiště. Výsledný účet úložiště má název storage2
.
Pokud ale 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 další nasazení s názvem newStorage
, které nasadí účet úložiště s názvem storage2
, máte dva účty úložiště. Jeden má název storage1
a 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 konfliktů. Pokud spustíte nasazení s názvem newStorage1
, které nasadí účet úložiště s názvem storage1
a současně spustíte další nasazení s názvem newStorage2
, které nasadí účet úložiště s názvem storage2
, budete mít v historii nasazení dva účty úložiště a dvě položky.
Abyste se vyhnuli konfliktům se souběžnými nasazeními a zajistili jedinečné položky v historii nasazení, dejte každému nasazení jedinečný název.
Další kroky
- Pokud se chcete vrátit k úspěšnému nasazení, když se zobrazí chyba, přečtěte si téma Vrácení zpět k chybě k úspěšnému nasazení.
- Informace o způsobu zpracování prostředků, které existují ve skupině prostředků, ale nejsou definované v šabloně, najdete v tématu Režimy nasazení Azure Resource Manager.
- Další informace o zpracování asynchronních operací REST najdete v tématu Sledování asynchronních operací Azure.
- Další informace o šablonách najdete v tématu Vysvětlení struktury a syntaxe šablon ARM.