Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan használhatja az ajánlott eljárásokat az Azure Resource Manager-sablon (ARM-sablon) létrehozásakor. Ezek a javaslatok segítenek elkerülni a gyakori problémákat, amikor arm-sablont használnak egy megoldás üzembe helyezéséhez.
Sablonkorlátok
Korlátozza a sablon méretét 4 MB-ra, az egyes erőforrásdefiníciók pedig 1 MB-ra. A korlátok a sablon végleges állapotára vonatkoznak, miután iteratív erőforrásdefiníciókkal, valamint változók és paraméterek értékeivel bővült. A paraméterfájl mérete szintén 4 MB-ra van korlátozva. Ha a kérés teljes mérete túl nagy, 4 MB-nál kisebb méretű sablon- vagy paraméterfájllal kapcsolatos hibaüzenet jelenhet meg. Ha többet szeretne tudni arról, hogyan egyszerűsítheti a sablont a nagy kérések elkerülése érdekében, olvassa el a feladatméret túllépése esetén fellépő hibák elhárítása című témakört.
Emellett a következő korlátozások is érvényesek:
- 256 paraméter
- 512 változó
- 800 erőforrás (beleértve a másolások számát)
- 64 kimeneti érték
- 10 egyedi hely előfizetésenként/bérlőnként/felügyeleti csoportonkénti hatókörben
- 24 576 karakter egy sablonkifejezésben
Beágyazott sablon segítségével meghaladhat bizonyos sablonkorlátokat. További információ: Csatolt és beágyazott sablonok használata Az Azure-erőforrások üzembe helyezésekor. A paraméterek, változók vagy kimenetek számának csökkentéséhez egyesíthet több értéket egyetlen objektumba. További információkért tekintse meg az Objektumok paraméterként című témakört.
Erőforráscsoport
Amikor erőforrásokat helyez üzembe egy erőforráscsoportban, az erőforráscsoport az erőforrások metaadatait tárolja. A metaadatok tárolása az erőforráscsoport helyén történik.
Ha az erőforráscsoport régiója ideiglenesen nem érhető el, akkor nem frissítheti az erőforráscsoportban található erőforrásokat, mivel a metaadatok nem érhetők el. A más régiókban található erőforrások a várt módon fognak működni, de nem lesznek frissíthetők. A kockázat minimalizálása érdekében az erőforráscsoportot és az erőforrásokat helyezze ugyanabba a régióba.
Paraméterek
Az ebben a szakaszban található információk hasznosak lehetnek a paraméterek használatakor.
Általános javaslatok paraméterekhez
Minimalizálja a paraméterek használatát. Ehelyett olyan tulajdonságokhoz használjon változókat vagy literális értékeket, amelyeket nem kell megadni az üzembe helyezés során.
A paraméternevekhez használjon "camel case"-t.
A paraméterek olyan beállításokhoz használhatók, amelyek a környezettől függően, például az SKU, a méret vagy a kapacitás szerint változnak.
Az egyszerű azonosításhoz használjon paramétereket az olyan erőforrásnevekhez, amelyeket meg szeretne adni.
Adjon leírást minden paraméterről a metaadatokban.
"parameters": { "storageAccountType": { "type": "string", "metadata": { "description": "The type of the new storage account created to store the VM disks." } } }Alapértelmezett értékek meghatározása a nem érzékeny paraméterekhez. Az alapértelmezett érték megadásával egyszerűbb üzembe helyezni a sablont, és a sablon felhasználói láthatnak egy példát egy megfelelő értékre. Egy paraméter alapértelmezett értékének érvényesnek kell lennie az alapértelmezett üzembe helyezési konfigurációban szereplő összes felhasználóra.
"parameters": { "storageAccountType": { "type": "string", "defaultValue": "Standard_GRS", "metadata": { "description": "The type of the new storage account created to store the VM disks." } } }Opcionális paraméter megadásához ne használjon üres sztringet alapértelmezett értékként. Ehelyett használjon literális értéket vagy nyelvi kifejezést egy érték létrehozásához.
"storageAccountName": { "type": "string", "defaultValue": "[concat('storage', uniqueString(resourceGroup().id))]", "metadata": { "description": "Name of the storage account" } }Használja a
allowedValuestakarékosan. Csak akkor használja, ha meg kell győződnie arról, hogy bizonyos értékek nem szerepelnek az engedélyezett beállításokban. Ha túl széles körben használja aallowedValues-t, megakadályozhatja az érvényes telepítéseket, ha nem tartja naprakészen a listáját.Ha a sablon egyik paraméterneve megegyezik a PowerShell üzembe helyezési parancsának egyik paraméterével, a Resource Manager feloldja ezt az elnevezési ütközést, ha hozzáadja a FromTemplate postfixet a sablonparaméterhez. Ha például egy ResourceGroupName nevű paramétert tartalmaz a sablonban, az ütközik a New-AzResourceGroupDeployment parancsmag ResourceGroupName paraméterével. Az üzembe helyezés során a rendszer kérni fogja, hogy adjon meg egy értéket a ResourceGroupNameFromTemplate számára.
Biztonsági javaslatok paraméterekhez
Mindig használjon paramétereket a felhasználónevekhez és jelszavakhoz (vagy titkos kódokhoz).
Használja a
securestringcímet minden jelszó és titok esetében. Ha bizalmas adatokat ad át egy JSON-objektumban, használja a típustsecureObject. A biztonságos sztringgel vagy biztonságos objektumtípusokkal rendelkező sablonparaméterek nem olvashatók be az erőforrás üzembe helyezése után."parameters": { "secretValue": { "type": "securestring", "metadata": { "description": "The value of the secret to store in the vault." } } }Ne adjon meg alapértelmezett értékeket a felhasználónevekhez, jelszavakhoz vagy bármilyen típust
secureStringigénylő értékhez.Ne adjon meg alapértelmezett értékeket olyan tulajdonságokhoz, amelyek növelik az alkalmazás támadási felületét.
Helyjavaslatok paraméterekhez
Paraméterrel adja meg az erőforrások helyét, és állítsa az alapértelmezett értéket a következőre
resourceGroup().location: . Helyparaméter megadása lehetővé teszi a sablon felhasználói számára, hogy megadják azt a helyet, ahol engedéllyel rendelkeznek az erőforrások üzembe helyezésére."parameters": { "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "The location in which the resources should be deployed." } } }Ne adja meg
allowedValuesa helyparamétert. Előfordulhat, hogy a megadott helyek nem minden felhőben érhetők el.Használja a helyparaméter értékét olyan erőforrásokhoz, amelyek valószínűleg ugyanazon a helyen találhatók. Ez a módszer minimálisra csökkenti, hogy a felhasználók hányszor kérnek helyinformációt.
Olyan erőforrások esetén, amelyek nem minden helyen érhetők el, használjon egy külön paramétert, vagy adjon meg egy literális helyértéket.
Változók
A változók használatakor az alábbi információk hasznosak lehetnek:
Használjon camel case-t a változónevekhez.
Használjon változókat olyan értékekhez, amelyeket többször kell használnia egy sablonban. Ha egy értéket csak egyszer használ, a kemény kóddal kódolt érték megkönnyíti a sablon olvasását.
A sablonfüggvények összetett elrendezéséből létrehozott értékekhez használjon változókat. A sablon könnyebben olvasható, ha az összetett kifejezés csak változókban jelenik meg.
Nem használhatja a referencia függvényt a
variablessablon szakaszában. Areferencefüggvény az erőforrás futtatókörnyezeti állapotából nyeri az értékét. A változók azonban a sablon kezdeti elemzése során feloldódnak. Olyan értékeket hozhat létre, amelyek areferencefüggvényt közvetlenül aresourcesvagy aoutputssablon szakaszában igénylik.Tartalmazzon változókat az erőforrásnevekhez, amelyeknek egyedinek kell lenniük.
A változók másolási ciklusával JSON-objektumok ismétlődő mintáját hozhatja létre.
Távolítsa el a nem használt változókat.
API-verzió
Állítsa be a apiVersion tulajdonságot az erőforrástípus keményen kódolt API-verziójára. Új sablon létrehozásakor javasoljuk, hogy egy erőforrástípushoz a legújabb API-verziót használja. A rendelkezésre álló értékek meghatározásához tekintse meg a sablonreferenciát.
Ha a sablon a várt módon működik, javasoljuk, hogy továbbra is ugyanazt az API-verziót használja. Ugyanannak az API-verziónak a használatával nem kell aggódnia a későbbi verziókban esetleg bevezetett kompatibilitástörő változások miatt.
Ne használjon paramétert az API-verzióhoz. Az erőforrás tulajdonságai és értékei API-verziónként eltérőek lehetnek. A kódszerkesztő intelliSense nem tudja meghatározni a megfelelő sémát, ha az API-verzió paraméterre van állítva. Ha olyan API-verziót ad át, amely nem felel meg a sablon tulajdonságainak, az üzembe helyezés sikertelen lesz.
Ne használjon változókat az API-verzióhoz.
Erőforrás-függőségek
Amikor eldönti, hogy milyen függőségeket szeretne beállítani, használja az alábbi irányelveket:
A
referencefüggvény használatával és az erőforrás nevének megadásával implicit függőséget állíthat be olyan erőforrások között, amelyeknek meg kell osztaniuk egy tulajdonságot. Ne adjon hozzá explicitdependsOnelemet, ha már definiált implicit függőséget. Ez a megközelítés csökkenti a szükségtelen függőségek kockázatát. Az implicit függőség beállítására példaként tekintse meg a referencia- és listafüggvényeket.Állítsa be úgy a gyermek forrást, hogy függő legyen a szülő forrástól.
A feltételelemre beállított
falseerőforrások automatikusan törlődnek a függőségi sorrendből. Állítsa be a függőségeket úgy, mintha az erőforrás mindig üzembe lett volna helyezve.Hagyjuk, hogy a függőségek kaszkádba omljanak anélkül, hogy explicit beállítanánk őket. A virtuális gép például egy virtuális hálózati adaptertől függ, a virtuális hálózati adapter pedig a virtuális hálózattól és a nyilvános IP-címektől függ. Ezért a virtuális gép mindhárom erőforrás után üzembe lesz helyezve, de ne állítsa be explicit módon a virtuális gépet mind a három erőforrástól függőként. Ez a megközelítés tisztázza a függőségi sorrendet, és megkönnyíti a sablon későbbi módosítását.
Ha az üzembe helyezés előtt meghatározható egy érték, próbálja meg függőség nélkül üzembe helyezni az erőforrást. Ha például egy konfigurációs értéknek szüksége van egy másik erőforrás nevére, lehet, hogy nincs szüksége függőségre. Ez az útmutató nem mindig működik, mert egyes erőforrások ellenőrzik a másik erőforrás meglétét. Ha hibaüzenetet kap, adjon hozzá egy függőséget.
Források
Az alábbi információk hasznosak lehetnek az erőforrások használatakor:
Annak érdekében, hogy a többi hozzájáruló megértse az erőforrás célját, adja meg a sablonban a
commentscímet minden egyes erőforráshoz."resources": [ { "name": "[variables('storageAccountName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2025-06-01", "location": "[resourceGroup().location]", "comments": "This storage account is used to store the VM disks.", ... } ]Ha az ARM-sablon egy
.jsoncfájlban van tárolva, a//szintaxist használó megjegyzések támogatottak az itt látható módon."resources": [ { // This storage account is used to store the VM disks. "name": "[variables('storageAccountName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2025-06-01", "location": "[resourceGroup().location]", ... } ]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 egy nyilvános végpontot, például egy Azure Blob Storage nyilvános végpontot használ a sablonban, ne ágyazza be a névteret. A
referencefüggvény használatával dinamikusan lekérheti a névteret. Ezzel a módszerrel üzembe helyezheti a sablont különböző nyilvános névtér-környezetekben anélkül, hogy manuálisan módosítaná a sablon végpontjait. Állítsa az API-verziót a sablon tárfiókjához használt verzióra."diagnosticsProfile": { "bootDiagnostics": { "enabled": "true", "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').primaryEndpoints.blob]" } }Ha a tárfiók ugyanabban a sablonban van üzembe helyezve, amelyet létrehoz, és a tárfiók neve nincs megosztva a sablon egy másik erőforrásával, akkor nem kell megadnia a szolgáltató névterét vagy az
apiVersionerőforrásra való hivatkozáskor. Az alábbi példa az egyszerűsített szintaxist mutatja be."diagnosticsProfile": { "bootDiagnostics": { "enabled": "true", "storageUri": "[reference(variables('storageAccountName')).primaryEndpoints.blob]" } }Hivatkozhat egy másik erőforráscsoportban található meglévő tárfiókra is.
"diagnosticsProfile": { "bootDiagnostics": { "enabled": "true", "storageUri": "[reference(resourceId(parameters('existingResourceGroup'), 'Microsoft.Storage/storageAccounts', parameters('existingStorageAccountName')), '2019-06-01').primaryEndpoints.blob]" } }Nyilvános IP-címeket csak akkor rendelhet hozzá egy virtuális géphez, ha egy alkalmazásnak szüksége van rá. Ha rendszergazdai célból szeretne csatlakozni egy virtuális géphez, használjon bejövő NAT-szabályokat, virtuális hálózati átjárót vagy jumpboxot.
További információ a virtuális gépekhez való csatlakozásról:
A
domainNameLabelnyilvános IP-címek tulajdonságának egyedinek kell lennie. AzdomainNameLabelértéknek 3 és 63 karakter közötti hosszúságúnak kell lennie, és kövesse az ebben a reguláris kifejezésben megadott szabályokat:^[a-z][a-z0-9-]{1,61}[a-z0-9]$. Mivel auniqueStringfüggvény egy 13 karakter hosszú sztringet hoz létre, adnsPrefixStringparaméter legfeljebb 50 karakter hosszúságú lehet."parameters": { "dnsPrefixString": { "type": "string", "maxLength": 50, "metadata": { "description": "The DNS label for the public IP address. It must be lowercase. It should match the following regular expression, or it will raise an error: ^[a-z][a-z0-9-]{1,61}[a-z0-9]$" } } }, "variables": { "dnsPrefix": "[concat(parameters('dnsPrefixString'),uniquestring(resourceGroup().id))]" }Amikor jelszót ad hozzá egy egyéni szkriptbővítményhez, használja a
commandToExecutetulajdonságot aprotectedSettingstulajdonságban."properties": { "publisher": "Microsoft.Azure.Extensions", "type": "CustomScript", "typeHandlerVersion": "2.0", "autoUpgradeMinorVersion": true, "settings": { "fileUris": [ "[concat(variables('template').assets, '/lamp-app/install_lamp.sh')]" ] }, "protectedSettings": { "commandToExecute": "[concat('sh install_lamp.sh ', parameters('mySqlPassword'))]" } }Feljegyzés
Annak érdekében, hogy a titkos kulcsok titkosítva legyenek, amikor azok paraméterekként vannak átadva a virtuális gépeknek és bővítményeknek, használja a
protectedSettingsmegfelelő bővítmények tulajdonságát.Adjon meg explicit értékeket azokhoz a tulajdonságokhoz, amelyek alapértelmezett értékei idővel változhatnak. Például, ha AKS-fürtöt helyez üzembe, megadhatja vagy kihagyhatja a
kubernetesVersiontulajdonságot. Ha nem adja meg, akkor a fürt alapértelmezés szerint az N-1 alverzió és a legújabb javítás lesz. Ha egy ARM-sablon használatával telepíti a fürtöt, előfordulhat, hogy az alapértelmezett viselkedés nem felel meg az elvárásainak. A sablon újbóli üzembe helyezése esetlegesen azt eredményezheti, hogy a fürt váratlanul frissül egy új Kubernetes-verzióra. Ehelyett fontolja meg egy explicit verziószám megadását, majd manuálisan módosítsa, amikor készen áll a fürt frissítésére.
Megjegyzések
A tulajdonság mellett a comments// szintaxist használó megjegyzések is támogatottak. 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. A fájlkiterjesztés használatával mentheti a // megjegyzéseket tartalmazó .jsonc JSON-fájlokat, hogy jelezze, hogy a JSON-fájl megjegyzéseket tartalmaz. Az ARM-szolgáltatás bármely JSON-fájlban, beleértve a paraméterfájlokat is, megjegyzéseket is elfogad.
Visual Studio Code ARM-eszközök
Az ARM-sablonok használata egyszerűbb az Azure Resource Manager (ARM) Visual Studio Code-eszközökkel. Ez a bővítmény nyelvi támogatást, erőforrás-kódrészleteket és automatikus erőforrás-kiegészítést biztosít az Azure Resource Manager-sablonok létrehozásához és érvényesítéséhez. További információkért és a bővítmény telepítéséhez tekintse meg az Azure Resource Manager (ARM) eszközeit.
Teszteszközkészlet használata
Az ARM-sablontesztelési eszközkészlet egy olyan szkript, amely ellenőrzi, hogy a sablon az ajánlott eljárásokat használja-e. Ha a sablon nem felel meg az ajánlott eljárásoknak, a javasolt módosításokat tartalmazó figyelmeztetések listáját adja vissza. A tesztelési eszközkészlet segítségével megtudhatja, hogyan valósíthat meg ajánlott eljárásokat a sablonban.
Miután befejezte a sablont, futtassa a teszteszközkészletet, és ellenőrizze, hogy van-e mód a megvalósítás javítására. További információ: ARM-sablontesztelési eszközkészlet használata.
Következő lépések
- A sablonfájl szerkezetéről további információt az ARM-sablonok szerkezetének és szintaxisának ismertetése című témakörben talál.
- Az összes Azure-felhőkörnyezetben működő sablonok készítésére vonatkozó javaslatokért tekintse meg az ARM-sablonok felhőkonzisztenciához való fejlesztését ismertető témakört.