Azure Resource Manager (ARM) üzembehelyezési sablonok használata Azure CLI

Ez a cikk azt ismerteti, hogyan használhatja a Azure CLI Azure Resource Manager sablonokkal (ARM-sablonokkal) az erőforrások Azure való üzembe helyezéséhez. Ha nem ismeri a Azure-megoldások üzembe helyezésének és kezelésének alapelveit, tekintse meg a template üzembe helyezésének áttekintését.

Az üzembehelyezési parancsok Azure CLI 2.2.0-s verziójában módosultak. A cikkben szereplő példákhoz Azure CLI 2.20.0-s vagy újabb verzióra van szükség.

A minta futtatásához telepítse a Azure CLI. Első lépésként futtassa a az login parancsot, hogy kapcsolatot hozzon létre Azure.

Az Azure CLI minták a bash parancssorra vannak megírva. Ha ezt a mintát Windows PowerShellben vagy parancssorban szeretné futtatni, előfordulhat, hogy módosítania kell a szkript elemeit.

Ha nincs telepítve Azure CLI, használhatja a Azure Cloud Shell. További információ: A Azure Cloud Shell ARM-sablonok üzembe helyezése.

Tipp.

Javasoljuk Bicep, mert ugyanazokat a képességeket kínálja, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információ: Az erőforrások üzembe helyezése Bicep és Azure CLI.

Előfeltételek

Szükséges engedélyek

Egy Bicep fájl vagy Azure Resource Manager (ARM) sablon üzembe helyezéséhez írási hozzáférésre van szüksége az üzembe helyezendő erőforrásokhoz, és hozzá kell férnie az Microsoft.Resources/deployments erőforrástípus összes műveletéhez. Virtuális gép üzembe helyezéséhez például Microsoft.Compute/virtualMachines/write és Microsoft.Resources/deployments/* engedélyre van szükség. A what-if műveletnek ugyanazok az engedélykövetelményei vannak.

Azure CLI 2.76.0-s vagy újabb verzió és Azure PowerShell 13.4.0-s vagy újabb verzió az ValidationLevel kapcsolóval megállapíthatja, hogy az ARM milyen alaposan ellenőrzi a Bicep sablont a folyamat során. További információ: What-if parancsok

A szerepkörök és engedélyek listáját a Azure beépített szerepkörök című témakörben találja.

Üzembe helyezési hatókör

A Azure üzembehelyezési sablont egy erőforráscsoportra, előfizetésre, felügyeleti csoportra vagy bérlőre célozhatja. Az üzembe helyezés hatókörétől függően különböző parancsokat használ.

A sablont üzembe helyező felhasználónak minden hatókörhöz rendelkeznie kell az erőforrások létrehozásához szükséges engedélyekkel.

Helyi sablon üzembe helyezése

A helyi gépről vagy külsőleg tárolt ARM-sablont is üzembe helyezhet. Ez a szakasz egy helyi sablon üzembe helyezését ismerteti.

Ha olyan erőforráscsoportba kíván telepíteni, amely nem létezik, hozza létre az erőforráscsoportot. Az erőforráscsoport neve csak alfanumerikus karaktereket, pontokat, aláhúzásjeleket, kötőjeleket és zárójeleket tartalmazhat. Legfeljebb 90 karakter hosszúságú lehet. A név nem végződhet ponttal.

az group create --name ExampleGroup --location "Central US"

Helyi sablon üzembe helyezéséhez használja a --template-file paramétert az üzembe helyezési parancsban. Az alábbi példa azt is bemutatja, hogyan állíthat be paraméterértéket.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file <path-to-template> \
  --parameters storageAccountType=Standard_GRS

A --template-file paraméter értékének Bicep fájlnak vagy .json vagy .jsonc fájlnak kell lennie. A .jsonc fájlkiterjesztés azt jelzi, hogy a fájl // tartalmazhat stílus megjegyzéseket. Az ARM-rendszer elfogadja a fájlokban lévő // megjegyzéseket.json. Nem érdekli a fájlkiterjesztés. A megjegyzésekről és a metaadatokról további információt az ARM-sablonok szerkezetének és szintaxisának ismertetése című témakörben talál.

A Azure üzembehelyezési sablon végrehajtása eltarthat néhány percig. Amikor befejeződik, megjelenik egy üzenet, amely tartalmazza az eredményt:

"provisioningState": "Succeeded",

Távoli sablon üzembe helyezése

Ahelyett, hogy ARM-sablonokat tárolna a helyi gépen, érdemes lehet külső helyen tárolni őket. Sablonokat tárolhat egy forrásvezérlő-adattárban (például GitHub). Vagy tárolhatja őket egy Azure tárfiókban a szervezet megosztott hozzáféréséhez.

Megjegyzés

Egy privát GitHub-adattárban tárolt sablon üzembe helyezéséhez vagy csatolt sablonra való hivatkozáshoz tekintse meg a A Azure Portal-ajánlat létrehozása című témakörben dokumentált egyéni megoldást. Létrehozhat egy Azure függvényt, amely lekéri a GitHub tokent az Azure Key Vaultból.

Ha olyan erőforráscsoportba kíván telepíteni, amely nem létezik, hozza létre az erőforráscsoportot. Az erőforráscsoport neve csak alfanumerikus karaktereket, pontokat, aláhúzásjeleket, kötőjeleket és zárójeleket tartalmazhat. Legfeljebb 90 karakter hosszúságú lehet. A név nem végződhet ponttal.

az group create --name ExampleGroup --location "Central US"

Külső sablon üzembe helyezésére használja a template-uri paramétert.

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

Az előző példához nyilvánosan elérhető URI szükséges a sablonhoz, amely a legtöbb forgatókönyv esetében működik, mert a sablonnak nem szabad bizalmas adatokat tartalmaznia. Ha bizalmas adatokat (például rendszergazdai jelszót) kell megadnia, adja át ezt az értéket biztonságos paraméterként. Ha azonban kezelni szeretné a sablonhoz való hozzáférést, fontolja meg a sablon specifikációinak használatát.

A tárfiókban tárolt relatív elérési úttal rendelkező távoli csatolt sablonok üzembe helyezéséhez használja query-string az SAS-jogkivonatot:

az deployment group create \
  --name linkedTemplateWithRelativePath \
  --resource-group myResourceGroup \
  --template-uri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" \
  --query-string $sasToken

További információ: Relatív elérési út használata csatolt sablonokhoz.

Azure üzembehelyezési sablon neve

ARM-sablon üzembe helyezésekor nevet adhat a Azure üzembehelyezési sablonnak. Ez a név segíthet visszakeresni az üzembe helyezést az üzembe helyezési előzményekből. Ha nem adja meg az üzembe helyezés nevét, a rendszer a sablonfájl nevét használja. Ha például egy azuredeploy.json nevű sablont helyez üzembe, és nem ad meg üzembe helyezési nevet, az üzembe helyezés neve azuredeploy.

Minden alkalommal, amikor futtat egy telepítést, a rendszer hozzáad egy bejegyzést az erőforráscsoport telepítési előzményeihez a telepítés nevével. Ha egy másik üzembe helyezést futtat, és ugyanazt a nevet adja neki, a korábbi bejegyzést a rendszer lecseréli az aktuális üzembe helyezésre. Ha egyedi bejegyzéseket szeretne fenntartani az üzembe helyezési előzményekben, adjon egyedi nevet az egyes üzemelő példányoknak.

Egyedi név létrehozásához véletlenszerű számot rendelhet hozzá.

deploymentName='ExampleDeployment'$RANDOM

Vagy adjon hozzá egy dátumértéket.

deploymentName='ExampleDeployment'$(date +"%d-%b-%Y")

Ha ugyanabban az erőforráscsoportban futtat egyidejű központi telepítéseket ugyanazzal az üzembe helyezési névvel, csak az utolsó üzembe helyezés fejeződik be. Az azonos névvel rendelkező, még nem befejezett üzembe helyezéseket az utolsó telepítés váltja fel. Ha például egy olyan üzembe helyezést newStorage futtat, amely egy névvel ellátott storage1tárfiókot helyez üzembe, és ugyanakkor futtat egy másik, egy elnevezett newStoragetárfiókot üzembe helyező üzembe storage2 helyezést, akkor csak egy tárfiókot helyez üzembe. Az eredményként kapott tárfiók neve storage2.

Ha azonban egy olyan üzembe helyezést newStorage futtat, amely egy nevű storage1tárfiókot helyez üzembe, és közvetlenül a befejezése után futtat egy másik üzembe helyezést newStorage , amely egy nevű storage2tárfiókot helyez üzembe, akkor két tárfiókja van. Az egyik neve storage1, a másik neve pedig .storage2 Az üzembe helyezési előzményekben azonban csak egy bejegyzés szerepel.

Ha egyedi nevet ad meg az egyes üzemelő példányoknak, egyidejűleg, ütközés nélkül futtathatja őket. Ha egy olyan üzembe helyezést newStorage1 futtat, amely egy névvel ellátott storage1tárfiókot helyez üzembe, és ugyanakkor futtat egy másik üzembe helyezést newStorage2 , amely egy elnevezett storage2tárfiókot helyez üzembe, akkor két tárfiókja és két bejegyzése van az üzembe helyezési előzményekben.

Az egyidejű üzembe helyezésekkel való ütközések elkerülése és az üzembe helyezési előzmények egyedi bejegyzéseinek biztosítása érdekében adjon egyedi nevet minden üzembe helyezésnek.

Sablon specifikáció üzembe helyezése

Helyi vagy távoli sablon üzembe helyezése helyett létrehozhat egy template specifikációt. A sablon specifikációja egy erőforrás a Azure előfizetésben, amely arm-sablont tartalmaz. Ez megkönnyíti a sablon biztonságos megosztását a szervezet felhasználóival. A Azure szerepköralapú hozzáférés-vezérlés (Azure RBAC) használatával biztosít hozzáférést a sablon specifikációihoz. Ez a funkció jelenleg előzetes verzióban érhető el.

Az alábbi példák bemutatják, hogyan hozhat létre és helyezhet üzembe sablon-specifikációkat.

Először hozza létre a sablon specifikációját az ARM-sablon megadásával.

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

Ezután kérje le a sablon specifikációjának azonosítóját, és telepítse azt.

id = $(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")

az deployment group create \
  --resource-group demoRG \
  --template-spec $id

További információ: Azure Resource Manager sablon specifikációi.

Módosítások előnézete

Az ARM-sablon üzembe helyezése előtt megtekintheti a sablon által a környezetében végzett módosításokat. A lehetőségelemzési művelettel ellenőrizze, hogy a sablon végrehajtja-e a várt módosításokat. A What-if a sablont is ellenőrzi a hibák esetén.

Paraméterek

Paraméterértékek átadásához használhat beágyazott paramétereket vagy paraméterfájlokat. A paraméterfájl lehet Bicep paraméterfájl vagy JSON paraméterfájl.

Beágyazott paraméterek

Beágyazott paraméterek átadásához adja meg az értékeket a következőben parameters: . Ha például karakterláncot és tömböt szeretne átadni egy Bash shellben lévő sablonnak, használja a következőt:

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-template> \
  --parameters exampleString='inline string' exampleArray='("value1", "value2")'

Ha az Azure CLI-t a Windows parancssorral (CMD) vagy a PowerShell-lel használja, adja át a tömböt a következő formátumban: exampleArray="['value1','value2']".

A fájl tartalmát is lekérheti, és beágyazott paraméterként is megadható.

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-template> \
  --parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json

A paraméterértékek fájlból való lekérése akkor hasznos, ha konfigurációs értékeket kell megadnia. Megadhat például cloud-init értékeket egy Linux rendszerű virtuális géphez.

A arrayContent.json formátuma a következő:

[
  "value1",
  "value2"
]

Ha például címkéket szeretne megadni egy objektumnak, használja a JSON-t. Előfordulhat például, hogy a sablon tartalmaz egy ilyen paramétert:

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

Ebben az esetben átadhat egy JSON-sztringet a paraméter beállításához az alábbi Bash-szkriptben látható módon:

tags='{"Owner":"Contoso","Cost Center":"2345-324"}'
az deployment group create --name addstorage  --resource-group myResourceGroup \
--template-file $templateFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"

Használjon dupla idézőjeleket az objektumba átadni kívánt JSON körül.

A paraméterértékek tárolására változót használhat. A Bashben állítsa a változót az összes paraméterértékre, és adja hozzá az üzembe helyezési parancshoz.

params="prefix=start suffix=end"

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-template> \
  --parameters $params

Ha azonban az Azure CLI-t a Windows Parancssorban (CMD) vagy a PowerShell-lel használja, állítsa a változót egy JSON-adatláncra. Az idézőjelek feloldása: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }'.

JSON-paraméterfájlok

Ahelyett, hogy beágyazott értékekként adna át paramétereket a szkriptben, könnyebben használhat paraméterfájlt, akár egy fájlt, akár egy .bicepparam JSON paraméterfájlt, amely tartalmazza a paraméterértékeket. A paraméterfájlnak helyi fájlnak kell lennie. A külső paraméterfájlok nem támogatottak a Azure CLI.

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

További információ a paraméterfájlról: A paraméterfájl létrehozása Resource Manager.

Bicep paraméterfájlok

A Azure CLI 2.53.0-s vagy újabb verziójával és Bicep CLI 0.22.6-os vagy újabb verziójával egy Bicep paraméterfájl használatával helyezhet üzembe Bicep fájlt. A Bicep paraméterfájlban található using utasítással nem kell megadni a --template-file kapcsolót, amikor Bicep paraméterfájlt ad meg a --parameters kapcsolóhoz. A --template-file kapcsoló használata eredményezi az „Csak .bicep fájl engedélyezett .bicepparam fájllal” hibaüzenetet.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

A paraméterfájlnak helyi fájlnak kell lennie. A külső paraméterfájlok nem támogatottak a Azure CLI. További információ a paraméterfájlról: A Resource Manager paraméterfájl létrehozása.

Megjegyzések és a kiterjesztett JSON-formátum

Megjegyzéseket stílusban is elhelyezhet // a paraméterfájlban, de a fájl nevét a .jsonc kiterjesztéssel kell ellátni.

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

A megjegyzésekről és metaadatokról további információt az ARM-sablonok szerkezetének és szintaxisának ismertetése című témakörben talál.

Ha a 2.3.0-s vagy újabb verziójú Azure CLI használ, a --handle-extended-json-format kapcsolóval többsoros sztringeket vagy megjegyzéseket tartalmazó sablont helyezhet üzembe. Példa:

{
  "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'))]"
  ],

Következő lépések