Cara mengelola tugas dengan PowerShell

Tugas cetak biru dapat dikelola menggunakan modul Az.Blueprint Azure PowerShell. Modul ini mendukung pengambilan, pembuatan, pembaruan, dan penghapusan tugas. Modul juga dapat mengambil detail definisi cetak biru yang ada. Artikel ini membahas cara menginstal modul dan mulai menggunakannya.

Menambahkan modul Az.Blueprint

Untuk mengaktifkan Azure PowerShell guna mengelola tugas cetak biru, modul harus ditambahkan. Modul ini dapat digunakan dengan PowerShell yang diinstal secara lokal, dengan Azure Cloud Shell, atau dengan gambar Docker Azure PowerShell.

Persyaratan dasar

Modul Azure Blueprints memerlukan perangkat lunak berikut:

  • Azure PowerShell 1.5.0 atau versi lebih tinggi. Jika belum terpasang, ikuti petunjuk ini.
  • PowerShellGet 2.0.1 atau versi lebih tinggi. Jika belum diinstal atau diperbarui, ikuti petunjuk ini.

Menginstal modul

Modul Azure Blueprints untuk PowerShell adalah Az.Blueprint.

  1. Dari dialog permintaan PowerShell administratif, jalankan perintah berikut:

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

    Catatan

    Jika Az.Accounts sudah terinstal, mungkin perlu menggunakan -AllowClobber untuk memaksa penginstalan.

  2. Validasikan bahwa modul telah diimpor dan merupakan versi yang benar (0.2.6):

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

Mendapatkan definisi cetak biru

Langkah pertama untuk bekerja dengan tugas adalah sering mendapatkan referensi ke definisi cetak biru. Get-AzBlueprint cmdlet mendapatkan satu atau beberapa definisi cetak biru. Cmdlet dapat memperoleh definisi cetak biru dari grup manajemen dengan -ManagementGroupId {mgId} atau langganan dengan -SubscriptionId {subId}. Parameter Nama mendapatkan definisi cetak biru, tetapi harus digunakan dengan ManagementGroupId atau SubscriptionId. Versi dapat digunakan dengan Nama untuk lebih eksplisit tentang definisi cetak biru mana yang dikembalikan. Seagai ganti Versi, switch -LatestPublished mengambil versi terbaru yang dipublikasikan.

Contoh berikut menggunakan Get-AzBlueprint untuk mendapatkan semua versi definisi cetak biru bernama '101-blueprints-definition-subscription' dari langganan tertentu yang direpresentasikan sebagai {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

Contoh output untuk definisi cetak biru dengan beberapa versi terlihat seperti ini:

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

Parameter cetak biru pada definisi cetak biru dapat diperluas untuk memberikan informasi lebih lanjut.

$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

Mendapatkan tugas cetak biru

Jika tugas cetak biru sudah ada, Anda dapat memperoleh referensinya dengan Get-AzBlueprintAssignment cmdlet. Cmdlet menggunakan SubscriptionId dan Name sebagai parameter opsional. Jika SubscriptionId tidak ditentukan, konteks langganan saat ini akan digunakan.

Contoh berikut menggunakan Get-AzBlueprintAssignment untuk mendapatkan satu tugas cetak biru bernama 'Assignment-lock-resource-groups' dari langganan tertentu yang direpresentasikan sebagai {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

Contoh output untuk tugas cetak biru terlihat seperti ini:

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

Membuatuat tugas cetak biru

Jika tugas cetak biru belum ada, Anda dapat membuatnya dengan New-AzBlueprintAssignment cmdlet. Cmdlet ini menggunakan parameter berikut:

  • Nama [wajib]

    • Menentukan nama tugas cetak biru
    • Harus unik dan belum ada di SubscriptionId
  • Cetak Biru [wajib]

    • Menentukan definisi cetak biru untuk ditetapkan
    • Gunakan Get-AzBlueprint untuk mendapatkan objek referensi
  • Lokasi [wajib]

    • Menentukan wilayah untuk identitas terkelola yang ditetapkan sistem dan objek penyebaran langganan yang akan dibuat di wilayah tersebut
  • Langganan (opsional)

    • Menentukan langganan tempat tugas disebarkan
    • Jika tidak disediakan, default ke konteks langganan saat ini
  • Kunci (opsional)

    • Menentukan penguncian sumber daya cetak biru yang akan digunakan untuk sumber daya yang disebarkan
    • Opsi yang didukung: Tidak ada, AllResourcesReadOnly, AllResourcesDoNotDelete
    • Jika tidak disediakan, defaultnya adalah Tidak Ada
  • SystemAssignedIdentity (opsional)

    • Pilih untuk membuat identitas terkelola yang ditetapkan sistem untuk tugas dan untuk menyebarkan sumber daya
    • Default untuk set parameter "identitas"
    • Tidak dapat digunakan dengan UserAssignedIdentity
  • UserAssignedIdentity (opsional)

    • Menentukan identitas terkelola yang ditetapkan pengguna untuk digunakan untuk tugas dan untuk menyebarkan sumber daya
    • Bagian dari set parameter "identitas"
    • Tidak dapat digunakan dengan SystemAssignedIdentity
  • Parameter (opsional)

    • Tabel hash pasangan kunci/nilai untuk mengatur parameter dinamis pada tugas cetak biru

    • Default untuk parameter dinamis adalah defaultValue dalam definisi

    • Jika parameter tidak disediakan dan tidak memiliki defaultValue, parameter tersebut tidak bersifat opsional

      Catatan

      Parameter tidak mendukung secureStrings.

  • ResourceGroupParameter (opsional)

    • Tabel hash artefak grup sumber daya
    • Setiap placeholder artefak grup sumber daya memiliki pasangan kunci/nilai untuk menyetel Nama dan Lokasi secara dinamis pada artefak grup sumber daya tersebut
    • Jika parameter grup sumber daya tidak disediakan dan tidak memiliki defaultValue, parameter grup sumber daya tidak bersifat opsional
  • AssignmentFile (opsional)

    • Jalur ke representasi file JSON dari tugas cetak biru
    • Parameter ini adalah bagian dari kumpulan parameter PowerShell yang hanya menyertakan Nama, Cetak Biru, dan SubscriptionId, ditambah parameter umum.

Contoh 1: Berikan parameter

Contoh berikut membuat penetapan baru versi '1.1' dari definisi cetak biru 'my-blueprint' yang diambil dengan Get-AzBlueprint, menetapkan identitas terkelola dan lokasi objek penetapan ke 'westus2', mengunci sumber daya dengan AllResourcesReadOnly, dan menetapkan tabel hash untuk Parameter dan ResourceGroupParameter pada langganan tertentu yang direpresentasikan sebagai {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

Contoh output untuk membuat tugas cetak biru terlihat seperti ini:

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

Contoh 2: Gunakan file definisi tugas JSON

Contoh berikut membuat tugas yang hampir sama dengan Contoh 1. Sebagai ganti meneruskan parameter ke cmdlet, contoh menunjukkan penggunaan file definisi tugas JSON dan parameter AssignmentFile. Selain itu, properti excludedPrincipals dikonfigurasi sebagai bagian dari kunci. Tidak ada parameter PowerShell untuk excludedPrincipals dan properti hanya dapat dikonfigurasi dengan mengaturnya melalui file definisi tugas JSON.

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

Untuk contoh file definisi tugas JSON untuk identitas terkelola yang ditetapkan pengguna, lihat isi permintaan di Contoh: TUgas dengan identitas terkelola yang ditetapkan pengguna untuk REST API.

Perbarui tugas cetak biru

Terkadang perlu memperbarui tugas cetak biru yang telah dibuat. Set-AzBlueprintAssignment cmdlet menangani tindakan ini. Cmdlet mengambil sebagian besar parameter yang sama dengan yang dilakukan cmdlet New-AzBlueprintAssignment, memungkinkan apa pun yang ditetapkan pada tugas untuk diperbarui. Pengecualiannya adalah Name, Blueprint, dan SubscriptionId. Hanya nilai yang diberikan yang diperbarui.

Untuk memahami apa yang terjadi saat memperbarui tugas cetak biru, lihat aturan untuk memperbarui tugas.

  • Nama [wajib]

    • Menentukan nama tugas cetak biru yang akan diperbarui
    • Digunakan untuk mencari tugas yang akan diperbarui, bukan untuk mengubah tugas
  • Cetak Biru [wajib]

    • Menentukan definisi cetak biru dari tugas cetak biru
    • Gunakan Get-AzBlueprint untuk mendapatkan objek referensi
    • Digunakan untuk mencari tugas yang akan diperbarui, bukan untuk mengubah tugas
  • Lokasi (opsional)

    • Menentukan wilayah untuk identitas terkelola yang ditetapkan sistem dan objek penyebaran langganan yang akan dibuat di wilayah tersebut
  • Langganan (opsional)

    • Menentukan langganan tempat tugas disebarkan
    • Jika tidak disediakan, default ke konteks langganan saat ini
    • Digunakan untuk mencari tugas yang akan diperbarui, bukan untuk mengubah tugas
  • Kunci (opsional)

    • Menentukan penguncian sumber daya cetak biru yang akan digunakan untuk sumber daya yang disebarkan
    • Opsi yang didukung: Tidak ada, AllResourcesReadOnly, AllResourcesDoNotDelete
  • SystemAssignedIdentity (opsional)

    • Pilih untuk membuat identitas terkelola yang ditetapkan sistem untuk tugas dan untuk menyebarkan sumber daya
    • Default untuk set parameter "identitas"
    • Tidak dapat digunakan dengan UserAssignedIdentity
  • UserAssignedIdentity (opsional)

    • Menentukan identitas terkelola yang ditetapkan pengguna untuk digunakan untuk tugas dan untuk menyebarkan sumber daya
    • Bagian dari set parameter "identitas"
    • Tidak dapat digunakan dengan SystemAssignedIdentity
  • Parameter (opsional)

    • Tabel hash pasangan kunci/nilai untuk mengatur parameter dinamis pada tugas cetak biru

    • Default untuk parameter dinamis adalah defaultValue dalam definisi

    • Jika parameter tidak disediakan dan tidak memiliki defaultValue, parameter tersebut tidak bersifat opsional

      Catatan

      Parameter tidak mendukung secureStrings.

  • ResourceGroupParameter (opsional)

    • Tabel hash artefak grup sumber daya
    • Setiap placeholder artefak grup sumber daya memiliki pasangan kunci/nilai untuk menyetel Nama dan Lokasi secara dinamis pada artefak grup sumber daya tersebut
    • Jika parameter grup sumber daya tidak disediakan dan tidak memiliki defaultValue, parameter grup sumber daya tidak bersifat opsional

Contoh berikut memperbarui tugas versi '1.1' dari definisi cetak biru 'my-blueprint' yang diambil dengan Get-AzBlueprint dengan mengubah mode kunci:

# 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

Contoh output untuk membuat tugas cetak biru terlihat seperti ini:

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

Menghapus tugas cetak biru

Saat tiba waktunya untuk menghapus tugas cetak biru, Remove-AzBlueprintAssignment cmdlet menangani tindakan ini. Cmdlet memerlukan Nama atau InputObject untuk menentukan tugas cetak biru mana yang akan dihapus. SubscriptionIddiperlukan dan harus diberikan dalam semua kasus.

Contoh berikut mengambil tugas cetak biru yang ada dengan Get-AzBlueprintAssignment dan kemudian menghapusnya dari langganan tertentu yang direpresentasikan sebagai {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}'

Contoh kode

Menggabungkan semua langkah, contoh berikut mendapatkan definisi cetak biru, lalu membuat, memperbarui, dan menghapus tugas cetak biru dalam langganan tertentu yang direpresentasikan sebagai {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

Langkah berikutnya