Rövid útmutató: Azure-terv definiálása és hozzárendelése a PowerShell-lel

Fontos

2026. július 11-én a tervek (előzetes verzió) elavultak lesznek. Migrálja a meglévő tervdefiníciókat és -hozzárendeléseket a sablon specifikációiba és üzembehelyezési vermeibe. A tervösszetevőket ARM JSON-sablonokká vagy Az üzembehelyezési verem definiálásához használt Bicep-fájlokká kell konvertálni. Az összetevők ARM-erőforrásként való létrehozásához lásd:

Ebben az oktatóanyagban megismerkedhet az Azure Blueprints használatával a terv szervezeten belüli létrehozásával, közzétételével és hozzárendelésével kapcsolatos gyakori feladatok némelyikével. Ez a képesség segít meghatározni azokat a gyakori mintákat, amelyek az Azure Resource Manager- (ARM-) sablonok, szabályzatok és biztonság alapján újrahasználható és gyorsan üzembe helyezhető konfigurációkat fejlesztenek.

Előfeltételek

  • Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
  • Ha még nincs telepítve, kövesse az Az.Blueprint modul hozzáadása című témakör utasításait az Az.Blueprint modul telepítéséhez és ellenőrzéséhez a PowerShell-galéria.
  • Ha korábban még nem használta az Azure Blueprintset, regisztrálja az erőforrás-szolgáltatót az Azure PowerShell-lel Register-AzResourceProvider -ProviderNamespace Microsoft.Blueprint.

Azure Cloud Shell

Az Azure által üzemeltetett Azure Cloud Shell egy interaktív felület, amelyet a böngészőből használhat. A Bash vagy a PowerShell segítségével is használhatja a Cloud Shellt az Azure-szolgáltatásokhoz. A Cloud Shell előre telepített parancsaival futtathatja a jelen cikkben szereplő kódot anélkül, hogy bármit telepítenie kellene a helyi környezetben.

Az Azure Cloud Shell indítása:

Lehetőség Példa/hivatkozás
Válassza a Kipróbálás lehetőséget egy kód vagy parancsblokk jobb felső sarkában. A Kipróbálás lehetőség választása nem másolja automatikusan a kódot vagy a parancsot a Cloud Shellbe. Screenshot that shows an example of Try It for Azure Cloud Shell.
Látogasson el a https://shell.azure.com webhelyre, vagy kattintson a Cloud Shell indítása gombra a böngészőben. Button to launch Azure Cloud Shell.
Az Azure Portal jobb felső sarkában található menüben kattintson a Cloud Shell gombra. Screenshot that shows the Cloud Shell button in the Azure portal

Az Azure Cloud Shell használata:

  1. Indítsa el a Cloud Shellt.

  2. A kód vagy parancs másolásához kattintson a Másolás gombra egy kódblokkon (vagy parancsblokkon).

  3. Illessze be a kódot vagy parancsot a Cloud Shell-munkamenetbe a Windows és Linux rendszeren a Ctrl Shift+V billentyűkombinációval+, vagy a Cmd+Shift+V macOS rendszeren való kiválasztásával.

  4. A kód vagy parancs futtatásához válassza az Enter lehetőséget .

Terv létrehozása

A megfelelőségi szabványminták definiálásának első lépése, hogy összeállítunk egy tervet az elérhető erőforrásokból. Hozzunk létre egy MyBlueprint nevű tervet az előfizetés szerepkör- és szabályzat-hozzárendeléseinek konfigurálásához. Ezután hozzáad egy erőforráscsoportot, egy ARM-sablont és egy szerepkör-hozzárendelést az erőforráscsoporthoz.

Feljegyzés

A PowerShell használatakor először a tervobjektum jön létre. Minden olyan összetevőhöz, amely paraméterekkel rendelkezik, előre meg kell határoznia a paramétereket a kezdeti tervben.

  1. Hozza létre a kezdeti terv objektumot. A BlueprintFile paraméter egy JSON-fájlt vesz fel, amely tartalmazza a terv tulajdonságait, a létrehozandó erőforráscsoportokat és az összes tervszintű paramétert. A hozzárendelés során beállítja a paramétereket, és a későbbi lépésekben hozzáadott összetevők használják őket.

    • JSON-fájl – blueprint.json

      {
          "properties": {
              "description": "This blueprint sets tag policy and role assignment on the subscription, creates a ResourceGroup, and deploys a resource template and role assignment to that ResourceGroup.",
              "targetScope": "subscription",
              "parameters": {
                  "storageAccountType": {
                      "type": "string",
                      "defaultValue": "Standard_LRS",
                      "allowedValues": [
                          "Standard_LRS",
                          "Standard_GRS",
                          "Standard_ZRS",
                          "Premium_LRS"
                      ],
                      "metadata": {
                          "displayName": "storage account type.",
                          "description": null
                      }
                  },
                  "tagName": {
                      "type": "string",
                      "metadata": {
                          "displayName": "The name of the tag to provide the policy assignment.",
                          "description": null
                      }
                  },
                  "tagValue": {
                      "type": "string",
                      "metadata": {
                          "displayName": "The value of the tag to provide the policy assignment.",
                          "description": null
                      }
                  },
                  "contributors": {
                      "type": "array",
                      "metadata": {
                          "description": "List of AAD object IDs that is assigned Contributor role at the subscription",
                          "strongType": "PrincipalId"
                      }
                  },
                  "owners": {
                      "type": "array",
                      "metadata": {
                          "description": "List of AAD object IDs that is assigned Owner role at the resource group",
                          "strongType": "PrincipalId"
                      }
                  }
              },
              "resourceGroups": {
                  "storageRG": {
                      "description": "Contains the resource template deployment and a role assignment."
                  }
              }
          }
      }
      
    • PowerShell-parancs

      # Login first with Connect-AzAccount if not using Cloud Shell
      
      # Get a reference to the new blueprint object, we'll use it in subsequent steps
      $blueprint = New-AzBlueprint -Name 'MyBlueprint' -BlueprintFile .\blueprint.json
      

      Feljegyzés

      A tervdefiníciók programozott létrehozásakor használja a blueprint.json fájlnevet. Ezt a fájlnevet használja a rendszer a híváskor Import-AzBlueprintWithArtifact.

      A tervobjektum alapértelmezés szerint az alapértelmezett előfizetésben jön létre. A felügyeleti csoport megadásához használja a paramétert ManagementGroupId. Az előfizetés megadásához használja a paramétert SubscriptionId.

  2. Szerepkör-hozzárendelés hozzáadása az előfizetéshez. Ez ArtifactFile határozza meg az összetevő fajtáját, a tulajdonságok a szerepkördefiníció azonosítójához igazodnak, az egyszerű identitások pedig értéktömbként lesznek átadva. Az alábbi példában a megadott szerepkört kapott egyszerű identitások egy olyan paraméterre vannak konfigurálva, amely a terv hozzárendelése során van beállítva. Ez a példa a Contributor beépített szerepkört használja, amelynek GUID azonosítója a b24988ac-6180-42a0-ab88-20f7382dd24ckövetkező: .

    • JSON-fájl – \artifacts\roleContributor.json

      {
          "kind": "roleAssignment",
          "properties": {
              "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
              "principalIds": "[parameters('contributors')]"
          }
      }
      
    • PowerShell-parancs

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintArtifact -Blueprint $blueprint -Name 'roleContributor' -ArtifactFile .\artifacts\roleContributor.json
      
  3. Adjon hozzá egy szabályzat-hozzárendelést az előfizetéshez. Ez ArtifactFile határozza meg az összetevő típusát, a tulajdonságok egy szabályzat- vagy kezdeményezésdefinícióhoz igazodnak, a szabályzat-hozzárendelés pedig úgy van konfigurálva, hogy a tervkiosztás során a megadott tervparamétereket használja. Ez a példa a Apply tag and its default value to resource groups beépített szabályzatot használja, amelynek GUID azonosítója a 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71következő: .

    • JSON-fájl – \artifacts\policyTags.json

      {
          "kind": "policyAssignment",
          "properties": {
              "displayName": "Apply tag and its default value to resource groups",
              "description": "Apply tag and its default value to resource groups",
              "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71",
              "parameters": {
                  "tagName": {
                      "value": "[parameters('tagName')]"
                  },
                  "tagValue": {
                      "value": "[parameters('tagValue')]"
                  }
              }
          }
      }
      
    • PowerShell-parancs

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintArtifact -Blueprint $blueprint -Name 'policyTags' -ArtifactFile .\artifacts\policyTags.json
      
  4. Adjon hozzá egy másik szabályzat-hozzárendelést a tárcímkéhez (újbóli használattal storageAccountType_ parameter) az előfizetésben. Ez az újabb szabályzat-hozzárendelési összetevő bemutatja, hogy a terveken definiált paramétereket több összetevő is használhatja. A példában a storageAccountType címkét az erőforráscsoporton kell beállítania. Ez az érték információt nyújt a következő lépésben létrehozott tárfiókról. Ez a példa a Apply tag and its default value to resource groups beépített szabályzatot használja, amelynek GUID azonosítója a 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71következő: .

    • JSON-fájl – \artifacts\policyStorageTags.json

      {
          "kind": "policyAssignment",
          "properties": {
              "displayName": "Apply storage tag to resource group",
              "description": "Apply storage tag and the parameter also used by the template to resource groups",
              "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71",
              "parameters": {
                  "tagName": {
                      "value": "StorageType"
                  },
                  "tagValue": {
                      "value": "[parameters('storageAccountType')]"
                  }
              }
          }
      }
      
    • PowerShell-parancs

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintArtifact -Blueprint $blueprint -Name 'policyStorageTags' -ArtifactFile .\artifacts\policyStorageTags.json
      
  5. Sablon hozzáadása az erőforráscsoporthoz. Az TemplateFile ARM-sablon tartalmazza a sablon normál JSON-összetevőjét. A sablon a sablonnak való átadással újra felhasználja a storageAccountType, tagNameés tagValue a tervparamétereket. A tervparaméterek a paraméterrel TemplateParameterFileérhetők el a sablon számára, és a JSON-sablonon belül a kulcs-érték pár az érték injektálásához használatos. Előfordulhat, hogy a terv- és sablonparaméterek neve megegyezik.

    • JSON ARM-sablonfájl – \artifacts\templateStorage.json

      {
          "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
              "storageAccountTypeFromBP": {
                  "type": "string",
                  "metadata": {
                      "description": "Storage Account type"
                  }
              },
              "tagNameFromBP": {
                  "type": "string",
                  "defaultValue": "NotSet",
                  "metadata": {
                      "description": "Tag name from blueprint"
                  }
              },
              "tagValueFromBP": {
                  "type": "string",
                  "defaultValue": "NotSet",
                  "metadata": {
                      "description": "Tag value from blueprint"
                  }
              }
          },
          "variables": {
              "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]"
          },
          "resources": [{
              "type": "Microsoft.Storage/storageAccounts",
              "name": "[variables('storageAccountName')]",
              "apiVersion": "2016-01-01",
              "tags": {
                  "[parameters('tagNameFromBP')]": "[parameters('tagValueFromBP')]"
              },
              "location": "[resourceGroup().location]",
              "sku": {
                  "name": "[parameters('storageAccountTypeFromBP')]"
              },
              "kind": "Storage",
              "properties": {}
          }],
          "outputs": {
              "storageAccountSku": {
                  "type": "string",
                  "value": "[variables('storageAccountName')]"
              }
          }
      }
      
    • JSON ARM-sablon paraméterfájlja – \artifacts\templateStorageParams.json

      {
          "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
              "storageAccountTypeFromBP": {
                  "value": "[parameters('storageAccountType')]"
              },
              "tagNameFromBP": {
                  "value": "[parameters('tagName')]"
              },
              "tagValueFromBP": {
                  "value": "[parameters('tagValue')]"
              }
          }
      }
      
    • PowerShell-parancs

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintArtifact -Blueprint $blueprint -Type TemplateArtifact -Name 'templateStorage' -TemplateFile .\artifacts\templateStorage.json -TemplateParameterFile .\artifacts\templateStorageParams.json -ResourceGroupName storageRG
      
  6. Adjon hozzá egy szerepkör-hozzárendelést az erőforráscsoporthoz. Az előző szerepkör-hozzárendelési bejegyzéshez hasonlóan az alábbi példa a szerepkör definícióazonosítóját Owner használja, és a tervtől eltérő paramétert ad neki. Ez a példa a Owner beépített szerepkört használja, amelynek GUID azonosítója a 8e3af657-a8ff-443c-a75c-2fe8c4bcb635következő: .

    • JSON-fájl – \artifacts\roleOwner.json

      {
          "kind": "roleAssignment",
          "properties": {
              "resourceGroup": "storageRG",
              "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
              "principalIds": "[parameters('owners')]"
          }
      }
      
    • PowerShell-parancs

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintArtifact -Blueprint $blueprint -Name 'roleOwner' -ArtifactFile .\artifacts\roleOwner.json
      

Terv közzététele

Most, hogy hozzáadta az összetevőket a tervhez, ideje közzétenni. A közzététel elérhetővé teszi a tervet egy előfizetéshez való hozzárendeléshez.

# Use the reference to the new blueprint object from the previous steps
Publish-AzBlueprint -Blueprint $blueprint -Version '{BlueprintVersion}'

A függvény {BlueprintVersion} értéke betűk, számok és kötőjelek sztringje (szóközök és egyéb speciális karakterek nélkül). A maximális hossz 20 karakter. Használjon egyedi és tájékoztató jellegűt, például v20180622-135541.

Terv hozzárendelése

Miután közzétett egy tervet a PowerShell használatával, az egy előfizetéshez rendelhető. Rendelje hozzá a létrehozott tervet a felügyeleti csoport hierarchiájának egyik előfizetéséhez. Ha a terv egy előfizetésbe van mentve, csak az adott előfizetéshez rendelhető hozzá. A Blueprint paraméter megadja a hozzárendelni kívánt tervet. A name, location, identity, lockés blueprint paraméterek megadásához használja a parancsmag megfelelő New-AzBlueprintAssignment PowerShell-paramétereit, vagy adja meg őket a AssignmentFile JSON paraméterfájlban.

  1. A tervpéldányt a futtatásához rendelje hozzá egy előfizetéshez. Mivel a és a contributorsowners paraméterek megkövetelik, hogy a tagok egy tömbje objectIds megkapja a szerepkör-hozzárendelést, használja az Azure Active Directory Graph API-t a objectIdsAssignmentFile saját felhasználók, csoportok vagy szolgáltatásnevek számára való használatra.

    • JSON-fájl – blueprintAssignment.json

      {
          "properties": {
              "blueprintId": "/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint",
              "resourceGroups": {
                  "storageRG": {
                      "name": "StorageAccount",
                      "location": "eastus2"
                  }
              },
              "parameters": {
                  "storageAccountType": {
                      "value": "Standard_GRS"
                  },
                  "tagName": {
                      "value": "CostCenter"
                  },
                  "tagValue": {
                      "value": "ContosoIT"
                  },
                  "contributors": {
                      "value": [
                          "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
                          "38833b56-194d-420b-90ce-cff578296714"
                      ]
                  },
                  "owners": {
                      "value": [
                          "44254d2b-a0c7-405f-959c-f829ee31c2e7",
                          "316deb5f-7187-4512-9dd4-21e7798b0ef9"
                      ]
                  }
              }
          },
          "identity": {
              "type": "systemAssigned"
          },
          "location": "westus"
      }
      
    • PowerShell-parancs

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintAssignment -Blueprint $blueprint -Name 'assignMyBlueprint' -AssignmentFile .\blueprintAssignment.json
      
    • Felhasználó által hozzárendelt felügyelt identitás

      A tervhozzárendelések felhasználó által hozzárendelt felügyelt identitást is használhatnak. Ebben az esetben a identity JSON-hozzárendelési fájl része az alábbiak szerint változik. Cserélje le {tenantId}a bérlőazonosítót{subscriptionId}{yourRG}{userIdentity}, az előfizetés azonosítóját, az erőforráscsoport nevét és a felhasználó által hozzárendelt felügyelt identitás nevét.

      "identity": {
          "type": "userAssigned",
          "tenantId": "{tenantId}",
          "userAssignedIdentities": {
              "/subscriptions/{subscriptionId}/resourceGroups/{yourRG}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{userIdentity}": {}
          }
      },
      

      A felhasználó által hozzárendelt felügyelt identitás bármely előfizetésben és erőforráscsoportban lehet, amelyhez a tervet hozzárendelő felhasználó rendelkezik engedélyekkel.

      Fontos

      Az Azure Blueprints nem kezeli a felhasználó által hozzárendelt felügyelt identitást. A felhasználók felelősek a megfelelő szerepkörök és engedélyek hozzárendeléséért, vagy a terv hozzárendelése meghiúsul.

Az erőforrások eltávolítása

Eltávolíthatja a terveket az előfizetésekből. Az eltávolítás gyakori művelet az összetevők már szükségtelen erőforrásai esetén. Az egyes tervek eltávolításakor az adott tervek keretében hozzárendelt összetevők megmaradnak. Terv-hozzárendelés eltávolításához használja a Remove-AzBlueprintAssignment parancsmagot:

assignMyBlueprint

Remove-AzBlueprintAssignment -Name 'assignMyBlueprint'

Következő lépések

Ebben a rövid útmutatóban létrehozott, hozzárendelt és eltávolított egy tervet a PowerShell használatával. Ha többet szeretne megtudni az Azure Blueprintsről, folytassa a terv életciklusával foglalkozó cikkben.