Nasazení virtuálních počítačů na zařízení Azure Stack Edge Pro GPU pomocí Azure CLI a Pythonu
PLATÍ PRO: Azure Stack Edge Pro – GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Na zařízení Azure Stack Edge můžete vytvářet a spravovat virtuální počítače pomocí rozhraní API. Tato rozhraní API jsou standardní rozhraní API Azure Resource Manageru, která se volají pomocí místního koncového bodu Azure Stack Edge. Rozhraní API Azure Resource Manageru nabízejí konzistentní vrstvu správy, která v tomto případě umožňuje vytvářet, aktualizovat a odstraňovat virtuální počítače v místním předplatném na zařízení. K Azure Resource Manageru na zařízení Azure Stack Edge se můžete připojit prostřednictvím rutin Azure PowerShellu.
Tento kurz popisuje, jak vytvořit a spravovat virtuální počítač na zařízení Azure Stack Edge Pro pomocí Pythonu a rozhraní Azure API.
Pracovní postup nasazení virtuálního počítače
Pracovní postup nasazení je znázorněn v následujícím diagramu.
Souhrnný přehled pracovního postupu nasazení je následující:
- Připojení k Azure Resource Manageru
- Vytvoření skupiny zdrojů
- Vytvoření účtu úložiště
- Přidání identifikátoru URI objektu blob do souboru hostitelů
- Instalace certifikátů
- Nahrání virtuálního pevného disku
- Vytvoření spravovaných disků z virtuálního pevného disku
- Vytvoření image virtuálního počítače ze spravovaného disku image
- Vytvoření virtuálního počítače s dříve vytvořenými prostředky
- Vytvoření virtuální sítě
- Vytvoření VNIC pomocí ID podsítě virtuální sítě
Podrobné vysvětlení diagramu pracovního postupu najdete v tématu Nasazení virtuálních počítačů na zařízení Azure Stack Edge Pro pomocí Azure PowerShellu. Informace o připojení k Azure Resource Manageru najdete v tématu Připojení k Azure Resource Manageru pomocí Azure PowerShellu.
Požadavky
Než začnete vytvářet a spravovat virtuální počítač na zařízení Azure Stack Edge Pro pomocí Azure CLI a Pythonu, musíte se ujistit, že jste dokončili požadavky uvedené v následujících krocích:
Dokončili jste nastavení sítě na zařízení Azure Stack Edge Pro, jak je popsáno v kroku 1: Konfigurace zařízení Azure Stack Edge Pro.
Povolili jste síťové rozhraní pro výpočty. Tato IP adresa síťového rozhraní slouží k vytvoření virtuálního přepínače pro nasazení virtuálního počítače. Následující kroky vás provedou procesem:
Přejděte na Compute. Vyberte síťové rozhraní, které použijete k vytvoření virtuálního přepínače.
Důležité
Pro výpočetní prostředky můžete nakonfigurovat jenom jeden port.
Povolte výpočetní prostředky v síťovém rozhraní. Azure Stack Edge Pro vytvoří a spravuje virtuální přepínač odpovídající danému síťovému rozhraní.
Vytvořili jste a nainstalovali jste všechny certifikáty na zařízení Azure Stack Edge Pro a v důvěryhodném úložišti klienta. Postupujte podle postupu popsaného v kroku 2: Vytvoření a instalace certifikátů.
Vytvořili jste pro zařízení Azure Stack Edge Pro certifikát s kódováním Base-64 .cer (formát PEM). Tento certifikát se už nahraje jako podpisový řetězec na zařízení a nainstaluje se do důvěryhodného kořenového úložiště na vašem klientovi. Tento certifikát se také vyžaduje ve formátu pem , aby Python fungoval na tomto klientovi.
Převeďte tento certifikát na
pem
formát pomocí příkazu certutil . Tento příkaz musíte spustit v adresáři, který obsahuje váš certifikát.certutil.exe <SourceCertificateName.cer> <DestinationCertificateName.pem>
Následující příklad ukazuje použití ukázkových příkazů:
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>
Později ho
pem
přidáte také do úložiště Pythonu.IP adresu zařízení jste přiřadili na stránce Síť v místním webovém uživatelském rozhraní zařízení. Přidejte tuto IP adresu do:
- Soubor hostitele v klientovi, OR,
- Konfigurace serveru DNS
Důležité
Doporučujeme upravit konfiguraci serveru DNS pro překlad názvů koncových bodů.
Spusťte Poznámkový blok jako správce (k uložení souboru se vyžadují oprávnění správce) a otevřete soubor hostitelů umístěný na adrese
C:\Windows\System32\Drivers\etc
.Přidejte do souboru hostitelů následující položky a nahraďte je odpovídajícími hodnotami pro vaše zařízení:
<Device IP> login.<appliance name>.<DNS domain> <Device IP> management.<appliance name>.<DNS domain> <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
Pro referenci použijte následující obrázek. Uložte soubor hostitelů.
Stáhněte skript Pythonu použitý v tomto postupu.
Příprava prostředí pro Azure CLI:
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Krok 1: Nastavení Azure CLI nebo Pythonu na klientovi
Ověření profilu a instalace Azure CLI
Nainstalujte Azure CLI na klienta. V tomto příkladu se nainstalovalo Azure CLI 2.0.80. Pokud chcete ověřit verzi Azure CLI, spusťte příkaz az --version .
Následuje ukázkový výstup z výše uvedeného příkazu:
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>
Pokud nemáte Azure CLI, stáhněte a nainstalujte Azure CLI ve Windows. Azure CLI můžete spustit pomocí příkazového řádku Windows nebo windows PowerShellu.
Poznamenejte si umístění Pythonu v rozhraní příkazového řádku. K určení umístění důvěryhodného kořenového úložiště certifikátů pro Azure CLI potřebujete umístění Pythonu.
Pokud chcete spustit ukázkový skript použitý v tomto článku, budete potřebovat následující verze knihovny Pythonu:
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
Pokud chcete nainstalovat verze, spusťte následující příkaz:
.\python.exe -m pip install haikunator
Následující ukázkový výstup ukazuje instalaci Haikunatoru:
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>
Následující ukázkový výstup ukazuje instalaci pip pro
msrestazure
: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>
Důvěřovat kořenovému certifikátu certifikační autority Azure Stack Edge Pro
Najděte umístění certifikátu na vašem počítači. Umístění se může lišit v závislosti na tom, kde jste nainstalovali
az cli
. Spusťte Windows PowerShell jako správce. Přepněte na cestu, kdeaz cli
je nainstalovaný Python:C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe
.Umístění certifikátu získáte zadáním následujícího příkazu:
.\python -c "import certifi; print(certifi.where())"
Rutina vrátí umístění certifikátu, jak je znázorněno níže:
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>
Poznamenejte si toto umístění, protože ho budete později používat –
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
Důvěřovat kořenovému certifikátu certifikační autority Azure Stack Edge Pro tak, že ho připojíte k existujícímu certifikátu Pythonu. Zadáte cestu k dříve uloženému certifikátu PEM.
$pemFile = "<Path to the pem format certificate>"
Příkladem cesty je C:\VM-scripts\rootteam3device.pem.
Pak do Windows PowerShellu zadejte následující řadu příkazů:
$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"
Připojení k Azure Stack Edge Pro
Spuštěním příkazu az cloud register zaregistrujte prostředí Azure Stack Edge Pro.
V některých scénářích se přímé odchozí připojení k internetu směruje přes proxy server nebo bránu firewall, která vynucuje zachycení SSL. V těchto případech může příkaz selhat s chybou typu
az cloud register
Nejde získat koncové body z cloudu. Pokud chcete tuto chybu obejít, nastavte v prostředí Windows PowerShell následující proměnné prostředí:$ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
Nastavte proměnné prostředí pro skript pro koncový bod Azure Resource Manageru, umístění, kde se prostředky vytvářejí, a cestu k umístění zdrojového virtuálního pevného disku. Umístění prostředků je pevné na všech zařízeních Azure Stack Edge Pro a je nastavené na
dbelocal
. Musíte také zadat předpony adres a privátní IP adresu. Všechny následující proměnné prostředí jsou hodnoty založené na vašich hodnotách s výjimkouAZURE_RESOURCE_LOCATION
, které by měly být pevně zakódovány"dbelocal"
.$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"
Zaregistrujte své prostředí. Při spuštění příkazu az cloud register použijte následující parametry:
Hodnota Popis Příklad Název prostředí Název prostředí, ke kterému se pokoušíte připojit Zadejte například název. aze-environ
Koncový bod Resource Manageru Tato adresa URL je https://Management.<appliancename><dnsdomain>
.
Pokud chcete získat tuto adresu URL, přejděte na stránku Zařízení v místním webovém uživatelském rozhraní vašeho zařízení.Například https://management.team3device.teatraining1.com
.az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
Následující příklad ukazuje použití výše uvedeného příkazu:
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud register -n az-new-env --endpoint-resource-manager "https://management.team3device.teatraining1.com"
Nastavte aktivní prostředí pomocí následujícího příkazu:
az cloud set -n <EnvironmentName>
Následující příklad ukazuje použití výše uvedeného příkazu:
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>
Přihlaste se k prostředí Azure Stack Edge Pro pomocí příkazu az login . K prostředí Azure Stack Edge Pro se můžete přihlásit buď jako uživatel, nebo jako instanční objekt.
Pokud se chcete přihlásit jako uživatel, postupujte takto:
Uživatelské jméno a heslo můžete zadat buď přímo v
az login
příkazu, nebo se ověřit pomocí prohlížeče. Pokud má váš účet povolené vícefaktorové ověřování, musíte to udělat.Následující příklad ukazuje ukázkové
az login
využití:PS C:\Certificates> az login -u EdgeARMuser
Po použití příkazu pro přihlášení se zobrazí výzva k zadání hesla. Zadejte heslo Azure Resource Manageru.
Následující příklad ukazuje ukázkový výstup úspěšného přihlášení po zadání hesla:
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": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "user": { "name": "EdgeArmUser@localhost", "type": "user" } } ] PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
Poznamenejte
id
si hodnoty atenantId
hodnoty, které odpovídají ID předplatného Azure Resource Manageru a ID tenanta Azure Resource Manageru, a použije se v pozdějším kroku.Následující proměnné prostředí je potřeba nastavit tak, aby fungovaly jako instanční objekt:
$ENV:ARM_TENANT_ID = "aaaabbbb-0000-cccc-1111-dddd2222eeee" $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>"
ID klienta Azure Resource Manageru je pevně zakódované. ID vašeho tenanta Azure Resource Manageru a ID předplatného Azure Resource Manageru se nacházejí ve výstupu
az login
příkazu, který jste spustili dříve. Tajný kód klienta Azure Resource Manageru je heslo Azure Resource Manageru, které jste nastavili.Další informace najdete v tématu Heslo Azure Resource Manageru.
Změňte profil na verzi 2019-03-01-hybrid. Pokud chcete změnit verzi profilu, spusťte následující příkaz:
az cloud update --profile 2019-03-01-hybrid
Následující příklad ukazuje ukázkové
az cloud update
využití: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>
Krok 2: Vytvoření virtuálního počítače
K vytvoření virtuálního počítače se poskytuje skript Pythonu. V závislosti na tom, jestli jste přihlášení jako uživatel nebo nastavíte jako instanční objekt, skript odpovídajícím způsobem převezme vstup a vytvoří virtuální počítač.
- Spusťte skript Pythonu ze stejného adresáře, ve kterém je nainstalovaný Python.
.\python.exe example_dbe_arguments_name_https.py cli
Při spuštění skriptu trvá nahrání virtuálního pevného disku 20 až 30 minut. Pokud chcete zobrazit průběh operace nahrávání, můžete použít Průzkumník služby Azure Storage nebo AzCopy.
Tady je ukázkový výstup úspěšného spuštění skriptu. Skript vytvoří všechny prostředky v rámci skupiny prostředků, použije tyto prostředky k vytvoření virtuálního počítače a nakonec odstraní skupinu prostředků včetně všech prostředků, které vytvořila.
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>