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

Tento článek vysvětluje, jak pomocí rozhraní příkazového řádku Azure s Azure Resource Manager šablon (šablon ARM) nasadit vaše prostředky do Azure. Pokud nejste obeznámeni s koncepty nasazení a správy řešení Azure, přečtěte si téma Přehled nasazení šablony.

Příkazy nasazení změněné 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 rozhraní příkazového řádku Azure CLI. Spuštěním příkazu az login vytvořte připojení k Azure.

Ukázky pro rozhraní příkazového řádku Azure jsou zapsané pro bash prostředí. Pokud chcete tuto ukázku spustit ve Windows PowerShellu nebo na příkazovém řádku, možná budete muset změnit prvky skriptu.

Pokud nemáte nainstalované rozhraní příkazového řádku Azure CLI, můžete použít Azure Cloud Shell. Další informace najdete v tématu Nasazení šablon ARM z Azure Cloud Shell.

Rozsah 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 jiné příkazy.

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

Nasazení místní šablony

Šablonu můžete nasadit z místního počítače nebo z nějakého, který je uložen externě. Tato část popisuje nasazení místní šablony.

Pokud provádíte nasazení do skupiny prostředků, která neexistuje, vytvořte skupinu prostředků. Název skupiny prostředků může obsahovat jenom alfanumerické znaky, tečky, podtržítka, spojovní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í místní šablony 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

Dokončení nasazení může trvat několik minut. Po dokončení se zobrazí zpráva, která obsahuje výsledek:

"provisioningState": "Succeeded",

Nasadit vzdálenou šablonu

Místo uložení šablon ARM na místní počítač můžete chtít ukládat je 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, 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 provádíte nasazení do skupiny prostředků, která neexistuje, vytvořte skupinu prostředků. Název skupiny prostředků může obsahovat jenom alfanumerické znaky, tečky, podtržítka, spojovní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 pro šablonu veřejně přístupný identifikátor URI, který funguje ve většině scénářů, protože by šablona neměla obsahovat citlivá data. Pokud potřebujete zadat citlivá data (třeba 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 zadání 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 najdete v tématu použití relativní cesty pro propojené šablony.

Název nasazení

Při nasazování šablony ARM můžete dát nasazení název. Tento název vám může pomáhat s načtením nasazení z historie nasazení. Pokud název nasazení nezadáte, použije se název souboru šablony. Například pokud nasadíte šablonu s názvem azuredeploy.jsv a nezadáte název nasazení, nasazení se pojmenuje azuredeploy .

Pokaždé, když spustíte nasazení, do historie nasazení skupiny prostředků se přidá záznam s názvem nasazení. Pokud spustíte jiné nasazení a přiřadíte mu stejný název, bude předchozí položka nahrazena aktuálním nasazením. Pokud chcete zachovat jedinečné položky v historii nasazení, udělte každému nasazení jedinečný název.

Chcete-li 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í, bude dokončeno pouze poslední nasazení. Všechna nasazení se stejným názvem, která nebyla dokončena, budou 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 zároveň spustíte jiné nasazení s názvem newStorage , které nasadí účet úložiště s názvem storage2 , nasadíte jenom jeden účet úložiště. Výsledný účet úložiště je pojmenován 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 jiné nasazení s názvem newStorage , které nasadí účet úložiště s názvem storage2 , budete mít dva účty úložiště. Jedna má název storage1 a druhá má název storage2 . Ale v historii nasazení 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, newStorage1 které nasadí účet úložiště s názvem storage1 a zároveň spustíte jiné nasazení s názvem, newStorage2 které nasadí účet úložiště s názvem storage2 , budete mít dva účty úložiště a dvě položky v historii nasazení.

Aby nedocházelo ke konfliktům s souběžnými nasazeními a zajistili v historii nasazení jedinečné položky, udělte každé nasazení jedinečný název.

Nasadit specifikaci š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. K udělení přístupu ke specifikaci šablony použijte řízení přístupu na základě role Azure (Azure RBAC). Tato funkce je aktuálně ve verzi Preview.

Následující příklady ukazují, jak vytvořit a nasadit specifikace šablony.

Nejdřív vytvořte specifikaci šablony tím, že poskytnete šablonu ARM.

az ts create \
  --name storageSpec \
  --version "1.0" \
  --resource-group templateSpecRG \
  --location "westus2" \
  --template-file "./mainTemplate.json"

Pak Získejte ID pro specifikaci šablony a nasaďte ji.

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 Azure Resource Manager specifikace šablon.

Zobrazit náhled změn

Před nasazením šablony můžete zobrazit náhled změn, které šablona provede pro vaše prostředí. Pomocí operace citlivosti ověřte, že šablona provádí očekávané změny. Co když zároveň ověří chyby v šabloně.

Parametry

K předání hodnot parametrů můžete použít buď vložené parametry, nebo soubor parametrů.

Vložené parametry

Chcete-li předat vložené parametry, zadejte hodnoty v parameters . Například pro předání řetězce a pole do šablony 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 (CMD) nebo prostředím PowerShell pro Windows, předejte pole ve formátu: exampleArray="['value1','value2']" .

Obsah souboru můžete také získat 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é v případě, že potřebujete zadat konfigurační hodnoty. Můžete například zadat hodnoty Cloud-init pro virtuální počítač se systémem Linux.

arrayContent.jsve formátu:

[
    "value1",
    "value2"
]

Chcete-li předat objekt, například pro nastavení značek, použijte JSON. Vaše šablona může například obsahovat parametr, jako je tento:

    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Cost Center": "IT Department"
      }
    }

V tomto případě můžete předat řetězec JSON pro nastavení parametru, 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"

Použijte dvojité uvozovky kolem formátu JSON, který chcete předat objektu.

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ů musí být místní soubor. Soubory externích parametrů se v Azure CLI nepodporují.

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

Chcete-li předat místní soubor parametrů, použijte @ k určení místního souboru s názvem storage.parameters.jsv.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters '@storage.parameters.json'

Zpracovat rozšířený formát JSON

Pokud chcete nasadit šablonu s víceřádkovými řetězci nebo komentáři pomocí rozhraní příkazového řádku Azure s verzí 2.3.0 nebo starší, musíte použít --handle-extended-json-format přepínač. Příklad:

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-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