Az Azure Resource Manager (ARM) üzembehelyezési sablonjainak használata az Azure CLI-vel
Ez a cikk azt ismerteti, hogyan használhatja az Azure CLI-t Azure Resource Manager-sablonokkal (ARM-sablonokkal) az erőforrások Azure-ban való üzembe helyezéséhez. Ha nem ismeri az Azure-megoldások üzembe helyezésének és kezelésének alapelveit, tekintse meg a sablon üzembe helyezésének áttekintését.
Az üzembehelyezési parancsok módosultak az Azure CLI 2.2.0-s verziójában. A cikkben szereplő példákhoz az Azure CLI 2.20.0-s vagy újabb verziója szükséges.
A minta futtatásához telepítse az Azure CLI legújabb verzióját. Első lépésként futtassa a az login
parancsot, hogy kapcsolatot hozzon létre az Azure-ral.
Az Azure CLI-minták a bash
rendszerhéjhoz vannak megírva. A minta Windows PowerShellben vagy parancssorban való futtatásához előfordulhat, hogy módosítania kell a szkript elemeit.
Ha nincs telepítve az Azure CLI, használhatja az Azure Cloud Shellt. További információ: ARM-sablonok üzembe helyezése az Azure Cloud Shellből.
Tipp.
A Bicep használatát javasoljuk, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információ: Erőforrások üzembe helyezése a Bicep és az Azure CLI használatával.
Szükséges engedélyek
Bicep-fájl vagy ARM-sablon üzembe helyezéséhez írási joggal kell rendelkeznie az üzembe helyezett erőforrásokhoz, és hozzá kell férnie a Microsoft.Resources/deployments erőforrástípus összes műveletéhez. Egy virtuális gép üzembe helyezéséhez például szükség van rá és Microsoft.Resources/deployments/*
engedélyekreMicrosoft.Compute/virtualMachines/write
. A what-if műveletnek ugyanazok az engedélykövetelményei vannak.
A szerepkörök és engedélyek listáját megtalálja a Beépített Azure-szerepkörök című cikkben.
Üzembe helyezési hatókör
Az Azure üzembehelyezési sablonját 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.
Az erőforráscsoportban való üzembe helyezéshez használja az az deployment group create (Üzembe helyezési csoport létrehozása) parancsot:
az deployment group create --resource-group <resource-group-name> --template-file <path-to-template>
Előfizetésben való üzembe helyezéshez használja az az deployment sub create parancsot:
az deployment sub create --location <location> --template-file <path-to-template>
Az előfizetési szintű üzembe helyezésekkel kapcsolatos további információkért lásd : Erőforráscsoportok és erőforrások létrehozása az előfizetés szintjén.
Felügyeleti csoporton való üzembe helyezéshez használja az az deployment mg create parancsot:
az deployment mg create --location <location> --template-file <path-to-template>
A felügyeleti csoportszintű üzembe helyezésekkel kapcsolatos további információkért lásd : Erőforrások létrehozása a felügyeleti csoport szintjén.
A bérlőn való üzembe helyezéshez használja az az deployment tenant create (Üzembe helyezési bérlő létrehozása) parancsot:
az deployment tenant create --location <location> --template-file <path-to-template>
A bérlői szintű üzembe helyezésekkel kapcsolatos további információkért lásd : Erőforrások létrehozása bérlői szinten.
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 nem létező erőforráscsoportban helyezi üzembe az üzembe helyezést, 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 pontban.
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 paraméter értékének --template-file
Bicep-fájlnak vagy fájlnak .json
.jsonc
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ő .json
megjegyzéseket//
. 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.
Az Azure-beli ü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 olyan verziókövetési rendszer adattárában is, mint a GitHub. Tárolhatja azokat egy Azure-tárfiókban is, ahol megosztva érhető el a vállalat számára.
Feljegyzés
Ha sablont szeretne üzembe helyezni, vagy egy privát GitHub-adattárban tárolt csatolt sablonra szeretne hivatkozni, tekintse meg az Egyéni és biztonságos 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-jogkivonatot az Azure Key Vaultból.
Ha nem létező erőforráscsoportban helyezi üzembe az üzembe helyezést, 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 pontban.
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-beli üzembehelyezési sablon neve
ARM-sablon üzembe helyezésekor nevet adhat az Azure-beli üzembehelyezési sablonnak. Ez a név segíthet az üzembe helyezés lekérésében 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 üzemelő példányt, a rendszer hozzáad egy bejegyzést az erőforráscsoport üzembehelyezési előzményeihez az üzembe helyezé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. A még nem befejezett névvel rendelkező központi telepítéseket az utolsó üzembe helyezés váltja fel. Ha például egy olyan üzembe helyezést newStorage
futtat, amely egy névvel ellátott storage1
tárfiókot helyez üzembe, és ugyanakkor futtat egy másik, egy elnevezett storage2
tárfiókot üzembe helyező üzembe newStorage
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ű storage1
tárfiókot helyez üzembe, és közvetlenül a befejezése után futtat egy másik üzembe helyezést newStorage
, amely egy nevű storage2
tá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 storage1
tárfiókot helyez üzembe, és ugyanakkor futtat egy másik üzembe helyezést newStorage2
, amely egy elnevezett storage2
tá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 sablon-specifikációt. A sablon specifikációja egy erőforrás az Azure-előfizetésben, amely arm-sablont tartalmaz. Ez megkönnyíti a sablon biztonságos megosztását a szervezet felhasználóival. Az 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ókért tekintse meg az Azure Resource Manager-sablon specifikációit.
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 sztringet és tömböt szeretne átadni egy Bash-rendszerhéjban 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 windowsos parancssorral (CMD) vagy 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ékeket változóval is tartalmazhatja. 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 windowsos parancssorral (CMD) vagy PowerShell-lel használja, állítsa a változót egy JSON-sztringre. 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 az Azure CLI-vel.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters 'storage.parameters.json'
A paraméterfájlról a Resource Manager-paraméterfájl létrehozása című cikk nyújt további információkat.
Bicep-paraméterfájlok
Az Azure CLI 2.53.0-s vagy újabb verziójával és a Bicep CLI 0.22.6-os vagy újabb verziójával bicep-fájlokat helyezhet üzembe Egy Bicep-paraméterfájl használatával. using
A Bicep paraméterfájlban lévő utasítással nem szükséges megadni a --template-file
kapcsolót a kapcsolóHoz tartozó Bicep paraméterfájl --parameters
megadásakor. A kapcsolóval --template-file
együtt "Csak .bicep-sablon engedélyezett .bicepparam fájllal" hibaüzenet jelenik meg.
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 az Azure CLI-vel. A paraméterfájlról további információt a Resource Manager paraméterfájljának létrehozása című témakörben talál.
Megjegyzések és a kiterjesztett JSON-formátum
Stílus megjegyzéseket is felvehet //
a paraméterfájlba, de mellékelje .jsonc
a fájlt.
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 az Azure CLI-t a 2.3.0-s vagy újabb verzióval használja, a kapcsolóval többsoros sztringeket vagy megjegyzéseket tartalmazó --handle-extended-json-format
sablont helyezhet üzembe. Példa:
{
"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'))]"
],
Következő lépések
- Ha hiba esetén szeretne visszatérni egy sikeres üzembe helyezéshez, tekintse meg a sikeres üzembe helyezésre vonatkozó hiba visszaállítása című témakört.
- Az erőforráscsoportban található, de a sablonban nem definiált erőforrások kezelésének módjáról az Azure Resource Manager üzembe helyezési módjaiban olvashat.
- Ha szeretné megtudni, hogyan definiálhat paramétereket a sablonban, olvassa el az ARM-sablonok szerkezetének és szintaxisának ismertetése című témakört.
- A gyakori üzembehelyezési hibák elhárításával kapcsolatos tippekért tekintse meg az Azure Resource Managerrel kapcsolatos gyakori Azure-telepítési hibák hibaelhárítását.