Sdílet prostřednictvím


Instalace Azure CLI ve službě Azure Stack Hub

Azure CLI můžete nainstalovat ke správě služby Azure Stack Hub pomocí počítačů s Windows nebo Linuxem. Tento článek vás provede postupem instalace a nastavení Azure CLI.

Instalace Azure CLI

  1. Přihlaste se k vývojové pracovní stanici a nainstalujte rozhraní příkazového řádku. Azure Stack Hub vyžaduje azure CLI verze 2.0 nebo novější.

    Důležité

    Vzhledem k CVE ovlivňujícím verze Azure CLI starší než 2.40.0 už není doporučeno používat Azure CLI 2.29.2 pro AD FS ve službě Azure Stack Hub. Můžete aktualizovat na Azure CLI 2.40.0 nebo novější. Zákazníci služby AD FS ale můžou narazit na problémy s příkazy Azure CLI, které pracují s koncovými body Microsoft Graphu. Důvodem je to, že Služba AD FS nepodporuje Microsoft Graph. Alternativní řešení problémů s Microsoft Graphem najdete v části Obecné známé problémy .

  2. Rozhraní příkazového řádku můžete nainstalovat pomocí kroků popsaných v článku Instalace Azure CLI .

  3. Pokud chcete ověřit, jestli instalace proběhla úspěšně, otevřete okno terminálu nebo příkazového řádku a spusťte následující příkaz:

    az --version
    

    Měla by se zobrazit verze Azure CLI a dalších závislých knihoven nainstalovaných na vašem počítači.

    Umístění Pythonu pro Azure CLI ve službě Azure Stack Hub

  4. Poznamenejte si umístění Pythonu v rozhraní příkazového řádku.

Přidání certifikátu

Exportujte a pak importujte certifikát služby Azure Stack Hub pro odpojené integrované systémy. U připojených integrovaných systémů je certifikát veřejně podepsaný a tento krok není nutný.

Připojení pomocí Azure CLI

Tato část vás provede nastavením rozhraní příkazového řádku, pokud jako službu správy identit používáte ID Microsoft Entra a používáte rozhraní příkazového řádku na počítači s Windows.

Připojení ke službě Azure Stack Hub

  1. Spuštěním az cloud register příkazu zaregistrujte prostředí služby Azure Stack Hub.

  2. Zaregistrujte své prostředí. Při spuštění az cloud registerpoužijte následující parametry:

    Hodnota Příklad Popis
    Název prostředí AzureStackUser Používá se AzureStackUser pro uživatelské prostředí. Pokud jste operátor, zadejte AzureStackAdmin.
    Koncový bod Resource Manageru https://management.contoso.onmicrosoft.com ResourceManagerUrl v integrovaných systémech je: https://management.<region>.<fqdn>/. Pokud máte dotaz ohledně koncového bodu integrovaného systému, obraťte se na svého operátora cloudu.
    Koncový bod úložiště local.contoso.onmicrosoft.com Pro integrovaný systém použijte koncový bod pro váš systém.
    Keyvault přípona .vault.contoso.onmicrosoft.com Pro integrovaný systém použijte koncový bod pro váš systém.
    ID prostředku koncového bodu grafu služby Active Directory https://graph.microsoft.com/ ID prostředku Active Directory.
    az cloud register `
        -n <environmentname> `
        --endpoint-resource-manager "https://management.<region>.<fqdn>" `
        --suffix-storage-endpoint "<fqdn>" `
        --suffix-keyvault-dns ".vault.<fqdn>" 
    

    Další informace najdete v referenční dokumentaci k azure CLI v příkazu register .

  3. Nastavte aktivní prostředí pomocí následujících příkazů.

    az cloud set -n <environmentname>
    
  4. Aktualizujte konfiguraci prostředí tak, aby používala profil konkrétní verze rozhraní API služby Azure Stack Hub. Konfiguraci aktualizujete spuštěním následujícího příkazu:

    az cloud update --profile 2020-09-01-hybrid
    
  5. Přihlaste se k prostředí služby Azure Stack Hub pomocí az login příkazu.

    K prostředí služby Azure Stack Hub se můžete přihlásit pomocí přihlašovacích údajů uživatele nebo pomocí instančního objektu (SPN) poskytnutého vaším operátorem cloudu.

    • Přihlaste se jako uživatel:

    Uživatelské jméno a heslo můžete zadat buď přímo v az login příkazu, nebo se ověřit pomocí prohlížeče. Pokud má váš účet povolené vícefaktorové ověřování, musíte se ověřit pomocí prohlížeče:

    az login -u "user@contoso.onmicrosoft.com" -p 'Password123!' --tenant contoso.onmicrosoft.com
    

    Poznámka:

    Pokud má váš uživatelský účet povolené vícefaktorové ověřování, použijte az login příkaz bez zadání parametru -u . Spuštěním tohoto příkazu získáte adresu URL a kód, který musíte použít k ověření.

    • Přihlaste se jako service principal:

      Než se přihlásíte, vytvořte instanční objekt prostřednictvím webu Azure Portal nebo rozhraní příkazového řádku a přiřaďte mu roli. Teď se přihlaste pomocí následujícího příkazu:

      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>
      
  6. Ověřte, že je vaše prostředí správně nastavené a jestli je vaše prostředí aktivním cloudem:

    az cloud list --output table
    

    Měli byste vidět, že je vaše prostředí uvedené a IsActive je true. Například:

    IsActive    Name               Profile
    ----------  -----------------  -----------------
    False       AzureCloud         2020-09-01-hybrid
    False       AzureChinaCloud    latest
    False       AzureUSGovernment  latest
    False       AzureGermanCloud   latest
    True        AzureStackUser     2020-09-01-hybrid
    

Testování připojení

Se vším, co je nastavené, můžete pomocí rozhraní příkazového řádku vytvářet prostředky ve službě Azure Stack Hub. Můžete například vytvořit skupinu prostředků pro aplikaci a přidat virtuální počítač. Pomocí následujícího příkazu vytvořte skupinu prostředků s názvem MyResourceGroup:

az group create -n MyResourceGroup -l local

Pokud se skupina prostředků úspěšně vytvoří, předchozí příkaz vypíše následující vlastnosti nově vytvořeného prostředku:

{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
  "location": "local",
  "name": "RGCLI1",
  " properties ": {
    "provisioningState": "Succeeded"
  },
  "tags ": null
}

Obecné známé problémy

Obecná oprava většiny problémů spočívá v použití az rest příkazu, který používá aktuální kontext služby Azure Stack, k volání rozhraní REST API pro přidružený příkaz k problému. Alternativní řešení v následujícím seznamu problémů se obecně dají přizpůsobit pro jiné problémy Azure CLI, pokud tyto problémy způsobují Azure CLI, a ne poskytovatelé prostředků služby Azure Stack Hub ani jiné služby Azure Stack Hub.

Problémy s Microsoft Graphem

Jedná se o známé problémy s Microsoft Graphem pro Azure CLI 2.40.0 nebo novější pro Azure Stack Hub. To má primárně vliv na prostředí služby AD FS, protože nepodporují Microsoft Graph.

  • az keyvault create komunikuje s Microsoft Graphem. Následuje příklad alternativního řešení pro službu AD FS. Alternativní řešení primárně používá Azure AD Graph k načtení informací o uživateli, jako je objectId, místo 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
    

    Další informace o rozhraní REST API služby Key Vault najdete v referenčních informacích k rozhraní REST API služby Key Vault.

Další problémy

Níže jsou uvedené problémy, které nejsou omezené na konkrétní verze nebo rozsahy verzí Azure CLI.

  • az role assignment create není v současné době podporován Azure CLI pro Azure Stack Hub kvůli problému se starým rozhraním API. Pro MICROSOFT Entra ID nebo AD FS se vyžaduje následující alternativní řešení.

    # 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"
    

    Další informace o rozhraní REST API přiřazení rolí najdete v článku přiřazení rolí.

Další kroky