Installare l'interfaccia della riga di comando di Azure nell'hub di Azure Stack
È possibile installare l'interfaccia della riga di comando di Azure per gestire l'hub di Azure Stack con computer Windows o Linux. Questo articolo illustra i passaggi per installare e configurare l'interfaccia della riga di comando di Azure.
Installare l'interfaccia da riga di comando di Azure
Accedere alla workstation di sviluppo e installare l'interfaccia della riga di comando. L'hub di Azure Stack richiede la versione 2.0 o successiva dell'interfaccia della riga di comando di Azure.
Importante
A causa di un CVE che interessa le versioni dell'interfaccia della riga di comando di Azure precedenti alla versione 2.40.0, non è più consigliabile usare l'interfaccia della riga di comando di Azure 2.29.2 per AD FS nell'hub di Azure Stack. È possibile eseguire l'aggiornamento all'interfaccia della riga di comando di Azure 2.40.0 o versione successiva. Tuttavia, i clienti di AD FS potrebbero riscontrare problemi con i comandi dell'interfaccia della riga di comando di Azure che interagiscono con gli endpoint di Microsoft Graph. Ciò è dovuto al fatto che Microsoft Graph non è supportato per AD FS. Per le soluzioni alternative ai problemi di Microsoft Graph, vedere la sezione Problemi noti generali .
È possibile installare l'interfaccia della riga di comando seguendo la procedura descritta nell'articolo Installare l'interfaccia della riga di comando di Azure.
Per verificare se l'installazione è riuscita, aprire una finestra del terminale o del prompt dei comandi ed eseguire il comando seguente:
az --version
Verrà visualizzata la versione dell'interfaccia della riga di comando di Azure e altre librerie dipendenti installate nel computer.
Prendere nota del percorso Python dell'interfaccia della riga di comando.
Aggiunta del certificato
Esportare e quindi importare il certificato dell'hub di Azure Stack per sistemi integrati disconnessi e per ASDK. Per i sistemi integrati connessi, il certificato viene firmato pubblicamente e questo passaggio non è necessario. Per istruzioni, vedere Configurazione dei certificati per l'interfaccia della riga di comando di Azure in Azure Stack Development Kit.
Connettersi con l'interfaccia della riga di comando di Azure
Questa sezione illustra come configurare l'interfaccia della riga di comando se si usa Microsoft Entra ID come servizio di gestione delle identità e si usa l'interfaccia della riga di comando in un computer Windows.
Connettersi all'hub di Azure Stack
Se si usa ASDK, considerare attendibile il certificato radice della CA dell'hub di Azure Stack. Per istruzioni, vedere Considerare attendibile il certificato.
Registrare l'ambiente dell'hub di Azure Stack eseguendo il
az cloud register
comando .Registrare l'ambiente. Usare i parametri seguenti durante l'esecuzione
az cloud register
di :Valore Esempio Descrizione Nome ambiente AzureStackUser Usare AzureStackUser
per l'ambiente utente. Se si è un operatore, specificareAzureStackAdmin
.L'endpoint di Resource Manager https://management.contoso.onmicrosoft.com
ResourceManagerUrl in ASDK è: https://management.local.azurestack.external/
ResourceManagerUrl nei sistemi integrati è:https://management.<region>.<fqdn>/
se si ha una domanda sull'endpoint di sistema integrato, contattare l'operatore cloud.Endpoint di archiviazione local.contoso.onmicrosoft.com local.azurestack.external
è per l'ASDK. Per un sistema integrato, usare un endpoint per il sistema.Suffisso Keyvault .vault.contoso.onmicrosoft.com .vault.local.azurestack.external
è per l'ASDK. Per un sistema integrato, usare un endpoint per il sistema.ID risorsa graph di Endpoint Active Directory https://graph.windows.net/ ID risorsa di Active Directory. az cloud register ` -n <environmentname> ` --endpoint-resource-manager "https://management.<region>.<fqdn>" ` --suffix-storage-endpoint "<fqdn>" ` --suffix-keyvault-dns ".vault.<fqdn>"
È possibile trovare un riferimento per il comando register nella documentazione di riferimento dell'interfaccia della riga di comando di Azure.
Impostare l'ambiente attivo usando i comandi seguenti.
az cloud set -n <environmentname>
Aggiornare la configurazione dell'ambiente per usare il profilo di versione dell'API specifico dell'hub di Azure Stack. Per aggiornare la configurazione, eseguire il comando seguente:
az cloud update --profile 2020-09-01-hybrid
Accedere all'ambiente dell'hub di Azure Stack usando il
az login
comando .È possibile accedere all'ambiente dell'hub di Azure Stack usando le credenziali utente o con un'entità servizio (SPN) fornita dall'operatore cloud.
Accedere come utente:
È possibile specificare il nome utente e una password direttamente all'interno del comando
az login
oppure eseguire l'autenticazione tramite un browser. È necessario eseguire quest'ultima operazione se l'account dispone dell'autenticazione a più fattori abilitata:az login -u "user@contoso.onmicrosoft.com" -p 'Password123!' --tenant contoso.onmicrosoft.com
Nota
Se l'account utente ha abilitato l'autenticazione a più fattori, usare il
az login
comando senza specificare il-u
parametro . L'esecuzione di questo comando fornisce un URL e un codice da usare per l'autenticazione.Accedere come entità servizio:
Prima di accedere, creare un'entità servizio tramite il portale di Azure o l'interfaccia della riga di comando e assegnargli un ruolo. A questo momento, accedere usando il comando seguente:
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>
Verificare che l'ambiente sia impostato correttamente e che l'ambiente sia il cloud attivo.
az cloud list --output table
Si noterà che l'ambiente è elencato e IsActive è
true
. Ad esempio:IsActive Name Profile ---------- ----------------- ----------------- False AzureCloud 2020-09-01-hybrid False AzureChinaCloud latest False AzureUSGovernment latest False AzureGermanCloud latest True AzureStackUser 2020-09-01-hybrid
Testare la connettività
Con tutti gli elementi configurati, usare l'interfaccia della riga di comando per creare risorse all'interno dell'hub di Azure Stack. Ad esempio, è possibile creare un gruppo di risorse per un'app e aggiungere una macchina virtuale. Usare il comando seguente per creare un gruppo di risorse denominato "MyResourceGroup":
az group create -n MyResourceGroup -l local
Se il gruppo di risorse viene creato correttamente, il comando precedente restituisce le proprietà seguenti della risorsa appena creata:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
"location": "local",
"name": "RGCLI1",
" properties ": {
"provisioningState": "Succeeded"
},
"tags ": null
}
Problemi noti generali
La correzione generale per la maggior parte dei problemi consiste nell'usare il comando che usa il az rest
contesto di Azure Stack corrente, per effettuare una chiamata API REST per il comando associato al problema. Le soluzioni alternative nell'elenco dei problemi seguenti possono essere in genere adattate per altri problemi dell'interfaccia della riga di comando di Azure, purché questi problemi vengano causati dall'interfaccia della riga di comando di Azure e non dai provider di risorse dell'hub di Azure Stack o da altri servizi dell'hub di Azure Stack.
Problemi di Microsoft Graph
Si tratta dei problemi noti di Microsoft Graph per l'interfaccia della riga di comando di Azure 2.40.0 o versione successiva per l'hub di Azure Stack. Ciò influisce principalmente sugli ambienti ADFS perché non supporta Microsoft Graph.
az keyvault create
interagisce con Microsoft Graph. Di seguito è riportata una soluzione alternativa di esempio per ADFS. In primo luogo, la soluzione alternativa usa Azure AD Graph per recuperare le informazioni utente, ad esempio,objectId
anziché 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
Per altre informazioni sull'API REST Key Vault, vedere informazioni di riferimento sull'API REST Key Vault.
Altri problemi
Di seguito sono riportati problemi non limitati a versioni o intervalli specifici di versioni dell'interfaccia della riga di comando di Azure.
-
az role assignment create
non è attualmente supportato dall'interfaccia della riga di comando di Azure per l'hub di Azure Stack a causa di un problema di API precedente. Per Microsoft Entra ID o ADFS è necessaria la soluzione alternativa seguente.
Per altre informazioni sull'API REST per l'assegnazione di ruoli, vedere l'articolo Assegnazioni di ruolo.# 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"