Instalowanie interfejsu wiersza polecenia platformy Azure w usłudze Azure Stack Hub
Interfejs wiersza polecenia platformy Azure umożliwia zarządzanie usługą Azure Stack Hub przy użyciu maszyn z systemem Windows lub Linux. W tym artykule przedstawiono kroki instalowania i konfigurowania interfejsu wiersza polecenia platformy Azure.
Zainstaluj interfejs wiersza polecenia platformy Azure
Zaloguj się do stacji roboczej deweloperów i zainstaluj interfejs wiersza polecenia. Usługa Azure Stack Hub wymaga wersji 2.0 lub nowszej interfejsu wiersza polecenia platformy Azure.
Ważne
Ze względu na CVE , która ma wpływ na wersje interfejsu wiersza polecenia platformy Azure poprzednia do wersji 2.40.0, nie zaleca się już używania interfejsu wiersza polecenia platformy Azure 2.29.2 dla usług AD FS w usłudze Azure Stack Hub. Możesz zaktualizować interfejs wiersza polecenia platformy Azure w wersji 2.40.0 lub nowszej. Jednak klienci usług AD FS mogą napotkać problemy z poleceniami interfejsu wiersza polecenia platformy Azure, które współdziałają z punktami końcowymi programu Microsoft Graph. Jest to spowodowane tym, że program Microsoft Graph nie jest obsługiwany dla usług AD FS. Aby uzyskać obejścia problemów z programem Microsoft Graph, zobacz sekcję Ogólne znane problemy .
Interfejs wiersza polecenia można zainstalować, wykonując kroki opisane w artykule Instalowanie interfejsu wiersza polecenia platformy Azure .
Aby sprawdzić, czy instalacja zakończyła się pomyślnie, otwórz okno terminalu lub wiersza polecenia i uruchom następujące polecenie:
az --version
Powinna zostać wyświetlona wersja interfejsu wiersza polecenia platformy Azure i inne zależne biblioteki zainstalowane na komputerze.
Zanotuj lokalizację języka Python interfejsu wiersza polecenia.
Dodawanie certyfikatu
Wyeksportuj, a następnie zaimportuj certyfikat usługi Azure Stack Hub do odłączonych systemów zintegrowanych i zestawu ASDK. W przypadku połączonych systemów zintegrowanych certyfikat jest podpisany publicznie i ten krok nie jest konieczny. Aby uzyskać instrukcje, zobacz Konfigurowanie certyfikatów dla interfejsu wiersza polecenia platformy Azure w zestawie Azure Stack Development Kit.
Nawiązywanie połączenia za pomocą interfejsu wiersza polecenia platformy Azure
- identyfikator Microsoft Entra w systemie Windows
- Usługi AD FS w systemie Windows
- identyfikator Microsoft Entra w systemie Linux
- AD FS Linux
W tej sekcji opisano konfigurowanie interfejsu wiersza polecenia, jeśli używasz identyfikatora Microsoft Entra jako usługi zarządzania tożsamościami i używasz interfejsu wiersza polecenia na maszynie z systemem Windows.
Nawiązywanie połączenia z usługą Azure Stack Hub
Jeśli używasz zestawu ASDK, ufaj certyfikatowi głównemu urzędu certyfikacji usługi Azure Stack Hub. Aby uzyskać instrukcje, zobacz Ufaj certyfikatowi.
Zarejestruj środowisko usługi Azure Stack Hub, uruchamiając
az cloud register
polecenie .Zarejestruj swoje środowisko. Podczas uruchamiania
az cloud register
polecenia użyj następujących parametrów:Wartość Przykład Opis Nazwa środowiska AzureStackUser Użyj AzureStackUser
dla środowiska użytkownika. Jeśli jesteś operatorem, określAzureStackAdmin
wartość .punkt końcowy Resource Manager https://management.contoso.onmicrosoft.com
Element ResourceManagerUrl w zestawie ASDK to: https://management.local.azurestack.external/
Element ResourceManagerUrl w zintegrowanych systemach:https://management.<region>.<fqdn>/
Jeśli masz pytanie dotyczące zintegrowanego punktu końcowego systemu, skontaktuj się z operatorem chmury.Punkt końcowy magazynu local.contoso.onmicrosoft.com local.azurestack.external
jest przeznaczony dla zestawu ASDK. W przypadku zintegrowanego systemu użyj punktu końcowego dla systemu.Sufiks usługi Keyvault .vault.contoso.onmicrosoft.com .vault.local.azurestack.external
jest przeznaczony dla zestawu ASDK. W przypadku zintegrowanego systemu użyj punktu końcowego dla systemu.Identyfikator zasobu grafu usługi Active Directory punktu końcowego https://graph.windows.net/ Identyfikator zasobu usługi Active Directory. az cloud register ` -n <environmentname> ` --endpoint-resource-manager "https://management.<region>.<fqdn>" ` --suffix-storage-endpoint "<fqdn>" ` --suffix-keyvault-dns ".vault.<fqdn>"
Informacje o poleceniu register można znaleźć w dokumentacji referencyjnej interfejsu wiersza polecenia platformy Azure.
Ustaw aktywne środowisko przy użyciu następujących poleceń.
az cloud set -n <environmentname>
Zaktualizuj konfigurację środowiska, aby używać profilu wersji interfejsu API specyficznego dla usługi Azure Stack Hub. Aby zaktualizować konfigurację, uruchom następujące polecenie:
az cloud update --profile 2020-09-01-hybrid
Zaloguj się do środowiska usługi Azure Stack Hub przy użyciu
az login
polecenia .Możesz zalogować się do środowiska usługi Azure Stack Hub przy użyciu poświadczeń użytkownika lub jednostki usługi (SPN) dostarczonej przez operatora chmury.
Zaloguj się jako użytkownik:
Możesz określić nazwę użytkownika i hasło bezpośrednio w
az login
poleceniu lub uwierzytelnić przy użyciu przeglądarki. Należy wykonać tę drugą czynność, jeśli twoje konto ma włączone uwierzytelnianie wieloskładnikowe:az login -u "user@contoso.onmicrosoft.com" -p 'Password123!' --tenant contoso.onmicrosoft.com
Uwaga
Jeśli konto użytkownika ma włączone uwierzytelnianie wieloskładnikowe, użyj
az login
polecenia bez podawania parametru-u
. Uruchomienie tego polecenia daje adres URL i kod, którego należy użyć do uwierzytelnienia.Zaloguj się jako jednostka usługi:
Przed zalogowaniem utwórz jednostkę usługi za pomocą Azure Portal lub interfejsu wiersza polecenia i przypisz mu rolę. Teraz zaloguj się przy użyciu następującego polecenia:
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>
Sprawdź, czy środowisko jest poprawnie ustawione i czy środowisko jest aktywną chmurą.
az cloud list --output table
Powinno zostać wyświetlone twoje środowisko, a wartość IsActive to
true
. Na przykład:IsActive Name Profile ---------- ----------------- ----------------- False AzureCloud 2020-09-01-hybrid False AzureChinaCloud latest False AzureUSGovernment latest False AzureGermanCloud latest True AzureStackUser 2020-09-01-hybrid
Testowanie połączenia
Po skonfigurowaniu wszystkiego użyj interfejsu wiersza polecenia, aby utworzyć zasoby w usłudze Azure Stack Hub. Możesz na przykład utworzyć grupę zasobów dla aplikacji i dodać maszynę wirtualną. Użyj następującego polecenia, aby utworzyć grupę zasobów o nazwie "MyResourceGroup":
az group create -n MyResourceGroup -l local
Jeśli grupa zasobów zostanie utworzona pomyślnie, poprzednie polecenie wyświetli następujące właściwości nowo utworzonego zasobu:
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
"location": "local",
"name": "RGCLI1",
" properties ": {
"provisioningState": "Succeeded"
},
"tags ": null
}
Ogólne znane problemy
Ogólna poprawka dla większości problemów polega na użyciu az rest
polecenia, które używa bieżącego kontekstu usługi Azure Stack, aby wywołać interfejs API REST dla skojarzonego polecenia z problemem. Obejścia poniższej listy problemów można ogólnie dostosować do innych problemów z interfejsem wiersza polecenia platformy Azure, o ile te problemy są spowodowane przez interfejs wiersza polecenia platformy Azure, a nie dostawców zasobów usługi Azure Stack Hub lub innych usług Azure Stack Hub.
Problemy z programem Microsoft Graph
Są to znane problemy z programem Microsoft Graph dla interfejsu wiersza polecenia platformy Azure w wersji 2.40.0 lub nowszej dla usługi Azure Stack Hub. Dotyczy to głównie środowisk usług ADFS, ponieważ nie obsługuje programu Microsoft Graph.
az keyvault create
współdziała z programem Microsoft Graph. Poniżej przedstawiono przykładowe obejście dla usług ADFS. Przede wszystkim obejście używa Azure AD Graph do pobierania informacji o użytkowniku, takich jakobjectId
zamiast programu 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
Aby uzyskać więcej informacji na temat interfejsu API REST Key Vault, zobacz dokumentację interfejsu API REST Key Vault.
Inne problemy
Poniżej przedstawiono problemy, które nie są ograniczone do określonych wersji lub zakresów wersji interfejsu wiersza polecenia platformy Azure.
-
az role assignment create
nie jest obecnie obsługiwany przez interfejs wiersza polecenia platformy Azure dla usługi Azure Stack Hub z powodu starego problemu z interfejsem API. Następujące obejście jest wymagane zarówno dla identyfikatora Microsoft Entra, jak i usług ADFS.
Aby uzyskać więcej informacji na temat interfejsu API REST przypisania ról, zobacz artykuł dotyczący przypisań ról.# 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"