Azure CLI installeren in Azure Stack Hub
U kunt de Azure CLI installeren om Azure Stack Hub te beheren met een Windows- of Linux-computer. Dit artikel begeleidt u bij de stappen voor het installeren en instellen van Azure CLI.
Azure CLI installeren
Meld u aan bij uw ontwikkelwerkstation en installeer CLI. Voor Azure Stack Hub is versie 2.0 of hoger van Azure CLI vereist.
Belangrijk
Omdat een CVE van invloed is op Azure CLI-versies voor 2.40.0, wordt het niet langer aanbevolen om Azure CLI 2.29.2 voor AD FS in Azure Stack Hub te gebruiken. U kunt bijwerken naar Azure CLI 2.40.0 of hoger. AD FS-klanten kunnen echter problemen ondervinden met Azure CLI-opdrachten die communiceren met Microsoft Graph-eindpunten. Dit komt omdat Microsoft Graph niet wordt ondersteund voor AD FS. Zie de sectie Algemene bekende problemen voor tijdelijke oplossingen voor problemen met Microsoft Graph.
U kunt de CLI installeren met behulp van de stappen die worden beschreven in het artikel De Azure CLI installeren .
Als u wilt controleren of de installatie is geslaagd, opent u een terminal- of opdrachtpromptvenster en voert u de volgende opdracht uit:
az --version
U ziet nu de versie van Azure CLI en andere afhankelijke bibliotheken die op uw computer zijn geïnstalleerd.
Noteer de locatie van Python voor de CLI.
Certificaat toevoegen
Exporteer en importeer vervolgens het Azure Stack Hub-certificaat voor niet-verbonden geïntegreerde systemen en voor de ASDK. Voor verbonden geïntegreerde systemen is het certificaat openbaar ondertekend en is deze stap niet nodig. Zie Certificaten instellen voor Azure CLI in Azure Stack Development Kit voor instructies.
Verbinding maken met Azure CLI
In deze sectie wordt u begeleid bij het instellen van CLI als u Microsoft Entra ID gebruikt als identiteitsbeheerservice en CLI op een Windows-computer gebruikt.
Verbinding maken met Azure Stack Hub
Als u de ASDK gebruikt, vertrouwt u het Azure Stack Hub CA-basiscertificaat. Zie Het certificaat vertrouwen voor instructies.
Registreer uw Azure Stack Hub-omgeving door de opdracht uit te
az cloud register
voeren.Registreer uw omgeving. Gebruik de volgende parameters bij het uitvoeren
az cloud register
van :Waarde Voorbeeld Beschrijving Omgevingsnaam AzureStackUser Gebruiken AzureStackUser
voor de gebruikersomgeving. Als u operator bent, geeft u opAzureStackAdmin
.Resource Manager-eindpunt https://management.contoso.onmicrosoft.com
De ResourceManagerUrl in de ASDK is: https://management.local.azurestack.external/
De ResourceManagerUrl in geïntegreerde systemen is:https://management.<region>.<fqdn>/
Als u een vraag hebt over het geïntegreerde systeemeindpunt, neemt u contact op met uw cloudoperator.Opslageindpunt local.contoso.onmicrosoft.com local.azurestack.external
is voor de ASDK. Gebruik voor een geïntegreerd systeem een eindpunt voor uw systeem.Sleutelkluisachtervoegsel .vault.contoso.onmicrosoft.com .vault.local.azurestack.external
is voor de ASDK. Gebruik voor een geïntegreerd systeem een eindpunt voor uw systeem.Resource-id van active directory-grafiek van eindpunt https://graph.windows.net/ De resource-id voor Active Directory. az cloud register ` -n <environmentname> ` --endpoint-resource-manager "https://management.<region>.<fqdn>" ` --suffix-storage-endpoint "<fqdn>" ` --suffix-keyvault-dns ".vault.<fqdn>"
U vindt een referentie voor de opdracht registreren in de referentiedocumentatie voor Azure CLI.
Stel de actieve omgeving in met behulp van de volgende opdrachten.
az cloud set -n <environmentname>
Werk uw omgevingsconfiguratie bij om het api-versieprofiel van Azure Stack Hub te gebruiken. Voer de volgende opdracht uit om de configuratie bij te werken:
az cloud update --profile 2020-09-01-hybrid
Meld u aan bij uw Azure Stack Hub-omgeving met behulp van de
az login
opdracht .U kunt zich aanmelden bij de Azure Stack Hub-omgeving met uw gebruikersreferenties of met een service-principal (SPN) die aan u is verstrekt door uw cloudoperator.
Aanmelden als gebruiker:
U kunt de gebruikersnaam en het wachtwoord rechtstreeks opgeven met de opdracht
az login
of verifiëren met behulp van een browser. U moet het laatste doen als voor uw account meervoudige verificatie is ingeschakeld:az login -u "user@contoso.onmicrosoft.com" -p 'Password123!' --tenant contoso.onmicrosoft.com
Notitie
Als voor uw gebruikersaccount meervoudige verificatie is ingeschakeld, gebruikt u de
az login
opdracht zonder de-u
parameter op te geven. Als u deze opdracht uitvoert, krijgt u een URL en een code die u moet gebruiken om te verifiëren.Aanmelden als een service-principal:
Voordat u zich aanmeldt, maakt u een service-principal via de Azure Portal of CLI en wijst u deze een rol toe. Meld u nu aan met de volgende opdracht:
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>
Controleer of uw omgeving juist is ingesteld en of uw omgeving de actieve cloud is.
az cloud list --output table
Als het goed is, ziet u dat uw omgeving wordt vermeld en IsActive is
true
. Bijvoorbeeld:IsActive Name Profile ---------- ----------------- ----------------- False AzureCloud 2020-09-01-hybrid False AzureChinaCloud latest False AzureUSGovernment latest False AzureGermanCloud latest True AzureStackUser 2020-09-01-hybrid
De connectiviteit testen
Als alles is ingesteld, gebruikt u CLI om resources te maken in Azure Stack Hub. U kunt bijvoorbeeld een resourcegroep voor een app maken en een VM toevoegen. Gebruik de volgende opdracht om een resourcegroep met de naam MyResourceGroup te maken:
az group create -n MyResourceGroup -l local
Als de resourcegroep is gemaakt, worden met de vorige opdracht de volgende eigenschappen van de zojuist gemaakte resource uitgevoerd:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
"location": "local",
"name": "RGCLI1",
" properties ": {
"provisioningState": "Succeeded"
},
"tags ": null
}
Algemene bekende problemen
De algemene oplossing voor de meeste problemen is het gebruik van de az rest
opdracht die gebruikmaakt van de huidige Azure Stack-context, om een REST API-aanroep te maken voor de opdracht die aan het probleem is gekoppeld. De tijdelijke oplossingen in de volgende lijst met problemen kunnen over het algemeen worden aangepast voor andere Azure CLI-problemen, zolang deze problemen worden veroorzaakt door Azure CLI en niet door Azure Stack Hub-resourceproviders of andere Azure Stack Hub-services.
Problemen met Microsoft Graph
Dit zijn de bekende Microsoft Graph-problemen voor Azure CLI 2.40.0 of hoger voor Azure Stack Hub. Dit is voornamelijk van invloed op ADFS-omgevingen, omdat Microsoft Graph niet wordt ondersteund.
az keyvault create
communiceert met Microsoft Graph. Hier volgt een voorbeeld van een tijdelijke oplossing voor ADFS. De tijdelijke oplossing maakt voornamelijk gebruik van de Azure AD Graph om gebruikersgegevens op te halen, zoals deobjectId
in plaats van de 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
Zie de naslaginformatie over Key Vault REST API voor meer informatie over Key Vault REST API.
Overige problemen
De volgende problemen zijn niet beperkt tot specifieke versies of bereiken van versies van Azure CLI.
-
az role assignment create
wordt momenteel niet ondersteund door Azure CLI voor Azure Stack Hub vanwege een oud API-probleem. De volgende tijdelijke oplossing is vereist voor zowel Microsoft Entra-id als ADFS.
Zie het artikel roltoewijzingen voor meer informatie over de REST API voor roltoewijzingen.# 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"