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

Ez a cikk azt ismerteti, hogyan használhatja a Azure PowerShell 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 sablonok üzembe helyezésének áttekintését.

Tipp

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

Előfeltételek

Az üzembe helyezéshez szüksége van egy sablonra. Ha még nem rendelkezik ilyen sablonnal, töltse 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 Azure PowerShell, és csatlakoznia kell az Azure-hoz:

Ha nincs telepítve a PowerShell, használhatja az Azure Cloud Shell. További információ: ARM-sablonok üzembe helyezése az Azure Cloud Shell-bó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 a szükséges Microsoft.Compute/virtualMachines/write engedélyekre és Microsoft.Resources/deployments/* engedélyekre. A lehetőségelemzési műveletre ugyanazok az engedélykövetelmények vonatkoznak.

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és hatóköre

Az üzembe helyezést megcélzhatja egy erőforráscsoportra, előfizetésre, felügyeleti csoportra vagy bérlőre. Az üzembe helyezés hatókörétől függően különböző parancsokat kell használnia.

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.

Üzembe helyezés neve

ARM-sablon üzembe helyezésekor nevet adhat az üzembe helyezésnek. Ez a név segíthet lekérni az üzemelő példányt 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 üzembe helyez egy nevű azuredeploy.json sablont, é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 jelenlegi üzemelő példány váltja fel. Ha egyedi bejegyzéseket szeretne fenntartani az üzembe helyezési előzményekben, adjon egyedi nevet minden üzemelő példánynak.

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 lesz befejezve. 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 üzemelő példányt newStorage futtat, amely egy nevű storage1tárfiókot helyez üzembe, és ezzel egy időben egy másik üzembe helyezést newStorage is futtat, amely egy nevű storage2tárfiókot helyez üzembe, 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ókkal rendelkezik. Az egyik neve storage1, a másik neve pedig .storage2 Az üzembe helyezési előzményekben azonban csak egy bejegyzés szerepel.

Ha minden üzemelő példányhoz egyedi nevet ad meg, egyidejűleg futtathatja őket ütközés nélkül. Ha egy olyan üzemelő példányt newStorage1 futtat, amely egy nevű storage1tárfiókot helyez üzembe, és ezzel egy időben egy másik, egy nevű storage2tárfiókot üzembe helyező üzemelő példányt newStorage2 futtat, 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 az egyes központi telepítéseknek.

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áscsoportba 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 az -TemplateFile üzembe helyezési parancs paraméterét. 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 Vault.

Ha nem létező erőforráscsoportba 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élda nyilvánosan elérhető URI-t igényel a sablonhoz, amely a legtöbb forgatókönyv esetében működik, mivel a sablonnak nem szabad bizalmas adatokat tartalmaznia. Ha bizalmas adatokat (például rendszergazdai jelszót) kell megadnia, adja meg 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.

Ha távoli csatolt sablonokat szeretne üzembe helyezni egy tárfiókban tárolt relatív elérési úttal, adja QueryString meg 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óinak üzembe helyezése

Helyi vagy távoli sablon üzembe helyezése helyett létrehozhat egy sablon specifikációját. A sablon specifikációja egy erőforrás az Azure-előfizetésben, amely egy 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ével (Azure RBAC) hozzáférést biztosíthat 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 helyezze üzembe.

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

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

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

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

A sablon üzembe helyezése előtt megtekintheti a sablon által a környezetben végrehajtott 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 lehetőségelemzés a sablont is ellenőrzi a hibákra vonatkozóan.

Paraméterértékek átadása

Paraméterértékek átadásához használhat beágyazott paramétereket vagy paraméterfájlokat.

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 adhatja meg.

$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

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 elérhető URI-val rendelkező külső fájl.

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

Következő lépések