Hantera tilldelningar med PowerShell
En skisstilldelning kan hanteras med hjälp av modulen Az.Blueprint Azure PowerShell. Modulen stöder hämtning, skapande, uppdatering och borttagning av tilldelningar. Modulen kan också hämta information om befintliga skissdefinitioner. Den här artikeln beskriver hur du installerar modulen och börjar använda den.
Lägga till Az.Blueprint-modulen
Om du Azure PowerShell att hantera skisstilldelningar måste modulen läggas till. Den här modulen kan användas med lokalt installerat PowerShell, med Azure Cloud Shell eller med Azure PowerShell Docker-avbildningen.
Grundläggande krav
Modulen Azure Blueprints kräver följande programvara:
- Azure PowerShell 1.5.0 eller senare. Om den ännu inte är installerad följer du de här instruktionerna.
- PowerShellGet 2.0.1 eller högre. Om den inte är installerad eller uppdaterad följer du de här instruktionerna.
Installera modulen
Modulen Azure Blueprints PowerShell är Az.Blueprint.
Från en administrativ PowerShell-prompt kör du följande kommando:
# Install the Azure Blueprints module from PowerShell Gallery Install-Module -Name Az.BlueprintAnteckning
Om Az.Accounts redan är installerat kan det vara nödvändigt att använda
-AllowClobberför att tvinga fram installationen.Kontrollera att modulen har importerats och har rätt version (0.2.6):
# Get a list of commands for the imported Az.Blueprint module Get-Command -Module 'Az.Blueprint' -CommandType 'Cmdlet'
Hämta skissdefinitioner
Det första steget för att arbeta med en tilldelning är ofta att få en referens till en skissdefinition.
Get-AzBlueprintCmdleten hämtar en eller flera skissdefinitioner. Cmdleten kan hämta skissdefinitioner från en hanteringsgrupp -ManagementGroupId {mgId} med eller en prenumeration med -SubscriptionId {subId} . Parametern Name hämtar en skissdefinition, men måste användas med ManagementGroupId eller SubscriptionId. Version kan användas med Namn för att vara mer explicit om vilken skissdefinition som returneras. I stället för Version hämtar -LatestPublished växeln den senast publicerade versionen.
I följande exempel används för att hämta alla versioner av en skissdefinition med namnet Get-AzBlueprint "101-blueprints-definition-subscription" från en specifik prenumeration som representeras som {subId} :
# Login first with Connect-AzAccount if not using Cloud Shell
# Get all versions of the blueprint definition in the specified subscription
$blueprints = Get-AzBlueprint -SubscriptionId '{subId}' -Name '101-blueprints-definition-subscription'
# Display the blueprint definition object
$blueprints
Exempelutdata för en skissdefinition med flera versioner ser ut så här:
Name : 101-blueprints-definition-subscription
Id : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprints/101
-blueprints-definition-subscription
DefinitionLocationId : {subId}
Versions : {1.0, 1.1}
TimeCreated : 2019-02-25
TargetScope : Subscription
Parameters : {storageAccount_storageAccountType, storageAccount_location,
allowedlocations_listOfAllowedLocations, [Usergrouporapplicationname]:Reader_RoleAssignmentName}
ResourceGroups : ResourceGroup
Skissparametrarna i skissdefinitionen kan utökas för att ge mer information.
$blueprints.Parameters
Key Value
--- -----
storageAccount_storageAccountType Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
storageAccount_location Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
allowedlocations_listOfAllowedLocations Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
[Usergrouporapplicationname]:Reader_RoleAssignmentName Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
Hämta skisstilldelningar
Om skisstilldelningen redan finns kan du hämta en referens till den med Get-AzBlueprintAssignment cmdleten . Cmdleten tar SubscriptionId och Name som valfria parametrar. Om SubscriptionId inte anges används den aktuella prenumerationskontexten.
I följande exempel används för att hämta en enskild skisstilldelning med Get-AzBlueprintAssignment namnet "Assignment-lock-resource-groups" från en specifik prenumeration som representeras som {subId} :
# Login first with Connect-AzAccount if not using Cloud Shell
# Get the blueprint assignment in the specified subscription
$blueprintAssignment = Get-AzBlueprintAssignment -SubscriptionId '{subId}' -Name 'Assignment-lock-resource-groups'
# Display the blueprint assignment object
$blueprintAssignment
Exempelutdata för en skisstilldelning ser ut så här:
Name : Assignment-lock-resource-groups
Id : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprintAssignme
nts/Assignment-lock-resource-groups
Scope : /subscriptions/{subId}
LastModified : 2019-02-19
LockMode : AllResourcesReadOnly
ProvisioningState : Succeeded
Parameters :
ResourceGroups : ResourceGroup
Skapa skisstilldelningar
Om skisstilldelningen inte finns ännu kan du skapa den med New-AzBlueprintAssignment cmdleten . Denna cmdlet använder följande parametrar:
Namn [krävs]
- Anger namnet på skisstilldelningen
- Måste vara unikt och inte redan finnas i SubscriptionId
Skiss [krävs]
- Anger skissdefinitionen som ska tilldelas
- Använd
Get-AzBlueprintför att hämta referensobjektet
Plats [krävs]
- Anger regionen för det system tilldelade distributionsobjektet för hanterad identitet och prenumeration som ska skapas i
Prenumeration (valfritt)
- Anger den prenumeration som tilldelningen distribueras till
- Om inget anges används som standard den aktuella prenumerationskontexten
Lås (valfritt)
- Definierar skissresurslåsningen som ska användas för distribuerade resurser
- Alternativ som stöds: Ingen, AllResourcesReadOnly, AllResourcesDoNotDelete
- Om inget anges används som standard Ingen
SystemAssignedIdentity (valfritt)
- Välj att skapa en system tilldelad hanterad identitet för tilldelningen och distribuera resurserna
- Standard för parameteruppsättningen "identity"
- Kan inte användas med UserAssignedIdentity
UserAssignedIdentity (valfritt)
- Anger den användar tilldelade hanterade identiteten som ska användas för tilldelningen och för att distribuera resurserna
- En del av parameteruppsättningen "identity"
- Kan inte användas med SystemAssignedIdentity
Parameter (valfritt)
En hash-tabell med nyckel/värde-par för att ange dynamiska parametrar för skisstilldelningen
Standardvärdet för en dynamisk parameter är defaultValue i definitionen
Om en parameter inte anges och inte har något defaultValue är parametern inte valfri
Anteckning
Parametern stöder inte secureStrings.
ResourceGroupParameter (valfritt)
- En hash-tabell med resursgruppsartefakter
- Varje platshållare för resursgruppsartefakter har nyckel/värde-par för att dynamiskt ange Namn och Plats för resursgruppens artefakt
- Om en resursgruppsparameter inte anges och inte har något defaultValue är resursgruppsparametern inte valfri
AssignmentFile (valfritt)
- Sökvägen till en JSON-filrepresentation av en skisstilldelning
- Den här parametern är en del av en PowerShell-parameteruppsättning som endast innehåller Name, Blueprint och SubscriptionId plus de vanliga parametrarna.
Exempel 1: Ange parametrar
I följande exempel skapas en ny tilldelning av version "1.1" av skissdefinitionen "my-blueprint" hämtad med , anger platsen för det hanterade identitets- och tilldelningsobjektet till "westus2", låser resurserna med Get-AzBlueprint AllResourcesReadOnly och anger hash-tabellerna för både Parameter och ResourceGroupParameter för en specifik prenumeration som representeras som {subId} :
# Login first with Connect-AzAccount if not using Cloud Shell
# Get version '1.1' of the blueprint definition in the specified subscription
$bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'my-blueprint' -Version '1.1'
# Create the hash table for Parameters
$bpParameters = @{storageAccount_storageAccountType='Standard_GRS'}
# Create the hash table for ResourceGroupParameters
# ResourceGroup is the resource group artifact placeholder name
$bpRGParameters = @{ResourceGroup=@{name='storage_rg';location='westus2'}}
# Create the new blueprint assignment
$bpAssignment = New-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
-SubscriptionId '{subId}' -Location 'westus2' -Lock AllResourcesReadOnly `
-Parameter $bpParameters -ResourceGroupParameter $bpRGParameters
Exempelutdata för att skapa en skisstilldelning ser ut så här:
Name : my-blueprint-assignment
Id : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprintAssi
gnments/my-blueprint-assignment
Scope : /subscriptions/{subId}
LastModified : 2019-03-13
LockMode : AllResourcesReadOnly
ProvisioningState : Creating
Parameters : {storageAccount_storageAccountType}
ResourceGroups : ResourceGroup
Exempel 2: Använda en definitionsfil för JSON-tilldelning
I följande exempel skapas nästan samma tilldelning som exempel 1. I stället för att skicka parametrar till cmdleten visar exemplet användning av en JSON-tilldelningsdefinitionsfil och parametern AssignmentFile. Dessutom konfigureras egenskapen excludedPrincipals som en del av låsen. Det finns ingen PowerShell-parameter för excludedPrincipals och egenskapen kan bara konfigureras genom att ange den via JSON-tilldelningsdefinitionsfilen.
{
"identity": {
"type": "SystemAssigned"
},
"location": "westus2",
"properties": {
"description": "Assignment of the 101-blueprint-definition-subscription",
"blueprintId": "/subscriptions/{subId}/providers/Microsoft.Blueprint/blueprints/101-blueprints-definition-subscription",
"locks": {
"mode": "AllResourcesReadOnly",
"excludedPrincipals": [
"7be2f100-3af5-4c15-bcb7-27ee43784a1f",
"38833b56-194d-420b-90ce-cff578296714"
]
},
"parameters": {
"storageAccount_storageAccountType": {
"value": "Standard_GRS"
}
},
"resourceGroups": {
"ResourceGroup": {
"name": "storage_rg",
"location": "westus2"
}
}
}
}
# Login first with Connect-AzAccount if not using Cloud Shell
# Create the new blueprint assignment
$bpAssignment = New-AzBlueprintAssignment -Name 'my-blueprint-assignment' -SubscriptionId '{subId}' `
-AssignmentFile '.\assignment.json'
Ett exempel på JSON-tilldelningsdefinitionsfilen för en användar tilldelad hanterad identitet finns i begärandetexten i Exempel: Tilldelning med användartilldelning av hanterad identitet för REST API.
Uppdatera skisstilldelningar
Ibland kan det vara nödvändigt att uppdatera en skisstilldelning som redan har skapats. Set-AzBlueprintAssignmentCmdleten hanterar den här åtgärden. Cmdleten tar de flesta av de parametrar som cmdleten gör, vilket gör att allt som har angetts New-AzBlueprintAssignment för tilldelningen kan uppdateras. Undantagen är Namn, Skiss och SubscriptionId. Endast de angivna värdena uppdateras.
Information om vad som händer när du uppdaterar en skisstilldelning finns i Regler för att uppdatera tilldelningar.
Namn [krävs]
- Anger namnet på skisstilldelningen som ska uppdateras
- Används för att hitta tilldelningen som ska uppdateras, inte för att ändra tilldelningen
Skiss [krävs]
- Anger skissdefinitionen för skisstilldelningen
- Använd
Get-AzBlueprintför att hämta referensobjektet - Används för att hitta tilldelningen som ska uppdateras, inte för att ändra tilldelningen
Plats (valfritt)
- Anger regionen för det system tilldelade distributionsobjektet för hanterad identitet och prenumeration som ska skapas i
Prenumeration (valfritt)
- Anger den prenumeration som tilldelningen distribueras till
- Om inget anges används som standard den aktuella prenumerationskontexten
- Används för att hitta tilldelningen som ska uppdateras, inte för att ändra tilldelningen
Lås (valfritt)
- Definierar skissresurslåsningen som ska användas för distribuerade resurser
- Alternativ som stöds: Ingen, AllResourcesReadOnly, AllResourcesDoNotDelete
SystemAssignedIdentity (valfritt)
- Välj att skapa en system tilldelad hanterad identitet för tilldelningen och distribuera resurserna
- Standard för parameteruppsättningen "identity"
- Kan inte användas med UserAssignedIdentity
UserAssignedIdentity (valfritt)
- Anger den användar tilldelade hanterade identiteten som ska användas för tilldelningen och för att distribuera resurserna
- En del av parameteruppsättningen "identity"
- Kan inte användas med SystemAssignedIdentity
Parameter (valfritt)
En hash-tabell med nyckel/värde-par för att ange dynamiska parametrar för skisstilldelningen
Standardvärdet för en dynamisk parameter är defaultValue i definitionen
Om en parameter inte anges och inte har något defaultValue är parametern inte valfri
Anteckning
Parametern stöder inte secureStrings.
ResourceGroupParameter (valfritt)
- En hash-tabell med resursgruppsartefakter
- Varje platshållare för resursgruppsartefakter har nyckel/värde-par för att dynamiskt ange Namn och Plats för resursgruppens artefakt
- Om en resursgruppsparameter inte anges och inte har något defaultValue är resursgruppsparametern inte valfri
I följande exempel uppdateras tilldelningen av version 1.1 av skissdefinitionen "my-blueprint" som hämtas med genom att Get-AzBlueprint ändra låsläget:
# Login first with Connect-AzAccount if not using Cloud Shell
# Get version '1.1' of the blueprint definition in the specified subscription
$bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'my-blueprint' -Version '1.1'
# Update the existing blueprint assignment
$bpAssignment = Set-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
-SubscriptionId '{subId}' -Lock AllResourcesDoNotDelete
Exempelutdata för att skapa en skisstilldelning ser ut så här:
Name : my-blueprint-assignment
Id : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprintAssi
gnments/my-blueprint-assignment
Scope : /subscriptions/{subId}
LastModified : 2019-03-13
LockMode : AllResourcesDoNotDelete
ProvisioningState : Updating
Parameters : {storageAccount_storageAccountType}
ResourceGroups : ResourceGroup
Ta bort skisstilldelningar
När det är dags att ta bort en skisstilldelning hanterar Remove-AzBlueprintAssignment cmdleten den här åtgärden. Cmdleten tar antingen Name eller InputObject för att ange vilken skisstilldelning som ska tas bort. SubscriptionId krävs och måste anges i samtliga fall.
I följande exempel hämtas en befintlig skisstilldelning med Get-AzBlueprintAssignment och tas sedan bort från den specifika prenumeration som representeras som {subId} :
# Login first with Connect-AzAccount if not using Cloud Shell
# Get the blueprint assignment in the specified subscription
$blueprintAssignment = Get-AzBlueprintAssignment -Name 'Assignment-lock-resource-groups'
# Remove the existing blueprint assignment
Remove-AzBlueprintAssignment -InputObject $blueprintAssignment -SubscriptionId '{subId}'
Kodexempel
För samman alla steg hämtar följande exempel skissdefinitionen och skapar, uppdaterar och tar bort en skisstilldelning i den specifika prenumeration som representeras som {subId} :
# Login first with Connect-AzAccount if not using Cloud Shell
#region GetBlueprint
# Get version '1.1' of the blueprint definition in the specified subscription
$bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'my-blueprint' -Version '1.1'
#endregion
#region CreateAssignment
# Create the hash table for Parameters
$bpParameters = @{storageAccount_storageAccountType='Standard_GRS'}
# Create the hash table for ResourceGroupParameters
# ResourceGroup is the resource group artifact placeholder name
$bpRGParameters = @{ResourceGroup=@{name='storage_rg';location='westus2'}}
# Create the new blueprint assignment
$bpAssignment = New-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
-SubscriptionId '{subId}' -Location 'westus2' -Lock AllResourcesReadOnly `
-Parameter $bpParameters -ResourceGroupParameter $bpRGParameters
#endregion CreateAssignment
# Wait for the blueprint assignment to finish deployment prior to the next steps
#region UpdateAssignment
# Update the existing blueprint assignment
$bpAssignment = Set-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
-SubscriptionId '{subId}' -Lock AllResourcesDoNotDelete
#endregion UpdateAssignment
# Wait for the blueprint assignment to finish deployment prior to the next steps
#region RemoveAssignment
# Remove the existing blueprint assignment
Remove-AzBlueprintAssignment -InputObject $bpAssignment -SubscriptionId '{subId}'
#endregion
Nästa steg
- Mer information om livscykeln för en skiss.
- Förstå hur du använder statiska och dynamiska parametrar.
- Lär dig hur du anpassar sekvensordningen för en skiss.
- Lär dig hur du använder resurslåsning för en skiss.
- Lös problem som kan uppstå vid tilldelningen av en skiss med allmän felsökning.