Az Azure Resource Manager-sablonok struktúrájának megismerése

Befejeződött

Ebben a leckében megismerkedhet az Azure Resource Manager-sablonok (ARM-sablonok) használatával az infrastruktúra kódként való implementálásához. Áttekintheti egy ARM-sablon szakaszait, megtudhatja, hogyan helyezheti üzembe az ARM-sablont az Azure-ban, és részletesen megismerkedhet az ARM-sablon erőforrásokkal foglalkozó szakaszával.

Az infrastruktúra mint kód bemutatása

Az infrastruktúra kódként lehetővé teszi az alkalmazáshoz szükséges infrastruktúra kódon keresztüli leírását.

Az infrastruktúra mint kód segítségével egyetlen kódtárban tarthatja fenn az alkalmazás kódját és mindent, amire szüksége lehet az alkalmazás üzembe helyezéséhez. Az infrastruktúra mint kód előnyei a következők:

  • Konzisztens konfigurációk
  • Jobb skálázhatóság
  • Gyorsabb üzembe helyezés
  • Jobb nyomon követhetőség

Ez a videó az infrastruktúra kódként való használatát ismerteti:

Az ARM-sablon bemutatása

Az ARM-sablonok JavaScript Object Notation- (JSON-) fájlok, amelyek meghatározzák az üzemelő példány infrastruktúráját és konfigurációját. A sablon deklaratív szintaxist alkalmaz. A deklaratív szintaxissal a vezérlőfolyamat leírása nélkül építheti fel a szerkezetet és az erőforrásokat körvonalazó elemeket. A deklaratív szintaxis eltér az imperatív szintaxistól, amely parancsokat küld a számítógépnek végrehajtásra. Az imperatív szkriptek arra összpontosítanak, hogy az erőforrások üzembe helyezése során minden lépést megadjanak.

Az ARM-sablonok lehetővé teszik, hogy deklarálja, mit szeretne üzembe helyezni, anélkül, hogy programozási parancsok sorát kellene megírnia a létrehozásához. Az ARM-sablonban megadhatja az erőforrásokat és azok tulajdonságait. Az Azure Resource Manager ezután ezeket az információkat felhasználva rendszerezett és konzisztens módon helyezi üzembe az erőforrásokat.

Az ARM-sablonok használatának előnyei

Az ARM-sablonok segítségével automatizálhatja az üzembe helyezéseket, és alkalmazhatja az infrastruktúra mint kód (IaC) megközelítést. A sablon kódja az infrastruktúra és a fejlesztési projektek részévé válik. Az alkalmazás kódjához hasonlóan az IaC-fájlokat is tárolhatja a forrásadattárban, és verziószámmal is elláthatja őket.

Az ARM-sablonok idempotensek, ami azt jelenti, hogy egy sablon többször is üzembe helyezhető, és minden üzembe helyezéskor ugyanazokat az erőforrástípusokat kapja ugyanabban az állapotban.

A Resource Manager vezényli az erőforrások üzembe helyezését, hogy azok a megfelelő sorrendben legyenek létrehozva. Ha lehetséges, az erőforrások párhuzamosan lesznek létrehozva, ezért az ARM-sablonokkal végzett üzembe helyezés gyorsabb, mint a szkriptet használó üzembe helyezés.

Diagram showing a mapping of the template processing procedure. There's only one call to process a template as opposed to several calls to process scripts.

A Resource Manager beépített érvényesítéssel is rendelkezik. Az üzembe helyezés megkezdése előtt ellenőrzi a sablont, hogy az üzembe helyezés sikeres lehessen.

Ha az üzembe helyezés összetettebb, akkor a sablonokat kisebb, újrahasznosítható összetevőkre bonthatja. Ezeket a kisebb sablonokat az üzembe helyezés során összekapcsolhatja. A sablonokat egymásba is lehet ágyazni.

Az Azure Portalon áttekintheti az üzembe helyezési előzményeket, és információkat kaphat az üzemelő példányok állapotáról. A portál megjeleníti az összes paraméter és kimenet értékét.

Az ARM-sablonokat a folyamatos integrációs és folyamatos üzembe helyezési (CI/CD-) eszközeibe, például Azure-folyamatokba is integrálhatja, így automatizálhatja a kiadási folyamatokat a gyors és megbízható alkalmazás- és infrastruktúrafrissítésekhez. Az Azure DevOps és az ARM-sablonok feladatainak használatával folyamatosan készíthet és üzembe helyezhet projekteket.

Az ARM-sablonok fájlszerkezete

ARM-sablon írásakor ismernie kell a sablont alkotó összes részt, és azt is, hogy mit tesznek. Az ARM-sablonfájlok a következő elemekből állnak:

Elem Leírás
Séma Kötelező szakasz, amely meghatározza a JSON-adatok struktúráját leíró JSON-sémafájl helyét. A használt verziószám az üzemelő példány hatókörétől és a JSON-szerkesztőtől függ.
contentVersion Kötelező szakasz, amely meghatározza a sablon verzióját (például 1.0.0.0). Ezzel az értékkel dokumentálhatja a sablon jelentős változásait, ezzel biztosítva a megfelelő sablon üzembe helyezését.
apiProfile Nem kötelező szakasz, amely az API-verziók egy gyűjteményét határozza meg az erőforrástípusokhoz. Ezen érték használatakor nem kell megadnia API-verziókat a sablon egyes erőforrásaihoz.
paraméterek Nem kötelező szakasz, amelyben meghatározhatja az üzembe helyezés során kapott értékeket. Ezeket az értékeket megadhatja paraméterfájlban, parancssori paraméterekként vagy az Azure Portalon.
Változók Nem kötelező szakasz, amelyben meghatározhatja a sablonnyelvi kifejezések egyszerűsítésére használt értékeket.
Funkciók Nem kötelező szakasz, amelyben definiálhatja a sablonon belül elérhető felhasználó által definiált függvényeket. A felhasználó által definiált függvényekkel egyszerűbbé teheti a sablont, ha abban többször is bonyolult kifejezések szerepelnek.
Erőforrások Kötelező szakasz, amely meghatározza az adott erőforráscsoportban vagy egy előfizetésben ténylegesen üzembe helyezni vagy frissíteni kívánt elemeket.
Kimeneti Nem kötelező szakasz, amelyben megadhatja azokat az értékeket, amelyeket a rendszer az üzembe helyezés végén visszaad.

ARM-sablonok üzembe helyezése az Azure-ban

ARM-sablonokat az alábbi módokon helyezhet üzembe az Azure-ban:

  • Helyi sablon üzembe helyezése
  • Csatolt sablon üzembe helyezése
  • Üzembe helyezés folyamatos üzembe helyezési folyamatban

Ez a modul egy helyi ARM-sablon üzembe helyezésére fókuszál. A későbbi Learn-modulokban megtudhatja, hogyan helyezhet üzembe bonyolultabb infrastruktúrákat, és hogyan integrálhatja azokat az Azure Pipelines-ba.

Helyi sablonok üzembe helyezéséhez az Azure PowerShell vagy az Azure CLI helyileg telepített példányára van szükség.

Először jelentkezzen be az Azure-ba az Azure CLI vagy az Azure PowerShell használatával.

az login

Ezután adja meg az erőforráscsoportot. Használhat egy már definiált erőforráscsoportot, vagy létrehozhat egy újat az alábbi paranccsal. A rendelkezésre álló helyértékeket a következő forrásból szerezheti be: az account list-locations (CLI) vagy Get-AzLocation (PowerShell). Az alapértelmezett helyet a következővel az configure --defaults location=<location>konfigurálhatja: .

az group create \
  --name {name of your resource group} \
  --location "{location}"

Ha sablontelepítést szeretne indítani az erőforráscsoportban, használja az Azure CLI az deployment group create vagy a New-AzResourceGroupDeployment Azure PowerShell-parancsot.

Tipp.

A különbség az deployment group createaz group deployment create az és az, hogy az group deployment create egy régi parancs elavult, és helyébe az deployment group createa . Ezért azt javasoljuk az deployment group create , hogy az erőforrásokat az erőforráscsoport hatókörében helyezze üzembe.

Mindkét parancshoz szükség van az erőforráscsoportra, a régióra és az üzembe helyezés nevére, hogy könnyen azonosítható legyen az üzembe helyezési előzmények között. Az egyszerűség kedvéért a gyakorlatok létrehoznak egy változót, amely tárolja a sablonfájl elérési útját. Ez a változó megkönnyíti az üzembehelyezési parancsok futtatását, mivel nem kell minden üzembe helyezéskor újragépelnie az elérési utat. Példa:

Az üzembe helyezési parancs futtatásához az Azure CLI legújabb verziójára van szükség.

templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
  --name blanktemplate \
  --resource-group myResourceGroup \
  --template-file $templateFile

A csatolt sablonokkal összetett megoldások helyezhetők üzembe. A sablonokat több sablonra bonthatja, és ezeket a sablonokat egy fősablonon keresztül is üzembe helyezheti. A fő sablon üzembe helyezésekor aktiválja a csatolt sablon üzembe helyezését. A csatolt sablont egy SAS-jogkivonattal tárolhatja és teheti biztonságossá.

A CI/CD-folyamat automatizálja a fejlesztési projektek létrehozását és üzembe helyezését, beleértve az ARM-sablonok projektjeit is. A sablonok üzembe helyezéséhez használt két leggyakoribb folyamat az Azure Pipelines és a GitHub Actions.

A fenti két üzembe helyezési típussal kapcsolatban más modulokban találhat további információkat.

Erőforrások hozzáadása a sablonhoz

Ahhoz, hogy egy erőforrást hozzá lehessen adni a sablonhoz, ismernie kell az erőforrás-szolgáltatót és annak erőforrástípusait. A kombináció szintaxisa: {resource-provider}/{resource-type}. Ha például egy tárfiók-erőforrást szeretne hozzáadni a sablonhoz, a Microsoft.Storage erőforrás-szolgáltatóra lesz szüksége. Ezen szolgáltató egyik típusa a storageAccount. Így az erőforrástípus Microsoft.Storage/storageAccounts formában jelenik meg. A kívánt szolgáltatókat megtalálhatja az Azure-szolgáltatások erőforrás-szolgáltatóinak listájában.

A szolgáltató és az erőforrás típusának meghatározása után meg kell ismernie a használni kívánt erőforrástípusok tulajdonságait. A részletekért lásd az Erőforrások definiálása Azure Resource Manager-sablonokban témakört. A bal oldali oszlopban található listában megkeresheti az erőforrást. Megfigyelheti, hogy a tulajdonságok az API-verzió szerint vannak rendezve.

Screenshot of a Microsoft documentation page showing the storage account documentation selected.

Alább látható egy példa néhány felsorolt tulajdonságra a Tárfiókok oldalról:

Screenshot of a Microsoft documentation page showing some of the storage account properties.

A tárolási példában a sablon a következőképpen nézhet ki:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "apiProfile": "",
  "parameters": {},
  "variables": {},
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "learntemplatestorage123",
      "location": "westus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {}
}