PowerShell ile atamaları yönetme

şema atama Az. şema Azure PowerShell modülü kullanılarak yönetilebilir. Modül, atamaları getirmeyi, oluşturmayı, güncelleştirmeyi ve kaldırmayı destekler. Modül, var olan şema tanımlarında ayrıntılar da getirebilir. Bu makalede, modülün nasıl yükleneceği ve nasıl kullanılacağı ele alınmaktadır.

Az. Blueprint modülünü ekleyin

şema atamalarını yönetmek için Azure PowerShell etkinleştirmek üzere modülün eklenmesi gerekir. bu modül, Azure Cloud Shellile veya Azure PowerShell docker görüntüsüyleyerel olarak yüklü PowerShell ile kullanılabilir.

Temel gereksinimler

Azure şemaları modülü için aşağıdaki yazılımlar gereklidir:

  • Azure PowerShell 1.5.0 veya üzeri. Henüz yüklenmiş değilse, bu yönergeleri izleyin.
  • PowerShellGet 2.0.1 veya üzeri. Henüz yüklenmiş ve güncellenmiş değilse, bu yönergeleri izleyin.

Modülü yükler

PowerShell için Azure şemaları modülü az. Blueprint olur.

  1. Bir Yönetim PowerShell isteminde aşağıdaki komutu çalıştırın:

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

    Not

    Az. Accounts zaten yüklüyse, -AllowClobber yüklemeyi zorlamak için kullanılması gerekebilir.

  2. Modülün içeri aktarıldığını ve doğru sürüm (0.2.6) olduğunu doğrulayın:

    # Get a list of commands for the imported Az.Blueprint module
    Get-Command -Module 'Az.Blueprint' -CommandType 'Cmdlet'
    

Şema tanımlarını al

Atama ile çalışmanın ilk adımı, genellikle bir şema tanımına başvuru almaktır. Get-AzBlueprintCmdlet 'i bir veya daha fazla şema tanımı alır. Cmdlet 'i ile olan bir yönetim grubundan şema tanımlarını -ManagementGroupId {mgId} veya ile aboneliği alabilir -SubscriptionId {subId} . Name parametresi bir şema tanımı alır, ancak ManagementGroupId veya SubscriptionID ile birlikte kullanılmalıdır. Sürüm , ad ile birlikte kullanılabilir ve bu, hangi şema tanımının döndürüldüğünden daha açık olacaktır. Sürüm yerine, anahtar -LatestPublished en son yayımlanan sürümü de dönüştürür.

Aşağıdaki örnek, Get-AzBlueprint ' 101-planlar-Definition-Subscription ' adlı bir şema tanımının tüm sürümlerini şu şekilde gösterilen belirli bir abonelikten almak için kullanır {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

Birden çok sürümü olan bir şema tanımının örnek çıktısı şuna benzer:

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

Şema tanımındaki şema parametreleri daha fazla bilgi sağlamak için genişletilebilir.

$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

Şema atamalarını al

Şema ataması zaten varsa cmdlet 'ini kullanarak buna bir başvuru alabilirsiniz Get-AzBlueprintAssignment . Cmdlet 'i, SubscriptionID ve adı isteğe bağlı parametreler olarak alır. SubscriptionID belirtilmemişse, geçerli abonelik bağlamı kullanılır.

Aşağıdaki örnek, Get-AzBlueprintAssignment olarak belirtilen belirli bir aboneliğin ' atama-kilitleme-kaynak-gruplar ' adlı tek bir şema atamasını almak için kullanır {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

Bir şema atamasının örnek çıktısı şöyle görünü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

Şema atamaları oluşturma

Şema ataması henüz yoksa New-AzBlueprintAssignment cmdlet 'ini kullanarak oluşturabilirsiniz. Bu cmdlet şu parametreleri kullanır:

  • Ad [gerekli]

    • Şema atamasının adını belirtir
    • Benzersiz olmalı ve abonelik kimliği zaten mevcut değil
  • Blueprint [gerekli]

    • Atanacak şema tanımını belirtir
    • Get-AzBlueprintBaşvuru nesnesini almak için kullanın
  • Konum [gerekli]

    • Sistem tarafından atanan yönetilen kimlik ve abonelik dağıtım nesnesinin oluşturulacağı bölgeyi belirtir
  • Abonelik (isteğe bağlı)

    • Atamanın dağıtıldığı aboneliği belirtir
    • Sağlanmazsa, varsayılan olarak geçerli abonelik bağlamına
  • Kilitle (isteğe bağlı)

    • Dağıtılan kaynaklar için kullanılacak şema kaynak kilitlemeyi tanımlar
    • Desteklenen seçenekler: none, allresourcesreadonly, allresourcesdonotdelete
    • Sağlanmazsa varsayılan değer none olur
  • Systemassignedıdentity (isteğe bağlı)

    • Atama için sistem tarafından atanan yönetilen kimlik oluşturmak ve kaynakları dağıtmak için seçin
    • "Identity" parametre kümesi için varsayılan
    • Useratandıdentity ile kullanılamaz
  • Useratandıdentity (isteğe bağlı)

    • Atama ve kaynakları dağıtma için kullanılacak kullanıcı tarafından atanan yönetilen kimliği belirtir
    • "Identity" parametre kümesinin bir parçası
    • Systemassignedıdentity ile kullanılamaz
  • Parametre (isteğe bağlı)

    • Şema atamasında dinamik parametreleri ayarlamak için anahtar/değer çiftlerinin karma tablosu

    • Bir dinamik parametre için varsayılan değer, tanımdaki DefaultValue 'dir

    • Bir parametre sağlanmazsa ve DefaultValue yoksa, parametre isteğe bağlı değildir

      Not

      Parametre securestrings 'i desteklemiyor.

  • Resourcegroupparameter (isteğe bağlı)

    • Kaynak grubu yapıtlarının karma tablosu
    • Her kaynak grubu yapıt yer tutucusu, bu kaynak grubu yapıtı üzerinde dinamik ayar adı ve konumu için anahtar/değer çiftlerine sahiptir
    • Bir kaynak grubu parametresi sağlanmazsa ve DefaultValue yoksa, kaynak grubu parametresi isteğe bağlı değildir
  • Atamadosyası (isteğe bağlı)

    • Bir şema atamasının JSON dosyası gösteriminin yolu
    • Bu parametre, yalnızca Name, Blueprint ve SubscriptionID ve ortak parametreleri içeren bir PowerShell parametre kümesinin bir parçasıdır.

Örnek 1: parametre sağlama

Aşağıdaki örnek ile birlikte getirilen ' My-şema ' şema tanımının ' 1,1 ' sürümünün yeni bir atamasını oluşturur Get-AzBlueprint , yönetilen kimliği ve atama nesnesi konumunu ' westus2 ' olarak ayarlar, kaynakları allresourcesreadonly ile kilitler ve aşağıdaki gibi belirli bir abonelikte hem parametre hem de resourcegroupparameter için karma tabloları ayarlar {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

Bir şema ataması oluşturmak için örnek çıktı şöyle görünü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

Örnek 2: JSON atama tanım dosyası kullanma

Aşağıdaki örnekte, Örnek 1ile neredeyse aynı atama oluşturulur. Cmdlet 'e parametre geçirmek yerine, örnek bir JSON atama tanımı dosyası ve Atamadosyası parametresinin kullanımını gösterir. Ayrıca, Excludedsorumlularını özelliği kilitlerin bir parçası olarak yapılandırılır. Excludedsorumlularını Için bir PowerShell parametresi yoktur ve ÖZELLIK yalnızca JSON atama tanımı dosyası aracılığıyla ayarlanarak yapılandırılabilir.

{
  "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'

Kullanıcı tarafından atanan yönetilen kimliğin JSON atama tanım dosyasının bir örneği için, örnek: REST API için Kullanıcı tarafından atanan yönetilen kimlik Ile atama .

Şema atamalarını Güncelleştir

Bazen zaten oluşturulmuş bir şema atamasının güncelleştirilmesi gerekir. Set-AzBlueprintAssignmentCmdlet 'i bu eylemi işler. Cmdlet 'i cmdlet 'in kullandığı parametrelerin çoğunu alır New-AzBlueprintAssignment ve atamada ayarlanan her şeyin güncelleştirilmesine izin verir. Özel durumlar ad, Blueprint ve SubscriptionID' dir. Yalnızca belirtilen değerler güncellenir.

Bir şema atamasını güncelleştirirken ne olduğunu anlamak için bkz. atamaları güncelleştirme kuralları.

  • Ad [gerekli]

    • Güncelleştirilecek BLUEPRINT atamasının adını belirtir
    • Güncelleştirme atamasını bulmak için kullanılır, atamayı değiştirmez
  • Blueprint [gerekli]

    • Şema atamasının şema tanımını belirtir
    • Get-AzBlueprintBaşvuru nesnesini almak için kullanın
    • Güncelleştirme atamasını bulmak için kullanılır, atamayı değiştirmez
  • Konum (isteğe bağlı)

    • Sistem tarafından atanan yönetilen kimlik ve abonelik dağıtım nesnesinin oluşturulacağı bölgeyi belirtir
  • Abonelik (isteğe bağlı)

    • Atamanın dağıtıldığı aboneliği belirtir
    • Sağlanmazsa, varsayılan olarak geçerli abonelik bağlamına
    • Güncelleştirme atamasını bulmak için kullanılır, atamayı değiştirmez
  • Kilitle (isteğe bağlı)

    • Dağıtılan kaynaklar için kullanılacak şema kaynak kilitlemeyi tanımlar
    • Desteklenen seçenekler: none, allresourcesreadonly, allresourcesdonotdelete
  • Systemassignedıdentity (isteğe bağlı)

    • Atama için sistem tarafından atanan yönetilen kimlik oluşturmak ve kaynakları dağıtmak için seçin
    • "Identity" parametre kümesi için varsayılan
    • Useratandıdentity ile kullanılamaz
  • Useratandıdentity (isteğe bağlı)

    • Atama ve kaynakları dağıtma için kullanılacak kullanıcı tarafından atanan yönetilen kimliği belirtir
    • "Identity" parametre kümesinin bir parçası
    • Systemassignedıdentity ile kullanılamaz
  • Parametre (isteğe bağlı)

    • Şema atamasında dinamik parametreleri ayarlamak için anahtar/değer çiftlerinin karma tablosu

    • Bir dinamik parametre için varsayılan değer, tanımdaki DefaultValue 'dir

    • Bir parametre sağlanmazsa ve DefaultValue yoksa, parametre isteğe bağlı değildir

      Not

      Parametre securestrings 'i desteklemiyor.

  • Resourcegroupparameter (isteğe bağlı)

    • Kaynak grubu yapıtlarının karma tablosu
    • Her kaynak grubu yapıt yer tutucusu, bu kaynak grubu yapıtı üzerinde dinamik ayar adı ve konumu için anahtar/değer çiftlerine sahiptir
    • Bir kaynak grubu parametresi sağlanmazsa ve DefaultValue yoksa, kaynak grubu parametresi isteğe bağlı değildir

Aşağıdaki örnek, kilit modunu değiştirerek ' My-şema ' şema tanımının ' 1,1 ' sürümünün atamasını güncelleştirir Get-AzBlueprint :

# 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

Bir şema ataması oluşturmak için örnek çıktı şöyle görünü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

Şema atamalarını kaldır

Bir şema atamasının kaldırılması sırasında, Remove-AzBlueprintAssignment cmdlet bu eylemi işler. Cmdlet 'i hangi şema atamasının kaldırılacağını belirtmek için Name ya da InputObject değerini alır. SubscriptionID gereklidir ve her durumda belirtilmelidir.

Aşağıdaki örnek, ile var olan bir şema atamasını getirir Get-AzBlueprintAssignment ve bu atamayı şöyle temsil eden belirli bir abonelikten kaldırır {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}'

Kod örneği

Tüm adımları bir araya getiren aşağıdaki örnek, şema tanımını alır, ardından belirli bir abonelikte şu şekilde gösterilen bir şema atamasını oluşturur, güncelleştirir ve kaldırır {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

Sonraki adımlar