Share via


Azure CLI ve Python kullanarak Azure Stack Edge Pro GPU cihazınızda VM'leri dağıtma

ŞUNLAR IÇIN GEÇERLIDIR:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

Azure Stack Edge cihazı üzerinde sanal makine oluşturmak ve var olan sanal makineleri yönetmek için API'leri kullanabilirsiniz. Bu API'ler, yerel Azure Stack Edge uç noktası kullanılarak çağrılan standart Azure Resource Manager API'leridir. Azure Resource Manager API'leri, tutarlı bir yönetim katmanı sağlayarak cihazda üzerindeki bir yerel abonelikte bulunan sanal makinelerle ilgili oluşturma, güncelleştirme ve silme işlemlerini gerçekleştirmenizi sağlar. Azure Stack Edge üzerinde çalışan Azure Resource Manager'a bağlanmak için Azure PowerShell cmdlet'lerini kullanabilirsiniz.

Bu öğreticide, Python ve Azure API kullanarak Azure Stack Edge Pro cihazınızda vm oluşturma ve yönetme işlemleri açıklanmaktadır.

VM dağıtım iş akışı

Dağıtım iş akışı aşağıdaki diyagramda gösterilmiştir.

VM deployment workflow

Dağıtım iş akışının üst düzey özeti aşağıdaki gibidir:

  1. Azure Resource Manager'a bağlanma
  2. Kaynak grubu oluşturma
  3. Depolama hesabı oluşturma
  4. Konaklar dosyasına blob URI'sini ekleme
  5. Sertifikaları yükleme
  6. VHD’yi karşıya yükleme
  7. VHD'den yönetilen diskler oluşturma
  8. Görüntü yönetilen diskten VM görüntüsü oluşturma
  9. Önceden oluşturulmuş kaynaklarla VM oluşturma
  10. Sanal ağ oluşturma
  11. Sanal ağ alt ağ kimliğini kullanarak VNIC oluşturma

İş akışı diyagramının ayrıntılı açıklaması için bkz . Azure PowerShell kullanarak Azure Stack Edge Pro cihazınızda VM'leri dağıtma. Azure Resource Manager'a bağlanma hakkında bilgi için bkz. Azure PowerShell kullanarak Azure Resource Manager'a Bağlan.

Ön koşullar

Azure CLI ve Python kullanarak Azure Stack Edge Pro cihazınızda VM oluşturmaya ve yönetmeye başlamadan önce, aşağıdaki adımlarda listelenen önkoşulları tamamladığınızdan emin olmanız gerekir:

  1. Azure Stack Edge Pro cihazınızdaki ağ ayarlarını 1. Adım: Azure Stack Edge Pro cihazını yapılandırma bölümünde açıklandığı gibi tamamladınız.

  2. İşlem için bir ağ arabirimi etkinleştirmişsiniz. Bu ağ arabirimi IP'si, VM dağıtımı için bir sanal anahtar oluşturmak için kullanılır. Aşağıdaki adımlar işlemde size yol göstereceğiz:

    1. İşlem'e gidin. Sanal anahtar oluşturmak için kullanacağınız ağ arabirimini seçin.

      Önemli

      İşlem için yalnızca bir bağlantı noktası yapılandırabilirsiniz.

    2. Ağ arabiriminde işlem etkinleştirin. Azure Stack Edge Pro, bu ağ arabirimine karşılık gelen bir sanal anahtar oluşturur ve yönetir.

  3. Tüm sertifikaları Azure Stack Edge Pro cihazınıza ve istemcinizin güvenilen deposuna oluşturup yüklemişsiniz. 2. Adım: Sertifika oluşturma ve yükleme başlığı altında açıklanan yordamı izleyin.

  4. Azure Stack Edge Pro cihazınız için Base-64 kodlu bir .cer sertifikası (PEM biçimi) oluşturdunuz. Bu sertifika cihaza imzalama zinciri olarak zaten yüklenmiş ve istemcinizdeki güvenilen kök depoya yüklenmiştir. Bu sertifika, Python'ın bu istemci üzerinde çalışması için pem biçiminde de gereklidir.

    certutil komutunu kullanarak bu sertifikayı pem biçime dönüştürün. Bu komutu sertifikanızı içeren dizinde çalıştırmanız gerekir.

    certutil.exe <SourceCertificateName.cer> <DestinationCertificateName.pem>
    

    Aşağıda örnek komut kullanımı gösterilmektedir:

    PS C:\Certificates> certutil.exe -encode aze-root.cer aze-root.pem
    Input Length = 2150
    Output Length = 3014
    CertUtil: -encode command completed successfully.
    PS C:\Certificates>
    

    Bunu daha sonra Python deposuna da ekleyebilirsiniz pem .

  5. Cihazın yerel web kullanıcı arabirimindeki Ağ sayfanızda cihaz IP'sini atamıştınız. Şu IP adresini ekleyin:

    • İstemcideki konak dosyası, VEYA,
    • DNS sunucusu yapılandırması

    Önemli

    Uç nokta adı çözümlemesi için DNS sunucusu yapılandırmasını değiştirmenizi öneririz.

    1. Not Defteri yönetici olarak başlatın (dosyayı kaydetmek için Yönetici istrator ayrıcalıkları gerekir) ve konumunda bulunan C:\Windows\System32\Drivers\etchosts dosyasını açın.

      Windows Explorer hosts file

    2. Aşağıdaki girdileri cihazınız için uygun değerlerle değiştirerek konak dosyanıza ekleyin:

      <Device IP> login.<appliance name>.<DNS domain>
      <Device IP> management.<appliance name>.<DNS domain>
      <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
      
    3. Başvuru için aşağıdaki görüntüyü kullanın. Hosts dosyasını kaydedin.

      hosts file in Notepad

  6. Bu yordamda kullanılan Python betiğini indirin.

  7. Ortamınızı Azure CLI için hazırlayın:

    • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

    • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

      • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

      • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

      • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

1. Adım: İstemcide Azure CLI/Python'ı ayarlama

Profili doğrulama ve Azure CLI'yı yükleme

  1. İstemcinize Azure CLI yükleyin. Bu örnekte Azure CLI 2.0.80 yüklenmişti. Azure CLI sürümünü doğrulamak için az --version komutunu çalıştırın.

    Yukarıdaki komutun örnek çıktısı aşağıda verilmiştir:

    PS C:\windows\system32> az --version
    azure-cli                         2.0.80
    
    command-modules-nspkg              2.0.3
    core                              2.0.80
    nspkg                              3.0.4
    telemetry                          1.0.4
    Extensions:
    azure-cli-iot-ext                  0.7.1
    
    Python location 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe'
    Extensions directory 'C:\.azure\cliextensions'
    
    Python (Windows) 3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 02:47:15) [MSC v.1900 32 bit (Intel)]
    
    Legal docs and information: aka.ms/AzureCliLegal
    
    Your CLI is up-to-date.
    
    Please let us know how we are doing: https://aka.ms/clihats
    PS C:\windows\system32>
    

    Azure CLI'nız yoksa Windows'a Azure CLI'yı indirip yükleyin. Azure CLI'ı Windows komut istemini kullanarak veya Windows PowerShell aracılığıyla çalıştırabilirsiniz.

  2. CLI'nın Python konumunu not edin. Azure CLI için güvenilen kök sertifika deposunun konumunu belirlemek için Python konumuna ihtiyacınız vardır.

  3. Bu makalede kullanılan örnek betiği çalıştırmak için aşağıdaki Python kitaplığı sürümleri gerekir:

    azure-common==1.1.23
    azure-mgmt-resource==2.1.0
    azure-mgmt-network==2.7.0
    azure-mgmt-compute==5.0.0
    azure-mgmt-storage==1.5.0
    azure-storage-blob==1.2.0rc1
    haikunator
    msrestazure==0.6.2
    

    Sürümleri yüklemek için aşağıdaki komutu çalıştırın:

    .\python.exe -m pip install haikunator
    

    Aşağıdaki örnek çıktıda Haikunator yüklemesi gösterilmektedir:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe -m pip install haikunator
    
    Collecting haikunator
      Downloading https://files.pythonhosted.org/packages/43/fa/130968f1a1bb1461c287b9ff35c630460801783243acda2cbf3a4c5964a5/haikunator-2.1.0-py2.py3-none-any.whl
    
    Installing collected packages: haikunator
    Successfully installed haikunator-2.1.0
    You are using pip version 10.0.1, however version 20.0.1 is available.
    You should consider upgrading using the 'python -m pip install --upgrade pip' command.
    
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> 
    

    Aşağıdaki örnek çıktı için pip msrestazureyüklemesini gösterir:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe -m pip install msrestazure==0.6.2
    Requirement already satisfied: msrestazure==0.6.2 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (0.6.2)
    Requirement already satisfied: msrest<2.0.0,>=0.6.0 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from msrestazure==0.6.2) (0.6.10)
    === CUT ===========================  CUT ==================================
    Requirement already satisfied: cffi!=1.11.3,>=1.8 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from cryptography>=1.1.0->adal<2.0.0,>=0.6.0->msrestazure==0.6.2) (1.13.2)
    Requirement already satisfied: pycparser in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from cffi!=1.11.3,>=1.8->cryptography>=1.1.0->adal<2.0.0,>=0.6.0->msrestazure==0.6.2) (2.18)
    You are using pip version 10.0.1, however version 20.0.1 is available.
    You should consider upgrading using the 'python -m pip install --upgrade pip' command.
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

Azure Stack Edge Pro CA kök sertifikasına güvenme

  1. Makinenizde sertifika konumunu bulun. Konumu, yüklediğiniz az clikonuma bağlı olarak değişebilir. Windows PowerShell'i yönetici olarak çalıştırın. Python'ın yüklü olduğu az cli yola geçin: C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe.

    Sertifika konumunu almak için aşağıdaki komutu yazın:

    .\python -c "import certifi; print(certifi.where())"
    

    Cmdlet, aşağıda görüldüğü gibi sertifika konumunu döndürür:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python -c "import certifi; print(certifi.where())"
    C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

    Bu konumu daha sonra kullanacağınız gibi not edin - C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem

  2. Mevcut Python sertifikasına ekleyerek Azure Stack Edge Pro CA kök sertifikasına güvenin. PEM sertifikasını daha önce kaydettiğiniz yerin yolunu sağlayacaksınız.

    $pemFile = "<Path to the pem format certificate>"
    

    Örnek yol"C:\VM-scripts\rootteam3device.pem" olabilir

    Ardından Windows PowerShell'e aşağıdaki komut serisini yazın:

    $root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
        $root.Import($pemFile)
    
    Write-Host "Extracting required information from the cert file"
    $md5Hash    = (Get-FileHash -Path $pemFile -Algorithm MD5).Hash.ToLower()
    $sha1Hash   = (Get-FileHash -Path $pemFile -Algorithm SHA1).Hash.ToLower()
    $sha256Hash = (Get-FileHash -Path $pemFile -Algorithm SHA256).Hash.ToLower()
    
    $issuerEntry  = [string]::Format("# Issuer: {0}", $root.Issuer)
    $subjectEntry = [string]::Format("# Subject: {0}", $root.Subject)
    $labelEntry   = [string]::Format("# Label: {0}", $root.Subject.Split('=')[-1])
    $serialEntry  = [string]::Format("# Serial: {0}", $root.GetSerialNumberString().ToLower())
    $md5Entry = [string]::Format("# MD5 Fingerprint: {0}", $md5Hash)
    $sha1Entry= [string]::Format("# SHA1 Fingerprint: {0}", $sha1Hash)
    $sha256Entry  = [string]::Format("# SHA256 Fingerprint: {0}", $sha256Hash)
    $certText = (Get-Content -Path $pemFile -Raw).ToString().Replace("`r`n","`n")
    
    $rootCertEntry = "`n" + $issuerEntry + "`n" + $subjectEntry + "`n" + $labelEntry + "`n" + `
    $serialEntry + "`n" + $md5Entry + "`n" + $sha1Entry + "`n" + $sha256Entry + "`n" + $certText
    
    Write-Host "Adding the certificate content to Python Cert store"
    Add-Content "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem" $rootCertEntry
    
    Write-Host "Python Cert store was updated to allow the Azure Stack Edge Pro CA root certificate"
    

Azure Stack Edge Pro'ya Bağlan

  1. az cloud register komutunu çalıştırarak Azure Stack Edge Pro ortamınızı kaydedin .

    Bazı senaryolarda, doğrudan giden İnternet bağlantısı ssl kesme işlemini zorunlu kılan bir ara sunucu veya güvenlik duvarı üzerinden yönlendirilir. Bu gibi durumlarda, komut "Buluttan az cloud register uç noktalar alınamıyor" gibi bir hatayla başarısız olabilir. Bu hatayı geçici olarak çözmek için Windows PowerShell'de aşağıdaki ortam değişkenlerini ayarlayın:

    $ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 
    $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
    
  2. Azure Resource Manager uç noktası için betik için ortam değişkenlerini, kaynakların oluşturulduğu konumu ve kaynak VHD'nin bulunduğu konumu ayarlayın. Kaynakların konumu tüm Azure Stack Edge Pro cihazlarında sabittir ve olarak dbelocalayarlanır. Adres ön eklerini ve özel IP adresini de belirtmeniz gerekir. Aşağıdaki ortam değişkenlerinin tümü, için sabit kodlanması "dbelocal"gereken dışındaki AZURE_RESOURCE_LOCATIONdeğerlerinize dayalı değerlerdir.

    $ENV:ARM_ENDPOINT = "https://management.team3device.teatraining1.com"
    $ENV:AZURE_RESOURCE_LOCATION = "dbelocal"
    $ENV:VHD_FILE_PATH = "C:\Downloads\Ubuntu1604\Ubuntu13.vhd"
    $ENV:ADDRESS_PREFIXES = "5.5.0.0/16"
    $ENV:PRIVATE_IP_ADDRESS = "5.5.174.126"
    
  3. Ortamınızı kaydedin. az cloud register'ı çalıştırırken aşağıdaki parametreleri kullanın:

    Değer Tanım Örnek
    Ortam adı Bağlanmaya çalıştığınız ortamın adı Bir ad girin, örneğin, aze-environ
    Resource Manager uç noktası Bu URL şeklindedir https://Management.<appliancename><dnsdomain>.
    Bu URL'yi almak için cihazınızın yerel web kullanıcı arabirimindeki Cihazlar sayfasına gidin.
    Örneğin, https://management.team3device.teatraining1.com.
    az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
    

    Aşağıda yukarıdaki komutun örnek kullanımı gösterilmektedir:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud register -n az-new-env --endpoint-resource-manager "https://management.team3device.teatraining1.com"
    
  4. Aşağıdaki komutu kullanarak etkin ortamı ayarlayın:

    az cloud set -n <EnvironmentName>
    

    Aşağıda yukarıdaki komutun örnek kullanımı gösterilmektedir:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud set -n az-new-env
    Switched active cloud to 'az-new-env'.
    Use 'az login' to log in to this cloud.
    Use 'az account set' to set the active subscription.
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    
  5. az login komutunu kullanarak Azure Stack Edge Pro ortamınızda oturum açın . Azure Stack Edge Pro ortamında kullanıcı veya hizmet sorumlusu olarak oturum açabilirsiniz.

    Kullanıcı olarak oturum açmak için şu adımları izleyin:

    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 yapmanız gerekir.

    Aşağıda örnek kullanımı gösterilmektedir az login:

    PS C:\Certificates> az login -u EdgeARMuser
    

    Oturum açma komutunu kullandıktan sonra bir parola girmeniz istenir. Azure Resource Manager parolasını belirtin.

    Parola sağlandıktan sonra başarılı bir oturum açma işleminin örnek çıktısı aşağıda gösterilmiştir:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az login -u EdgeARMuser
    Password:
    [
         {
             "cloudName": "az-new-env",
             "id": "A4257FDE-B946-4E01-ADE7-674760B8D1A3",
             "isDefault": true,
             "name": "Default Provider Subscription",
             "state": "Enabled",
             "tenantId": "c0257de7-538f-415c-993a-1b87a031879d",
             "user": {
                 "name": "EdgeArmUser@localhost",
                 "type": "user"
             }
         }
    ]
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

    Ve tenantId değerlerini not id alın. Bu değerler sırasıyla Azure Resource Manager Abonelik Kimliğinize ve Azure Resource Manager Kiracı Kimliği'ne karşılık gelir ve sonraki adımda kullanılır.

    Aşağıdaki ortam değişkenlerinin hizmet sorumlusu olarak çalışacak şekilde ayarlanması gerekir:

    $ENV:ARM_TENANT_ID = "c0257de7-538f-415c-993a-1b87a031879d"
    $ENV:ARM_CLIENT_ID = "cbd868c5-7207-431f-8d16-1cb144b50971"
    $ENV:ARM_CLIENT_SECRET - "<Your Azure Resource Manager password>"
    $ENV:ARM_SUBSCRIPTION_ID = "<Your subscription ID>"
    

    Azure Resource Manager İstemci Kimliğiniz sabit kodlanmış. Azure Resource Manager Kiracı Kimliğiniz ve Azure Resource Manager Abonelik Kimliğiniz daha önce çalıştırdığınız komutun az login çıktısında bulunur. Azure Resource Manager İstemci gizli anahtarı, ayarladığınız Azure Resource Manager parolasıdır.

    Daha fazla bilgi için bkz . Azure Resource Manager parolası.

  6. Profili sürüm 2019-03-01-hybrid olarak değiştirin. Profil sürümünü değiştirmek için aşağıdaki komutu çalıştırın:

    az cloud update --profile 2019-03-01-hybrid
    

    Aşağıda örnek kullanımı gösterilmektedir az cloud update:

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud update --profile 2019-03-01-hybrid
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

2. Adım: VM oluşturma

Vm oluşturmak için size bir Python betiği sağlanır. Kullanıcı olarak oturum açıp açmadığınıza veya hizmet sorumlusu olarak ayarlanıp ayarlanmadığınıza bağlı olarak, betik girişi uygun şekilde alır ve bir VM oluşturur.

  1. Python betiğini Python'ın yüklü olduğu dizinden çalıştırın.
.\python.exe example_dbe_arguments_name_https.py cli
  1. Betik çalıştırıldığında VHD'nin karşıya yüklenmesi 20-30 dakika sürer. Karşıya yükleme işleminin ilerleme durumunu görüntülemek için Azure Depolama Gezgini veya AzCopy kullanabilirsiniz.

    Aşağıda betiğin başarılı bir şekilde çalıştırılmasının örnek bir çıktısı verilmiştir. Betik bir kaynak grubu içindeki tüm kaynakları oluşturur, bu kaynakları kullanarak vm oluşturur ve son olarak oluşturduğu tüm kaynaklar dahil olmak üzere kaynak grubunu siler.

    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe example_dbe_arguments_name_https.py cli
    
    Create Resource Group
    Create a storage account
    Uploading to Azure Stack Storage as blob:
            ubuntu13.vhd
    
    Listing blobs...
            ubuntu13.vhd
    
    VM image resource id:
                /subscriptions/.../resourceGroups/azure-sample-group-virtual-machines118/providers/Microsoft.Compute/images/UbuntuImage
    
    Create Vnet
    Create Subnet
    Create NIC
    Creating Linux Virtual Machine
    Tag Virtual Machine
    Create (empty) managed Data Disk
    Get Virtual Machine by Name
    Attach Data Disk
    Detach Data Disk
    Deallocating the VM (to prepare for a disk resize)
    Update OS disk size
    Start VM
    Restart VM
    Stop VM
    
    List VMs in subscription
            VM: VmName118
    
    List VMs in resource group
            VM: VmName118
    
    Delete VM
    All example operations completed successfully!
    
    Delete Resource Group
    Deleted: azure-sample-group-virtual-machines118
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

Sonraki adımlar

Linux sanal makineleri için yaygın Az CLI komutları