Installera Azure CLI på Azure Stack Hub
Du kan installera Azure CLI för att hantera Azure Stack Hub med en Windows- eller Linux-dator. Den här artikeln vägleder dig genom stegen för att installera och konfigurera Azure CLI.
Installera Azure CLI
Logga in på utvecklingsarbetsstationen och installera CLI. Azure Stack Hub kräver version 2.0 eller senare av Azure CLI.
Viktigt
På grund av en CVE som påverkar Azure CLI-versioner tidigare än 2.40.0 rekommenderar vi inte längre att du använder Azure CLI 2.29.2 för AD FS i Azure Stack Hub. Du kan uppdatera till Azure CLI 2.40.0 eller senare. AD FS-kunder kan dock stöta på problem med Azure CLI-kommandon som interagerar med Microsoft Graph-slutpunkter. Det beror på att Microsoft Graph inte stöds för AD FS. Lösningar på Microsoft Graph-problem finns i avsnittet Allmänna kända problem .
Du kan installera CLI med hjälp av stegen som beskrivs i artikeln Installera Azure CLI .
Kontrollera om installationen lyckades genom att öppna ett terminal- eller kommandotolkfönster och köra följande kommando:
az --version
Du bör se versionen av Azure CLI och andra beroende bibliotek som är installerade på datorn.
Anteckna CLI:s Python-plats.
Lägga till certifikat
Exportera och importera sedan Azure Stack Hub-certifikatet för frånkopplade integrerade system och för ASDK. För anslutna integrerade system är certifikatet offentligt signerat och det här steget är inte nödvändigt. Anvisningar finns i Konfigurera certifikat för Azure CLI i Azure Stack Development Kit.
Ansluta med Azure CLI
Det här avsnittet beskriver hur du konfigurerar CLI om du använder Microsoft Entra-ID som identitetshanteringstjänst och använder CLI på en Windows-dator.
Ansluta till Azure Stack Hub
Om du använder ASDK:t litar du på Azure Stack Hub CA-rotcertifikatet. Instruktioner finns i Lita på certifikatet.
Registrera din Azure Stack Hub-miljö genom att
az cloud register
köra kommandot .Registrera din miljö. Använd följande parametrar när du kör
az cloud register
:Värde Exempel Description Miljönamn AzureStackUser Används AzureStackUser
för användarmiljön. Om du är operator anger duAzureStackAdmin
.Resource Manager slutpunkt https://management.contoso.onmicrosoft.com
ResourceManagerUrl i ASDK är: https://management.local.azurestack.external/
ResourceManagerUrl i integrerade system är:https://management.<region>.<fqdn>/
Om du har en fråga om den integrerade systemslutpunkten kontaktar du molnoperatören.Lagringsslutpunkt local.contoso.onmicrosoft.com local.azurestack.external
är för ASDK. För ett integrerat system använder du en slutpunkt för systemet.Keyvault-suffix .vault.contoso.onmicrosoft.com .vault.local.azurestack.external
är för ASDK. För ett integrerat system använder du en slutpunkt för systemet.Resurs-ID för Active Directory-slutpunktsdiagram https://graph.windows.net/ Resurs-ID:t för Azure Active Directory. az cloud register ` -n <environmentname> ` --endpoint-resource-manager "https://management.<region>.<fqdn>" ` --suffix-storage-endpoint "<fqdn>" ` --suffix-keyvault-dns ".vault.<fqdn>"
Du hittar en referens för registerkommandot i Azure CLI-referensdokumentationen.
Ange den aktiva miljön med hjälp av följande kommandon.
az cloud set -n <environmentname>
Uppdatera din miljökonfiguration så att den använder den specifika API-versionsprofilen för Azure Stack Hub. Uppdatera konfigurationen genom att köra följande kommando:
az cloud update --profile 2020-09-01-hybrid
Logga in på din Azure Stack Hub-miljö med hjälp
az login
av kommandot .Du kan logga in på Azure Stack Hub-miljön med dina användarautentiseringsuppgifter eller med ett tjänsthuvudnamn (SPN) som tillhandahålls av molnoperatören.
Logga in som användare:
Du kan antingen ange användarnamnet och lösenordet direkt i kommandot eller autentisera
az login
med hjälp av en webbläsare. Du måste göra det senare om ditt konto har multifaktorautentisering aktiverat:az login -u "user@contoso.onmicrosoft.com" -p 'Password123!' --tenant contoso.onmicrosoft.com
Anteckning
Om ditt användarkonto har multifaktorautentisering aktiverat använder du
az login
kommandot utan att ange parametern-u
. Om du kör det här kommandot får du en URL och en kod som du måste använda för att autentisera.Logga in som tjänstens huvudnamn:
Innan du loggar in skapar du ett huvudnamn för tjänsten via Azure Portal eller CLI och tilldelar det en roll. Logga nu in med följande kommando:
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>
Kontrollera att din miljö är korrekt inställd och att din miljö är det aktiva molnet.
az cloud list --output table
Du bör se att din miljö visas och IsActive är
true
. Exempel:IsActive Name Profile ---------- ----------------- ----------------- False AzureCloud 2020-09-01-hybrid False AzureChinaCloud latest False AzureUSGovernment latest False AzureGermanCloud latest True AzureStackUser 2020-09-01-hybrid
Testa anslutningen
När allt har konfigurerats använder du CLI för att skapa resurser i Azure Stack Hub. Du kan till exempel skapa en resursgrupp för en app och lägga till en virtuell dator. Använd följande kommando för att skapa en resursgrupp med namnet "MyResourceGroup":
az group create -n MyResourceGroup -l local
Om resursgruppen har skapats returnerar föregående kommando följande egenskaper för den nyligen skapade resursen:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
"location": "local",
"name": "RGCLI1",
" properties ": {
"provisioningState": "Succeeded"
},
"tags ": null
}
Allmänna kända problem
Den allmänna korrigeringen az rest
för de flesta problem är att använda kommandot som använder den aktuella Azure Stack-kontexten för att göra ett REST API-anrop för det associerade kommandot med problemet. Lösningarna i följande problemlista kan vanligtvis anpassas för andra Azure CLI-problem så länge dessa problem orsakas av Azure CLI och inte Azure Stack Hub-resursprovidrar eller andra Azure Stack Hub-tjänster.
Microsoft Graph-problem
Det här är kända Microsoft Graph-problem för Azure CLI 2.40.0 eller senare för Azure Stack Hub. Detta påverkar främst ADFS-miljöer eftersom det inte stöder Microsoft Graph.
az keyvault create
interagerar med Microsoft Graph. Följande är ett exempel på en lösning för ADFS. I första hand använder lösningen Azure AD Graph för att hämta användarinformation,objectId
till exempel i stället för 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
Mer information om Key Vault REST API finns i Key Vault REST API-referens.
Andra problem
Följande är problem som inte är begränsade till specifika versioner eller intervall av versioner av Azure CLI.
-
az role assignment create
stöds för närvarande inte av Azure CLI för Azure Stack Hub på grund av ett gammalt API-problem. Följande lösning krävs för både Microsoft Entra-ID eller ADFS.
Mer information om REST API för rolltilldelning finns i artikeln rolltilldelningar.# 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"