Azure Stack Hub'a Azure CLI yükleme

Azure Stack Hub'ı windows veya Linux makineleriyle yönetmek için Azure CLI'yi yükleyebilirsiniz. Bu makale, Azure CLI'yı 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 üzeri sürümlere 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 CLI, Azure Stack Hub Python konumunda

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

Sertifika ekle

Bağlantısı kesilmiş tümleşik sistemler 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.

Azure CLI ile bağlanma

Bu bölümde, kimlik yönetimi hizmeti olarak Microsoft Entra ID kullanıyorsanız ve CLI'yi bir Windows makinesinde kullanıyorsanız CLI'yi ayarlama konusunda size yol gösterilir.

Azure Stack Hub'a bağlanma

  1. komutunu çalıştırarak az cloud register Azure Stack Hub ortamınızı kaydedin. ile az loginoturum açabilmeniz için azure CLI'nin varsayılan Azure genel bulutu yerine Azure Stack Hub örneğinizi hedef alacak şekilde yapılandırılması gerekir. İlk olarak komutunu kullanarak az cloud register Azure Stack Hub ortamınızı kaydedin ve CLI'nın istekleri nereye göndereceği hakkında bilgi sahibi olması için uç noktalarını tanımlayın. Bundan sonra, ortamı ayarlayabilir ve ardından kimlik doğrulaması için kullanabilirsiniz az login .

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

    Değer Örnek Açıklama
    Ortam adı AzureStackUser Kullanıcı ortamı için kullanın AzureStackUser . Operatörseniz belirtin AzureStackAdmin.
    Resource Manager uç noktası https://management.contoso.onmicrosoft.com Tümleşik sistemlerde ResourceManagerUrl şöyledir: https://management.<region>.<fqdn>/. Tümleşik sistem uç noktası hakkında sorularınız varsa bulut operatörünüze başvurun.
    Depolama uç noktası local.contoso.onmicrosoft.com Tümleşik bir sistem için sisteminiz için bir uç nokta kullanın.
    Keyvault soneki .vault.contoso.onmicrosoft.com Tümleşik bir sistem için sisteminiz için bir uç nokta kullanın.
    Uç nokta etkin dizin grafik kaynak kimliği https://graph.microsoft.com/ 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>" 
    

    Daha fazla bilgi için Azure CLI referans belgelerindeki register komutuna bakın.

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

    az cloud set -n <environmentname>
    
  4. Ortam yapılandırmanızı Azure Stack Hub'a özgü API sürümü profilini kullanacak şekilde 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
    
  5. komutunu kullanarak az login Azure Stack Hub ortamınızda oturum açın.

    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 tarayıcı kullanarak kimlik doğrulaması yapmanız gerekir:

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

    Uyarı

    Kullanıcı hesabınızda çok faktörlü kimlik doğrulaması etkinleştirildiyse parametresini az login sağlamadan -u komutunu kullanın. 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 bu sorumluya 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>
      
  6. 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. Örneğin:

    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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/RGCL11",
  "location": "local",
  "name": "RGCLI1",
  " properties ": {
    "provisioningState": "Succeeded"
  },
  "tags ": null
}

Genel bilinen sorunlar

Çoğu sorunun genel düzeltmesi, 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 . Aşağıdaki sorunlar listesindeki geçici çözümler, bu sorunlar Azure Stack Hub kaynak sağlayıcılarından veya diğer Azure Stack Hub hizmetlerinden değil Azure CLI'dan kaynaklandığı sürece 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, Microsoft Graph'ı desteklemediğinden öncelikle AD FS ortamlarını etkiler.

  • az keyvault create Microsoft Graph ile etkileşim kurar. Aşağıda AD FS için örnek bir geçici çözüm verilmiştir. Geçici çözüm öncelikle Microsoft Graph yerine Azure AD Graph'ı kullanarak objectId gibi kullanıcı bilgilerini alı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'si hakkında daha fazla bilgi için bkz. Key Vault REST API başvurusu.

Diğer sorunlar

Azure CLI'nın belirli sürümleri veya aralıkları ile sınırlı olmayan sorunlar aşağıdadı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 Id hem de AD FS 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