Menginstal Azure CLI di Azure Stack Hub
Anda dapat menginstal Azure CLI untuk mengelola Azure Stack Hub dengan mesin Windows atau Linux. Artikel ini memandu Anda dalam langkah-langkah menginstal dan menyiapkan Azure CLI.
Menginstal Azure CLI
Masuk ke stasiun kerja pengembangan Anda dan instal CLI. Azure Stack Hub memerlukan CLI Azure versi 2.0 atau yang lebih baru.
Penting
Karena CVE yang memengaruhi versi Azure CLI sebelumnya ke 2.40.0, tidak disarankan lagi agar Anda menggunakan Azure CLI 2.29.2 untuk Layanan Federasi Direktori Aktif di Azure Stack Hub. Anda dapat memperbarui ke Azure CLI 2.40.0 atau yang lebih tinggi. Namun, pelanggan Layanan Federasi Direktori Aktif mungkin mengalami masalah dengan perintah Azure CLI yang berinteraksi dengan titik akhir Microsoft Graph. Ini karena Microsoft Graph tidak didukung untuk Layanan Federasi Direktori Aktif. Untuk solusi untuk masalah Microsoft Graph, lihat bagian Masalah umum yang diketahui .
Anda memasang CLI dengan menggunakan langkah-langkah yang dijelaskan dalam artikel Menginstal CLI Azure.
Untuk memverifikasi apakah penginstalan berhasil, buka terminal atau jendela perintah dan jalankan perintah berikut:
az --version
Anda akan melihat versi CLI Azure dan pustaka dependen lainnya yang dipasang di komputer Anda.
Catat lokasi Python CLI.
Tambah sertifikat
Ekspor lalu impor sertifikat Azure Stack Hub untuk sistem terintegrasi yang terputus dan untuk ASDK. Untuk sistem terintegrasi yang tersambung, sertifikat ditandatangani secara publik dan langkah ini tidak diperlukan. Untuk petunjuknya, lihat Menyiapkan sertifikat untuk Azure CLI di Azure Stack Development Kit.
Menyambungkan dengan Azure CLI
- ID Microsoft Entra di Windows
- Active Directory Federation Services pada Windows
- ID Microsoft Entra di Linux
- Linux Active Directory Federation Services
Bagian ini memandu Anda menyiapkan CLI jika Anda menggunakan ID Microsoft Entra sebagai layanan manajemen identitas Anda, dan menggunakan CLI pada komputer Windows.
Menyambungkan ke Azure Stack Hub
Jika Anda menggunakan ASDK, percayai sertifikat akar Azure Stack Hub CA. Untuk instruksi, lihat Mempercayai sertifikat.
Daftarkan lingkungan Azure Stack Hub Anda dengan menjalankan perintah
az cloud register
.Daftarkan lingkungan Anda. Gunakan parameter berikut saat menjalankan
az cloud register
:Nilai Contoh Deskripsi Nama lingkungan AzureStackUser Gunakan AzureStackUser
untuk lingkungan pengguna. Jika Anda operator, tentukanAzureStackAdmin
.Titik akhir Resource Manager https://management.contoso.onmicrosoft.com
ResourceManagerUrl di ASDK adalah: https://management.local.azurestack.external/
ResourceManagerUrl dalam sistem terintegrasi adalah:https://management.<region>.<fqdn>/
Jika Anda memiliki pertanyaan tentang titik akhir sistem terintegrasi, hubungi operator cloud Anda.Titik akhir penyimpanan local.contoso.onmicrosoft.com local.azurestack.external
adalah untuk ASDK. Untuk sistem terintegrasi, gunakan titik akhir untuk sistem Anda.Akhiran Keyvault .vault.contoso.onmicrosoft.com .vault.local.azurestack.external
adalah untuk ASDK. Untuk sistem terintegrasi, gunakan titik akhir untuk sistem Anda.ID sumber daya grafik direktori aktif titik akhir https://graph.windows.net/ ID sumber daya Active Directory. az cloud register ` -n <environmentname> ` --endpoint-resource-manager "https://management.<region>.<fqdn>" ` --suffix-storage-endpoint "<fqdn>" ` --suffix-keyvault-dns ".vault.<fqdn>"
Anda dapat menemukan referensi untuk perintah register di dokumentasi referensi Azure CLI.
Atur lingkungan aktif dengan menggunakan perintah berikut.
az cloud set -n <environmentname>
Perbarui konfigurasi lingkungan Anda untuk menggunakan profil versi API khusus Azure Stack Hub. Untuk memperbarui konfigurasi, jalankan perintah berikut:
az cloud update --profile 2020-09-01-hybrid
Masuk ke lingkungan Azure Stack Hub Anda dengan menggunakan perintah
az login
.Anda dapat masuk ke lingkungan Azure Stack Hub menggunakan kredensial pengguna, atau dengan perwakilan layanan (SPN) yang diberikan kepada Anda oleh operator cloud Anda.
Masuk sebagai pengguna:
Anda dapat menentukan nama pengguna dan kata sandi langsung dalam perintah
az login
, atau melalui autentikasi dengan menggunakan browser. Anda harus melakukan pilihan kedua jika akun Anda mengaktifkan autentikasi multifaktor:az login -u "user@contoso.onmicrosoft.com" -p 'Password123!' --tenant contoso.onmicrosoft.com
Catatan
Jika akun pengguna Anda mengaktifkan autentikasi multifaktor, gunakan perintah
az login
tanpa menyediakan parameter-u
. Menjalankan perintah ini akan memberi Anda URL dan kode yang harus Anda gunakan untuk diautentikasi.Masuk sebagai perwakilan layanan:
Sebelum Anda masuk, buat perwakilan layanan melalui portal Microsoft Azure atau CLI dan tetapkan perannya. Sekarang, masuk dengan menggunakan perintah berikut:
az login ` --tenant <Azure Active Directory Tenant name. ` For example: myazurestack.onmicrosoft.com> ` --service-principal ` -u <Application Id of the Service Principal> ` -p <Key generated for the Service Principal>
Pastikan lingkungan Anda diatur dengan benar dan adalah cloud aktif.
az cloud list --output table
Anda harus melihat bahwa lingkungan Anda terdaftar dan IsActive adalah
true
. Contohnya:IsActive Name Profile ---------- ----------------- ----------------- False AzureCloud 2020-09-01-hybrid False AzureChinaCloud latest False AzureUSGovernment latest False AzureGermanCloud latest True AzureStackUser 2020-09-01-hybrid
Menguji konektivitas
Setelah semua disiapkan, gunakan CLI untuk membuat sumber daya di dalam Azure Stack Hub. Misalnya, Anda dapat membuat grup sumber daya untuk aplikasi dan menambahkan mesin virtual. Gunakan perintah berikut untuk membuat grup sumber daya bernama "MyResourceGroup":
az group create -n MyResourceGroup -l local
Jika grup sumber daya berhasil dibuat, perintah sebelumnya akan menghasilkan properti berikut dari sumber daya yang baru dibuat:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
"location": "local",
"name": "RGCLI1",
" properties ": {
"provisioningState": "Succeeded"
},
"tags ": null
}
Masalah umum yang diketahui
Perbaikan umum untuk sebagian besar masalah adalah menggunakan az rest
perintah yang menggunakan konteks Azure Stack saat ini, untuk melakukan panggilan REST API untuk perintah terkait dengan masalah tersebut. Solusi dalam daftar masalah berikut umumnya dapat diadaptasi untuk masalah Azure CLI lainnya selama masalah ini disebabkan oleh Azure CLI dan bukan penyedia sumber daya Azure Stack Hub atau layanan Azure Stack Hub lainnya.
Masalah Microsoft Graph
Ini adalah masalah Microsoft Graph yang diketahui untuk Azure CLI 2.40.0, atau yang lebih besar, untuk Azure Stack Hub. Ini terutama memengaruhi lingkungan ADFS karena tidak mendukung Microsoft Graph.
az keyvault create
berinteraksi dengan Microsoft Graph. Berikut ini adalah contoh solusi untuk ADFS. Terutama, solusinya menggunakan Azure AD Graph untuk mengambil informasi pengguna sepertiobjectId
bukan Microsoft Graph.# First, sign into Azure CLI account you want to create the Key Vault from. # TODO: change the principal name to name of principal you want to create the key vault with. $principalNameLike = "CloudUser*" # TODO: change location to your preference. $location = "local" $aadGraph = az cloud show --query endpoints.activeDirectoryGraphResourceId --output tsv $tenantId = az account show --query tenantId --output tsv if ($aadGraph[-1] -ne '/') { $aadGraph += '/' } $userObject = az rest --method get --url "${aadGraph}${tenantId}/users?api-version=1.6" ` | ConvertFrom-Json ` | Select-Object -ExpandProperty value ` | Where-Object {$_.userPrincipalName -like $principalNameLike} $body = '{ "location": "' + $location + '", "properties": { "tenantId": "' + $tenantId + '", "sku": { "family": "A", "name": "standard" }, "accessPolicies": [ { "tenantId": "' + $tenantId + '", "objectId": "' + $userObject.objectId + '", "permissions": { "keys": [ "get", "create", "delete", "list", "update", "import", "backup", "restore", "recover" ], "secrets": [ "get", "list", "set", "delete", "backup", "restore", "recover" ], "certificates": [ "get", "list", "delete", "create", "import", "update", "managecontacts", "getissuers", "listissuers", "setissuers", "deleteissuers", "manageissuers", "recover" ], "storage": [ "get", "list", "delete", "set", "update", "regeneratekey", "setsas", "listsas", "getsas", "deletesas" ] } } ], "enabledForDeployment": true, "enabledForTemplateDeployment": true } }' $body | Out-File -FilePath (Join-Path -Path "." -ChildPath "body.json") $resourceGroupName = "testrg123" az group create -n $resourceGroupName -l $location $armEndpoint = az cloud show --query endpoints.resourceManager --output tsv if ($armEndpoint[-1] -ne '/') { $armEndpoint += '/' } $subscriptionId = az account show --query id --output tsv $keyVaultName = "testkv123" az rest --method put --url "${armEndpoint}subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.KeyVault/vaults/${keyVaultName}?api-version=2016-10-01" --body `@body.json # OPTIONAL: test access to the Key Vault. # az keyvault secret set --name MySecretName --vault-name $keyVaultName --value MySecret
Untuk informasi selengkapnya tentang Key Vault REST API, lihat referensi Key Vault REST API.
Masalah lain
Berikut ini adalah masalah yang tidak terbatas pada versi atau rentang versi Azure CLI tertentu.
-
az role assignment create
saat ini tidak didukung oleh Azure CLI untuk Azure Stack Hub karena masalah API lama. Solusi berikut diperlukan untuk ID Microsoft Entra atau ADFS.
Untuk informasi selengkapnya tentang REST API penetapan peran, lihat artikel penetapan peran.# First, sign into account with access to the resource that is being given access or a role to another user. # TODO: change the principal name to name of principal you want to assign the role to. $principalNameLike = "CloudUser*" # TODO: change role name to your preference. $roleName = "Owner" # TODO: change location to your preference. $location = "local" $aadGraph = az cloud show --query endpoints.activeDirectoryGraphResourceId --output tsv $tenantId = az account show --query tenantId --output tsv if ($aadGraph[-1] -ne '/') { $aadGraph += '/' } $userObject = az rest --method get --url "${aadGraph}${tenantId}/users?api-version=1.6" ` | ConvertFrom-Json ` | Select-Object -ExpandProperty value ` | Where-Object {$_.userPrincipalName -like $principalNameLike} $roleDefinitionId = az role definition list --query "[?roleName=='${roleName}'].id" --output tsv $body = @{ properties = @{ roleDefinitionId = $roleDefinitionId principalId = $userObject.objectId } } $body | ConvertTo-Json | Out-File -FilePath (Join-Path -Path "." -ChildPath "body.json") $resourceGroupName = "testrg123" az group create -n $resourceGroupName -l $location $armEndpoint = az cloud show --query endpoints.resourceManager --output tsv if ($armEndpoint[-1] -ne '/') { $armEndpoint += '/' } $scope = az group show --name $resourceGroupName --query id --output tsv $guid = (New-Guid).ToString() az rest --method put --url "${armEndpoint}${scope}/providers/Microsoft.Authorization/roleAssignments/${guid}?api-version=2015-07-01" --body `@body.json # OPTIONAL: test access to the resource group, or use the portal. # az login -u <assigned user name> -p <assigned user password> --tenant $tenantId # Test a resource creation command in the resource group: # az network dns zone create -g $resourceGroupName -n "www.mysite.com"