Erőforrások üzembe helyezése ARM-sablonokkal és Azure PowerShell-lel

Ez a cikk azt ismerteti, hogyan használhatja az Azure PowerShellt 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.

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 PowerShell használatával.

Előfeltételek

Üzembe helyezéshez sablonra van szükség. Ha még nem rendelkezik ilyen sablonnal, töltsön le és mentsen egy példasablont az Azure Gyorsindítási sablonok adattárából. A cikkben használt helyi fájlnév: C:\MyTemplates\azuredeploy.json.

Telepítenie kell az Azure PowerShellt, és csatlakoznia kell az Azure-hoz:

Ha nincs telepítve a PowerShell, használhatja az Azure Cloud Shellt. További információ: ARM-sablonok üzembe helyezése az Azure Cloud Shellből.

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 üzembe helyezést 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.

Üzemelő példány neve

ARM-sablon üzembe helyezésekor nevet adhat az üzembe helyezésnek. 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 névvel ellátott azuredeploy.json sablont helyez üzembe, és nem ad meg üzembe helyezési nevet, az üzembe helyezés neve el lesz nevezve 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á.

$suffix = Get-Random -Maximum 1000
$deploymentName = "ExampleDeployment" + $suffix

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

$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="ExampleDeployment"+"$today"

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 storage1tárfiókot helyez üzembe, és ugyanakkor futtat egy másik, egy elnevezett storage2tá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ű 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.

Helyi sablon üzembe helyezése

A helyi gépről vagy külsőleg tárolt 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.

New-AzResourceGroup -Name ExampleGroup -Location "Central US"

Helyi sablon üzembe helyezéséhez használja a -TemplateFile paramétert az üzembe helyezési parancsban. Az alábbi példa azt is bemutatja, hogyan állíthat be egy paraméterértéket, amely a sablonból származik.

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleGroup `
  -TemplateFile <path-to-template>

Az üzembe helyezés végrehajtása több percet is igénybe vehet.

Távoli sablon üzembe helyezése

Ahelyett, hogy ARM-sablonokat tárol 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.

Megjegyzé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.

New-AzResourceGroup -Name ExampleGroup -Location "Central US"

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

New-AzResourceGroupDeployment `
  -Name remoteTemplateDeployment `
  -ResourceGroupName ExampleGroup `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json

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 QueryString az SAS-jogkivonatot:

New-AzResourceGroupDeployment `
  -Name linkedTemplateWithRelativePath `
  -ResourceGroupName "myResourceGroup" `
  -TemplateUri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" `
  -QueryString "$sasToken"

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

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.

New-AzTemplateSpec `
  -Name storageSpec `
  -Version 1.0 `
  -ResourceGroupName templateSpecsRg `
  -Location westus2 `
  -TemplateJsonFile ./mainTemplate.json

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

$id = (Get-AzTemplateSpec -Name storageSpec -ResourceGroupName templateSpecsRg -Version 1.0).Versions.Id

New-AzResourceGroupDeployment `
  -ResourceGroupName demoRG `
  -TemplateSpecId $id

További információkért tekintse meg az Azure Resource Manager-sablon specifikációit.

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

A 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éterértékek átadása

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 a paraméter nevét a New-AzResourceGroupDeployment paranccsal. Ha például egy sztringet és tömböt szeretne átadni egy sablonnak, használja a következőt:

$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile <path-to-template> `
  -exampleString "inline string" `
  -exampleArray $arrayParam

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

$arrayParam = "value1", "value2"
New-AzResourceGroupDeployment -ResourceGroupName testgroup `
  -TemplateFile <path-to-template> `
  -exampleString $(Get-Content -Path c:\MyTemplates\stringcontent.txt -Raw) `
  -exampleArray $arrayParam

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.

Ha objektumtömböt kell átadnia, hozzon létre kivonattáblákat a PowerShellben, és adja hozzá őket egy tömbhöz. Adja át a tömböt paraméterként az üzembe helyezés sorá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

JSON-paraméterfájlok

Ahelyett, hogy a paramétereket beágyazott értékekként adná át a szkriptben, egyszerűbbnek találhatja egy olyan JSON-fájl használatát, amely tartalmazza a paraméterértékeket. A paraméterfájl lehet egy helyi fájl vagy egy külső fájl, amely elérhető URI-val rendelkezik.

A paraméterfájlról a Resource Manager-paraméterfájl létrehozása című cikk nyújt további információkat.

Helyi paraméterfájl átadásához használja a következő paramétert TemplateParameterFile :

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile <path-to-template> `
  -TemplateParameterFile c:\MyTemplates\storage.parameters.json

Külső paraméterfájl átadásához használja a következő paramétert TemplateParameterUri :

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

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.

Bicep-paraméterfájlok

Az Azure PowerShell 10.4.0-s vagy újabb verziójával és a Bicep CLI 0.22.6-os vagy újabb verziójával egy Bicep-paraméterfájl használatával üzembe helyezhet egy ARM-sablonfájlt. using A Bicep paraméterfájlban lévő utasítással nem szükséges megadni a -TemplateFile kapcsolót a kapcsolóHoz tartozó Bicep paraméterfájl -TemplateParameterFile megadásakor.

Az alábbi példa egy storage.bicepparam nevű paraméterfájlt mutat be. A fájl ugyanabban a könyvtárban található, ahol a parancs fut.

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateParameterFile storage.bicepparam

A Bicep-paraméterek fájljáról további információt a Bicep paraméterfájlban talál.

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.
  • Az SAS-jogkivonatot igénylő sablon üzembe helyezésével kapcsolatos információkért lásd : Privát ARM-sablon üzembe helyezése SAS-jogkivonattal.