Az Azure CLI telepítése az Azure Stack Hubban

Telepítheti az Azure CLI-t az Azure Stack Hub windowsos vagy Linux rendszerű gépeken való kezeléséhez. Ez a cikk végigvezeti az Azure CLI telepítésének és beállításának lépésein.

Telepítse az Azure CLI-t

  1. Jelentkezzen be a fejlesztői munkaállomásra, és telepítse a parancssori felületet. Az Azure Stack Hubhoz az Azure CLI 2.0-s vagy újabb verziója szükséges.

    Fontos

    Mivel a CVE a 2.40.0-snál korábbi Azure CLI-verziókat érinti, már nem ajánlott az Azure CLI 2.29.2 for AD FS használata az Azure Stack Hubban. Frissíthet az Azure CLI 2.40.0-s vagy újabb verziójára. Az AD FS-ügyfelek azonban problémákba ütközhetnek a Microsoft Graph-végpontokkal kommunikáló Azure CLI-parancsokkal kapcsolatban. Ennek az az oka, hogy az AD FS nem támogatja a Microsoft Graphot. A Microsoft Graph-problémák kerülő megoldásait az Általános ismert problémák című szakaszban találja.

  2. A PARANCSSORI-t az Azure CLI telepítése című cikk lépéseit követve telepítheti.

  3. A telepítés sikerességének ellenőrzéséhez nyisson meg egy terminált vagy egy parancssori ablakot, és futtassa a következő parancsot:

    az --version
    

    Látnia kell az Azure CLI verzióját és a számítógépre telepített egyéb függő kódtárakat.

    Azure CLI az Azure Stack Hubon – Python-hely

  4. Jegyezze fel a parancssori felület Python-helyét.

Tanúsítvány hozzárendelése

Exportálja, majd importálja az Azure Stack Hub-tanúsítványt a leválasztott integrált rendszerekhez és az ASDK-hoz. Csatlakoztatott integrált rendszerek esetén a tanúsítvány nyilvánosan alá van írva, és erre a lépésre nincs szükség. Útmutatásért lásd: Tanúsítványok beállítása az Azure CLI-hez az Azure Stack Development Kiten.

Csatlakozás az Azure CLI-vel

Ez a szakasz végigvezeti a parancssori felület beállításán, ha Microsoft Entra ID-t használ identitáskezelési szolgáltatásként, és parancssori felületet használ Egy Windows rendszerű gépen.

Csatlakozás az Azure Stack Hubhoz

  1. Ha az ASDK-t használja, bízzon meg az Azure Stack Hub hitelesítésszolgáltató főtanúsítványában. Útmutatásért lásd: Megbízható a tanúsítvány.

  2. Regisztrálja az Azure Stack Hub-környezetet a az cloud register parancs futtatásával.

  3. Regisztrálja a környezetet. Futtassa az cloud registera következő paramétereket:

    Érték Példa Leírás
    Környezet neve AzureStackUser Használja AzureStackUser a felhasználói környezethez. Ha Ön operátor, adja meg a értéket AzureStackAdmin.
    Resource Manager végpont https://management.contoso.onmicrosoft.com Az ASDK-ban a ResourceManagerUrl a következő: https://management.local.azurestack.external/ Az integrált rendszerekben a ResourceManagerUrl : https://management.<region>.<fqdn>/ Ha kérdése van az integrált rendszervégponttal kapcsolatban, lépjen kapcsolatba a felhőszolgáltatóval.
    Tárolási végpont local.contoso.onmicrosoft.com local.azurestack.external az ASDK-hoz tartozik. Integrált rendszer esetén használjon végpontot a rendszerhez.
    Keyvault-utótag .vault.contoso.onmicrosoft.com .vault.local.azurestack.external az ASDK-hoz tartozik. Integrált rendszer esetén használjon végpontot a rendszerhez.
    Végpont Active Directory-gráf erőforrás-azonosítója https://graph.windows.net/ Az Active Directory erőforrás-azonosító.
    az cloud register `
        -n <environmentname> `
        --endpoint-resource-manager "https://management.<region>.<fqdn>" `
        --suffix-storage-endpoint "<fqdn>" `
        --suffix-keyvault-dns ".vault.<fqdn>" 
    

    A register parancsra vonatkozó hivatkozást az Azure CLI referenciadokumentációjában találja.

  4. Állítsa be az aktív környezetet az alábbi parancsokkal.

    az cloud set -n <environmentname>
    
  5. Frissítse a környezeti konfigurációt az Azure Stack Hub-specifikus API-verzióprofil használatára. A konfiguráció frissítéséhez futtassa a következő parancsot:

    az cloud update --profile 2020-09-01-hybrid
    
  6. Jelentkezzen be az Azure Stack Hub-környezetbe az az login paranccsal.

    Az Azure Stack Hub-környezetbe a felhasználói hitelesítő adataival vagy a felhőszolgáltató által biztosított egyszerű szolgáltatásnévvel (SPN) jelentkezhet be.

    • Bejelentkezés felhasználóként:

      A felhasználónevet és a jelszót közvetlenül a az login parancson belül adhatja meg, vagy egy böngésző használatával végezhet hitelesítést. Az utóbbit akkor kell elvégeznie, ha a fiókjában engedélyezve van a többtényezős hitelesítés:

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

      Megjegyzés

      Ha a felhasználói fiókjában engedélyezve van a többtényezős hitelesítés, használja a az login parancsot a -u paraméter megadása nélkül. A parancs futtatásával egy URL-címet és egy kódot kap, amelyet a hitelesítéshez kell használnia.

    • Jelentkezzen be szolgáltatásnévként:

      Bejelentkezés előtt hozzon létre egy szolgáltatásnevet a Azure Portal vagy a parancssori felületen, és rendeljen hozzá egy szerepkört. Most jelentkezzen be a következő paranccsal:

      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. Ellenőrizze, hogy a környezet helyesen van-e beállítva, és hogy a környezet az aktív felhő-e.

        az cloud list --output table
    

    Látnia kell, hogy a környezet megjelenik a listában, az IsActive pedig .true Például:

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

Kapcsolat tesztelése

Ha minden beállítás be van állítva, a parancssori felülettel erőforrásokat hozhat létre az Azure Stack Hubon belül. Létrehozhat például egy erőforráscsoportot egy alkalmazáshoz, és hozzáadhat egy virtuális gépet. A következő paranccsal hozzon létre egy "MyResourceGroup" nevű erőforráscsoportot:

az group create -n MyResourceGroup -l local

Ha az erőforráscsoport létrehozása sikeresen megtörtént, az előző parancs az újonnan létrehozott erőforrás következő tulajdonságait adja ki:

{
  "id": "/subscriptions/84edee99-XXXX-4f5c-b646-5cdab9759a03/resourceGroups/RGCL11",
  "location": "local",
  "name": "RGCLI1",
  " properties ": {
    "provisioningState": "Succeeded"
  },
  "tags ": null
}

Általános ismert problémák

A legtöbb probléma általános megoldása az, hogy az az rest aktuális Azure Stack-környezetet használó parancsot használja, és REST API-hívást kezdeményez a problémához társított parancshoz. Az alábbi problémák listájában szereplő kerülő megoldások általában alkalmazhatók más Azure CLI-problémákhoz, feltéve, hogy ezeket a problémákat az Azure CLI okozza, és nem az Azure Stack Hub erőforrás-szolgáltatói vagy más Azure Stack Hub-szolgáltatások.

Microsoft Graph-problémák

Ezek az Azure Stack Hubhoz készült Azure CLI 2.40.0-s vagy újabb verziójával kapcsolatos ismert Microsoft Graph-problémák. Ez elsősorban az ADFS-környezeteket érinti, mivel nem támogatja a Microsoft Graphot.

  • az keyvault create használja a Microsoft Graphot. Az alábbiakban egy példa kerülő megoldás található az ADFS-hez. A kerülő megoldás elsősorban a Azure AD Graph használatával kéri le a felhasználói adatokat, például a objectId Microsoft Graph helyett.

    # 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
    

    A KEY VAULT REST API-val kapcsolatos további információkért lásd a Key Vault REST API-referenciát.

Egyéb problémák

Az alábbi problémák nem korlátozódnak az Azure CLI adott verzióira vagy verzióinak tartományára.

  • az role assignment create az Azure CLI jelenleg nem támogatja az Azure Stack Hubhoz egy régi API-probléma miatt. A Microsoft Entra azonosítóhoz és az ADFS-hez egyaránt az alábbi kerülő megoldás szükséges.
    # 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"
    
    A szerepkör-hozzárendelés REST API-val kapcsolatos további információkért lásd a szerepkör-hozzárendeléseket ismertető cikket.

Következő lépések