Snabbstart: Definiera och tilldela en Azure-skiss med PowerShell

Viktigt!

Den 11 juli 2026 kommer skisser (förhandsversion) att bli inaktuella. Migrera dina befintliga skissdefinitioner och tilldelningar till mallspecifikationer och distributionsstackar. Skissartefakter ska konverteras till ARM JSON-mallar eller Bicep-filer som används för att definiera distributionsstackar. Information om hur du skapar en artefakt som en ARM-resurs finns i:

I den här självstudien lär du dig att använda Azure Blueprints för att utföra några vanliga uppgifter som rör att skapa, publicera och tilldela en skiss i din organisation. Den här färdigheten hjälper dig att definiera vanliga mönster för att utveckla återanvändbara och snabbt distribuerade konfigurationer, baserat på Azure Resource Manager-mallar (ARM), principer och säkerhet.

Förutsättningar

  • Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
  • Om den inte redan är installerad följer du anvisningarna i Lägg till Az.Blueprint-modulen för att installera och verifiera Az.Blueprint-modulen från PowerShell-galleriet.
  • Om du inte har använt Azure Blueprints tidigare registrerar du resursprovidern via Azure PowerShell med Register-AzResourceProvider -ProviderNamespace Microsoft.Blueprint.

Azure Cloud Shell

Azure är värd för Azure Cloud Shell, en interaktiv gränssnittsmiljö som du kan använda via webbläsaren. Du kan använda antingen Bash eller PowerShell med Cloud Shell för att arbeta med Azure-tjänster. Du kan använda förinstallerade Cloud Shell-kommandon för att köra koden i den här artikeln, utan att behöva installera något i din lokala miljö.

Så här startar du Azure Cloud Shell:

Alternativ Exempel/länk
Välj Prova i det övre högra hörnet i en kod eller ett kommandoblock. Om du väljer Prova kopieras inte koden eller kommandot automatiskt till Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. Button to launch Azure Cloud Shell.
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. Screenshot that shows the Cloud Shell button in the Azure portal

Så här använder du Azure Cloud Shell:

  1. Starta Cloud Shell.

  2. Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.

  3. Klistra in koden eller kommandot i Cloud Shell-sessionen genom att välja Ctrl+Skift+V i Windows och Linux, eller genom att välja Cmd+Shift+V på macOS.

  4. Välj Retur för att köra koden eller kommandot.

Skapa en skiss

Det första steget när du definierar ett standardmönster för efterlevnad är att skapa en skiss från de tillgängliga resurserna. Nu ska vi skapa en skiss med namnet MyBlueprint för att konfigurera roll- och principtilldelningar för prenumerationen. Sedan lägger du till en resursgrupp, en ARM-mall och en rolltilldelning i resursgruppen.

Kommentar

När du använder PowerShell skapas skissobjektet först. För varje artefakt som ska läggas till som har parametrar definierar du parametrarna i förväg på den första skissen.

  1. Skapa det första skissobjektet. Parametern BlueprintFile tar en JSON-fil som innehåller egenskaper om skissen, eventuella resursgrupper som ska skapas och alla parametrar på skissnivå. Du anger parametrarna under tilldelningen och de används av artefakterna som du lägger till i senare steg.

    • JSON-fil – 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-kommando

      # 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
      

      Kommentar

      Använd filnamnet blueprint.json när du skapar skissdefinitionerna programmatiskt. Det här filnamnet används när du anropar Import-AzBlueprintWithArtifact.

      Skissobjektet skapas som standard i standardprenumerationen. Om du vill ange hanteringsgruppen använder du parametern ManagementGroupId. Om du vill ange prenumerationen använder du parametern SubscriptionId.

  2. Lägg till en rolltilldelning i prenumerationen. ArtifactFile Definierar typen av artefakt, egenskaperna justeras till rolldefinitionsidentifieraren och huvudidentiteterna skickas som en matris med värden. I följande exempel konfigureras de huvudidentiteter som beviljats den angivna rollen till en parameter som anges under skisstilldelningen. I det här exemplet används den Contributor inbyggda rollen med ett GUID för b24988ac-6180-42a0-ab88-20f7382dd24c.

    • JSON-fil – \artifacts\roleContributor.json

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

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintArtifact -Blueprint $blueprint -Name 'roleContributor' -ArtifactFile .\artifacts\roleContributor.json
      
  3. Lägg till en principtilldelning i prenumerationen. Definierar ArtifactFile typen av artefakt, egenskaperna justeras efter en princip- eller initiativdefinition och principtilldelningen konfigureras för att använda de definierade skissparametrarna under skisstilldelningen. I det här exemplet används den Apply tag and its default value to resource groups inbyggda principen med ett GUID för 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • JSON-fil – \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-kommando

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintArtifact -Blueprint $blueprint -Name 'policyTags' -ArtifactFile .\artifacts\policyTags.json
      
  4. Lägg till ytterligare en principtilldelning för lagringstaggen (genom att återanvända storageAccountType_ parameter) i prenumerationen. Den här ytterligare principtilldelningsartefakten visar att en parameter som definierats för skissen kan användas av mer än en artefakt. I exemplet använder storageAccountType du för att ange en tagg i resursgruppen. Det här värdet innehåller information om det lagringskonto som du skapar i nästa steg. I det här exemplet används den Apply tag and its default value to resource groups inbyggda principen med ett GUID för 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • JSON-fil – \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-kommando

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintArtifact -Blueprint $blueprint -Name 'policyStorageTags' -ArtifactFile .\artifacts\policyStorageTags.json
      
  5. Lägg till en mall under resursgruppen. TemplateFile För en ARM-mall ingår den normala JSON-komponenten i mallen. Mallen återanvänder också parametrarna storageAccountType, tagNameoch skiss genom att skicka var och tagValue en till mallen. Skissparametrarna är tillgängliga för mallen med hjälp av parametern TemplateParameterFile, och i mallen JSON används nyckel/värde-paret för att mata in värdet. Skiss- och mallparameternamnen kan vara desamma.

    • JSON ARM-mallfil – \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-mallparameterfil – \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-kommando

      # 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. Lägg till en rolltilldelning under resursgruppen. I likhet med den tidigare rolltilldelningsposten använder följande exempel definitionsidentifieraren för rollen och ger den Owner en annan parameter än skissen. I det här exemplet används den Owner inbyggda rollen med ett GUID för 8e3af657-a8ff-443c-a75c-2fe8c4bcb635.

    • JSON-fil – \artifacts\roleOwner.json

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

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

Publicera en skiss

Nu när du har lagt till artefakterna i skissen är det dags att publicera den. Publicering gör skissen tillgänglig för tilldelning till en prenumeration.

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

Värdet för {BlueprintVersion} är en sträng med bokstäver, siffror och bindestreck (utan blanksteg eller andra specialtecken). Maximal längd är 20 tecken. Använd något unikt och informativt, till exempel v20180622-135541.

Tilldela en skiss

När du har publicerat en skiss med hjälp av PowerShell kan den tilldelas till en prenumeration. Tilldela skissen som du skapade till en av prenumerationerna under din hanteringsgruppshierarki. Om skissen sparas till en prenumeration kan den endast tilldelas till den prenumerationen. Parametern Blueprint anger skissen som ska tilldelas. Om du vill ange parametrarna name, location, identity, lockoch blueprint använder du de matchande PowerShell-parametrarna på cmdleten New-AzBlueprintAssignment eller anger dem i parametern AssignmentFile JSON-filen.

  1. Kör skissdistributionen genom att tilldela den till en prenumeration. Eftersom parametrarna contributors och owners kräver att en matris med objectIds huvudnamnen beviljas rolltilldelningen använder du Azure Active Directory Graph API för att samla in objectIds för användning i AssignmentFile för dina egna användare, grupper eller tjänstens huvudnamn.

    • JSON-fil – 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-kommando

      # Use the reference to the new blueprint object from the previous steps
      New-AzBlueprintAssignment -Blueprint $blueprint -Name 'assignMyBlueprint' -AssignmentFile .\blueprintAssignment.json
      
    • Användartilldelad hanterad identitet

      En skisstilldelning kan även använda en användartilldelad hanterad identitet. I det här fallet identity ändras delen av JSON-tilldelningsfilen enligt följande. Ersätt {tenantId}, {subscriptionId}, {yourRG}och {userIdentity} med ditt klient-ID, prenumerations-ID, resursgruppsnamn respektive namnet på din användartilldelade hanterade identitet.

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

      Den användartilldelade hanterade identiteten kan finnas i valfri prenumeration och resursgrupp som användaren som tilldelar skissen har behörigheter till.

      Viktigt!

      Azure Blueprints hanterar inte den användartilldelade hanterade identiteten. Användarna ansvarar för att tilldela tillräckligt med roller och behörigheter, annars misslyckas skisstilldelningen.

Rensa resurser

Du kan ta bort en skiss från en prenumeration. Borttagningen görs ofta när artefaktresurserna inte längre behövs. När en skiss tas bort blir artefakterna som tilldelats som en del av skissen kvar. Om du vill ta bort en skisstilldelning använder du cmdleten Remove-AzBlueprintAssignment :

assignMyBlueprint

Remove-AzBlueprintAssignment -Name 'assignMyBlueprint'

Nästa steg

I den här snabbstarten skapade, tilldelade och tog du bort en skiss med PowerShell. Om du vill veta mer om Azure Blueprints fortsätter du till artikeln om skissens livscykel.