Azure Stack Hub üzerine Azure CLI'yı yükleme

Azure Stack Hub'ı Windows veya Linux makinelerle yönetmek için Azure CLI'yi yükleyebilirsiniz. Bu makale, Azure CLI'yi yükleme ve ayarlama adımlarını gösterir.

Azure CLI'yı yükleme

  1. Geliştirme iş istasyonunuzda oturum açın ve CLI'yi yükleyin. Azure Stack Hub, Azure CLI'nın 2.0 veya sonraki bir sürümünü gerektirir.

    Önemli

    2.40.0'dan önceki Azure CLI sürümlerini etkileyen bir CVE nedeniyle artık Azure Stack Hub'da AD FS için Azure CLI 2.29.2 kullanmanız önerilmez. Azure CLI 2.40.0 veya sonraki bir sürüme güncelleştirebilirsiniz. Ancak AD FS müşterileri, Microsoft Graph uç noktalarıyla etkileşim kuran Azure CLI komutlarıyla ilgili sorunlarla karşılaşabilir. Bunun nedeni Microsoft Graph'ın AD FS için desteklenmemesidir. Microsoft Graph sorunlarının geçici çözümleri için Genel bilinen sorunlar bölümüne bakın.

  2. Azure CLI'yi yükleme makalesinde açıklanan adımları kullanarak CLI'yi yükleyebilirsiniz.

  3. Yüklemenin başarılı olup olmadığını doğrulamak için bir terminal veya komut istemi penceresi açın ve aşağıdaki komutu çalıştırın:

    az --version
    

    Azure CLI sürümünü ve bilgisayarınızda yüklü olan diğer bağımlı kitaplıkları görmeniz gerekir.

    Azure Stack Hub'da Azure CLI Python konumu

  4. CLI'nın Python konumunu not edin.

Sertifika ekleme

Bağlantısı kesilmiş tümleşik sistemler ve ASDK için Azure Stack Hub sertifikasını dışarı aktarın ve içeri aktarın. Bağlı tümleşik sistemler için sertifika genel olarak imzalanır ve bu adım gerekli değildir. Yönergeler için bkz. Azure Stack Development Kit'te Azure CLI için sertifikaları ayarlama.

Azure CLI ile bağlanma

Bu bölümde, kimlik yönetimi hizmeti olarak Microsoft Entra kimliği kullanıyorsanız ve CLI'yi bir Windows makinesinde kullanıyorsanız CLI'yi ayarlama adımları açıklanmıştır.

Azure Stack Hub'a bağlanma

  1. ASDK kullanıyorsanız Azure Stack Hub CA kök sertifikasına güvenin. Yönergeler için bkz. Sertifikaya güvenme.

  2. komutunu çalıştırarak az cloud register Azure Stack Hub ortamınızı kaydedin.

  3. Ortamınızı kaydedin. çalıştırırken az cloud registeraşağıdaki parametreleri kullanın:

    Değer Örnek Description
    Ortam adı AzureStackUser Kullanıcı ortamı için kullanın AzureStackUser . İşleçseniz belirtin AzureStackAdmin.
    uç noktayı Resource Manager https://management.contoso.onmicrosoft.com ASDK'deki ResourceManagerUrl şöyledir: https://management.local.azurestack.external/ Tümleşik sistemlerdeki ResourceManagerUrl şöyledir: https://management.<region>.<fqdn>/ Tümleşik sistem uç noktası hakkında bir sorunuz varsa bulut operatörünüze başvurun.
    Depolama uç noktası local.contoso.onmicrosoft.com local.azurestack.external ASDK içindir. Tümleşik bir sistem için sisteminiz için bir uç nokta kullanın.
    Keyvault soneki .vault.contoso.onmicrosoft.com .vault.local.azurestack.external ASDK içindir. Tümleşik bir sistem için sisteminiz için bir uç nokta kullanın.
    Uç nokta active directory grafı kaynak kimliği https://graph.windows.net/ Active Directory kaynak kimliği.
    az cloud register `
        -n <environmentname> `
        --endpoint-resource-manager "https://management.<region>.<fqdn>" `
        --suffix-storage-endpoint "<fqdn>" `
        --suffix-keyvault-dns ".vault.<fqdn>" 
    

    Yazmaç komutu için bir başvuruyu Azure CLI başvuru belgelerinde bulabilirsiniz.

  4. Aşağıdaki komutları kullanarak etkin ortamı ayarlayın.

    az cloud set -n <environmentname>
    
  5. Azure Stack Hub'a özgü API sürüm profilini kullanmak için ortam yapılandırmanızı güncelleştirin. Yapılandırmayı güncelleştirmek için aşağıdaki komutu çalıştırın:

    az cloud update --profile 2020-09-01-hybrid
    
  6. komutunu kullanarak Azure Stack Hub ortamınızda oturum açın az login .

    Kullanıcı kimlik bilgilerinizi kullanarak veya bulut operatörünüz tarafından size sağlanan bir hizmet sorumlusuyla (SPN) Azure Stack Hub ortamında oturum açabilirsiniz.

    • Kullanıcı olarak oturum açın:

      Kullanıcı adını ve parolayı doğrudan komutun az login içinde belirtebilir veya tarayıcı kullanarak kimlik doğrulaması yapabilirsiniz. Hesabınızda çok faktörlü kimlik doğrulaması etkinleştirildiyse ikincisini yapmalısınız:

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

      Not

      Kullanıcı hesabınızda çok faktörlü kimlik doğrulaması etkinleştirildiyse parametresini sağlamadan -u komutunu kullanınaz login. Bu komutu çalıştırmak, kimlik doğrulaması için kullanmanız gereken bir URL ve kod sağlar.

    • Hizmet sorumlusu olarak oturum açın:

      Oturum açmadan önce, Azure portal veya CLI aracılığıyla bir hizmet sorumlusu oluşturun ve bir rol atayın. Şimdi aşağıdaki komutu kullanarak oturum açın:

      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. Ortamınızın doğru ayarlandığını ve ortamınızın etkin bulut olduğunu doğrulayın.

        az cloud list --output table
    

    Ortamınızın listelendiğini ve IsActive'in olduğunu truegörmeniz gerekir. Örnek:

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

Bağlantıyı test etme

Her şey ayarlandıysa, Azure Stack Hub'da kaynak oluşturmak için CLI kullanın. Örneğin, bir uygulama için kaynak grubu oluşturabilir ve vm ekleyebilirsiniz. "MyResourceGroup" adlı bir kaynak grubu oluşturmak için aşağıdaki komutu kullanın:

az group create -n MyResourceGroup -l local

Kaynak grubu başarıyla oluşturulursa, önceki komut yeni oluşturulan kaynağın aşağıdaki özelliklerini verir:

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

Genel bilinen sorunlar

Sorunların çoğu için genel düzeltme, sorunla ilişkili komut için rest API çağrısı yapmak üzere geçerli Azure Stack bağlamını kullanan komutu kullanmaktır az rest . Bu sorunlar Azure Stack Hub kaynak sağlayıcıları veya diğer Azure Stack Hub hizmetlerinden değil Azure CLI'dan kaynaklandığı sürece, aşağıdaki sorunlar listesindeki geçici çözümler genellikle diğer Azure CLI sorunlarına uyarlanabilir.

Microsoft Graph sorunları

Bunlar, Azure Stack Hub için Azure CLI 2.40.0 veya üzeri için bilinen Microsoft Graph sorunlarıdır. Bu öncelikle ADFS ortamlarını etkiler çünkü Microsoft Graph'i desteklemez.

  • az keyvault create Microsoft Graph ile etkileşim kurar. Aşağıda ADFS için örnek bir geçici çözüm verilmiştir. Öncelikle geçici çözüm, Microsoft Graph yerine gibi kullanıcı bilgilerini objectId almak için Azure AD Graph'ı kullanır.

    # 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
    

    Key Vault REST API hakkında daha fazla bilgi için bkz. Key Vault REST API başvurusu.

Diğer sorunlar

Aşağıda, Azure CLI'nın belirli sürümleri veya sürümleriyle sınırlı olmayan sorunlar yer almaktadır.

  • az role assignment create eski bir API sorunu nedeniyle şu anda Azure Stack Hub için Azure CLI tarafından desteklenmiyor. Hem Microsoft Entra kimliği hem de ADFS için aşağıdaki geçici çözüm gereklidir.
    # 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"
    
    Rol ataması REST API'si hakkında daha fazla bilgi için rol atamaları makalesine bakın.

Sonraki adımlar