Azure CLI ve Python kullanarak Azure Stack Edge Pro GPU cihazınızda VM'leri dağıtma
ŞUNLAR IÇIN GEÇERLIDIR:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure 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.
Dağıtım iş akışının üst düzey özeti aşağıdaki gibidir:
- Azure Resource Manager'a bağlanma
- Kaynak grubu oluşturma
- Depolama hesabı oluşturma
- Konaklar dosyasına blob URI'sini ekleme
- Sertifikaları yükleme
- VHD’yi karşıya yükleme
- VHD'den yönetilen diskler oluşturma
- Görüntü yönetilen diskten VM görüntüsü oluşturma
- Önceden oluşturulmuş kaynaklarla VM oluşturma
- Sanal ağ oluşturma
- 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:
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.
İş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:
İş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.
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.
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.
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
.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.
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\etc
hosts dosyasını açın.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>
Başvuru için aşağıdaki görüntüyü kullanın. Hosts dosyasını kaydedin.
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
İ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.
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.
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
msrestazure
yü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
Makinenizde sertifika konumunu bulun. Konumu, yüklediğiniz
az cli
konuma bağlı olarak değişebilir. Windows PowerShell'i yönetici olarak çalıştırın. Python'ın yüklü olduğuaz 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
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
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
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
dbelocal
ayarlanı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ışındakiAZURE_RESOURCE_LOCATION
değ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"
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"
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>
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 notid
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ı.
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.
- Python betiğini Python'ın yüklü olduğu dizinden çalıştırın.
.\python.exe example_dbe_arguments_name_https.py cli
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>