Snabbstart: Definiera och tilldela en Azure Blueprint med PowerShell
Learning hur du skapar och tilldelar skisser gör det möjligt att definiera vanliga mönster för att utveckla återanvändbara och snabbt distribuerade konfigurationer baserat på Azure Resource Manager-mallar (ARM-mallar), princip, säkerhet med mera. I den här självstudien får du lära dig att använda Azure Blueprint för att utföra några av de vanliga uppgifter som rör generering, publicering och tilldelning av en skiss i din organisation. Du lär dig till exempel att:
Krav
- Om du inte har en Azure-prenumeration kan du skapa 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.
Använda 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 av ett kodblock. Om du väljer Prova kopieras koden inte automatiskt till Cloud Shell. | ![]() |
| Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. | ![]() |
| Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. | ![]() |
Så här kör du koden i den här artikeln i Azure Cloud Shell:
Starta Cloud Shell.
Kopiera koden genom att klicka på knappen Kopiera på ett kodblock.
Klistra in koden i Cloud Shell-sessionen genom att välja Ctrl+Skift+V på Windows och Linux eller genom att välja Cmd+Skift+V på macOS.
Välj Retur för att köra koden.
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. Vi skapar en skiss med namnet ”MyBlueprint” för att konfigurera roll- och principtilldelningar för prenumerationen. Sedan lägger vi till en resursgrupp, en ARM-mall och en rolltilldelning för resursgruppen.
Anteckning
När du använder PowerShell skapas skissobjektet först. För varje artefakt som ska läggas till som har parametrar, måste parametrarna definieras i förväg i den första skissen.
Skapa det första skissobjektet. Parametern BlueprintFile tar en JSON-fil som innehåller egenskaper för skissen, eventuella resursgrupper som ska skapas och alla parametrar på skissnivå. Parametrarna anges vid tilldelning och används av artefakterna som lagts 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.jsonAnteckning
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. Använd parametern ManagementGroupId för att ange hanteringsgruppen. Använd parametern SubscriptionId för att ange prenumerationen.
Lägg till rolltilldelningen för prenumerationen. ArtifactFile definierar typen av artefakt, egenskaperna justeras efter 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 inbyggda rollen Deltagare med ett GUID på
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
Lägg till principtilldelning för prenumerationen. ArtifactFile definierar typen av artefakt, egenskaperna som justeras efter en princip- eller initiativdefinition och konfigurerar principtilldelningen så att den använder de definierade skissparametrarna som ska konfigureras under skisstilldelningen. I det här exemplet används den inbyggda principen Lägg till tagg och standardvärdet i resursgrupper med ett GUID på
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
Lägg till en till principtilldelning för lagringstaggen (genom att återanvända parametern storageAccountType) för 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änds storageAccountType för att ange en tagg på resursgruppen. Det här värdet anger information om lagringskontot som skapas i nästa steg. I det här exemplet används den inbyggda principen Lägg till tagg och standardvärdet i resursgrupper med ett GUID på
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
Lägg till en mall under resursgruppen. TemplateFile för en ARM-mall innehåller den normala JSON-komponenten för mallen. Mallen återanvänder även skissparametrarna storageAccountType, tagName och tagValue genom att dem till mallen. Skissparametrarna är tillgängliga för mallen med parametern TemplateParameterFile och inuti mall-JSON används nyckel/värde-par för att mata in värdet. Namnen på skiss- och mallparametrarna kan vara samma.
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
Lägg till rolltilldelning under resursgruppen. På liknande sätt som i föregående rolltilldelningspost använder exemplet nedan definitionsidentifieraren för rollen Ägare och tilldelar den en annan parameter från skissen. I det här exemplet används den inbyggda rollen Ägare med ett GUID på
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 artefakter har lagts till i skissen är det dags att publicera den. När den har publicerats kan den tilldelas 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 (inga blanksteg eller andra specialtecken) med en högsta längd på 20 tecken. Använd något unikt och beskrivande som v20180622-135541.
Tilldela en skiss
När en skiss har publicerats med PowerShell kan den tilldelas till en prenumeration. Tilldela skissen som du skapade till någon av prenumerationerna i din hierarki med hanteringsgrupper. Om skissen sparas till en prenumeration kan den endast tilldelas till den prenumerationen. Parametern Skiss anger vilken skiss som ska tilldelas. Om du vill ange parametrar för namn, plats, identitet, lås och skiss använder du matchande PowerShell-parametrar på cmdleten eller anger dem i New-AzBlueprintAssignment JSON-filen med parametern AssignmentFile.
Kör skissdistributionen genom att tilldela den till en prenumeration. Eftersom parametrarna deltagare och ägare kräver att en matris med objectIds för huvudnamnen beviljas rolltilldelningen använder du Azure Active Directory Graph-API:et 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.jsonAnvändartilldelad hanterad identitet
En skisstilldelning kan även använda en användartilldelad hanterad identitet. I det här fallet ändras identitetsdelen av JSON-tilldelningsfilen på följande sätt. Ersätt
{tenantId}, , och med ditt{subscriptionId}{yourRG}tenantId, subscriptionId, resursgruppens namn och namnet på{userIdentity}din användar tilldelade 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 någon av de prenumerationer och resursgrupper som användaren som tilldelade skissen har behörighet till.
Viktigt
Azure Blueprints hanterar inte den användar tilldelade hanterade identiteten. Användarna är ansvariga för att tilldela tillräckligt med roller och behörigheter, för att inte skisstilldelningen ska misslyckas.
Rensa resurser
Ta bort en skisstilldelning
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 Remove-AzBlueprintAssignment cmdleten :
assignMyBlueprint
Remove-AzBlueprintAssignment -Name 'assignMyBlueprint'
Nästa steg
I den här snabbstarten har du skapat, tilldelat och tagit bort en skiss med PowerShell. Om du vill veta mer Azure Blueprints kan du fortsätta till artikeln livscykel för skisser.


