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

  1. 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 .

  2. Interfejs wiersza polecenia można zainstalować, wykonując kroki opisane w artykule Instalowanie interfejsu wiersza polecenia platformy Azure .

  3. 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.

    Interfejs wiersza polecenia platformy Azure w lokalizacji języka Python w usłudze Azure Stack Hub

  4. 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

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

  1. Jeśli używasz zestawu ASDK, ufaj certyfikatowi głównemu urzędu certyfikacji usługi Azure Stack Hub. Aby uzyskać instrukcje, zobacz Ufaj certyfikatowi.

  2. Zarejestruj środowisko usługi Azure Stack Hub, uruchamiając az cloud register polecenie .

  3. Zarejestruj swoje środowisko. Podczas uruchamiania az cloud registerpolecenia 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śl AzureStackAdminwartość .
    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.

  4. Ustaw aktywne środowisko przy użyciu następujących poleceń.

    az cloud set -n <environmentname>
    
  5. 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
    
  6. 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>
      
  7. 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/84edee99-XXXX-4f5c-b646-5cdab9759a03/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 jak objectId 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.
    # 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"
    
    Aby uzyskać więcej informacji na temat interfejsu API REST przypisania ról, zobacz artykuł dotyczący przypisań ról.

Następne kroki