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:

Installera modulen

Modulen Azure Blueprints PowerShell är Az.Blueprint.

  1. Från en administrativ PowerShell-prompt kör du följande kommando:

    # Install the Azure Blueprints module from PowerShell Gallery
    Install-Module -Name Az.Blueprint
    

    Anteckning

    Om Az.Accounts redan är installerat kan det vara nödvändigt att använda -AllowClobber för att tvinga fram installationen.

  2. 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-AzBlueprint fö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-AzBlueprint fö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