Nasazení virtuálních počítačů na zařízení Azure Stack Edge Pro GPU pomocí Azure CLI a Pythonu

PLATÍ PRO:Yes for Pro GPU SKU Azure 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

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.

VM deployment workflow

Souhrnný přehled pracovního postupu nasazení je následující:

  1. Připojení k Azure Resource Manageru
  2. Vytvoření skupiny zdrojů
  3. Vytvoření účtu úložiště
  4. Přidání identifikátoru URI objektu blob do souboru hostitelů
  5. Instalace certifikátů
  6. Nahrání virtuálního pevného disku
  7. Vytvoření spravovaných disků z virtuálního pevného disku
  8. Vytvoření image virtuálního počítače ze spravovaného disku image
  9. Vytvoření virtuálního počítače s dříve vytvořenými prostředky
  10. Vytvoření virtuální sítě
  11. 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.

Předpoklady

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:

  1. 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.

  2. 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:

    1. 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.

    2. 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í.

  3. 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ů.

  4. Vytvořili jste certifikát .cer s kódováním Base-64 (formát PEM) pro zařízení Azure Stack Edge Pro. 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.

  5. 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ů.

    1. Spusťte Poznámkový blok jako správce (k uložení souboru se vyžadují oprávnění Správa istrator) a otevřete soubor hostitelů umístěný na adrese C:\Windows\System32\Drivers\etc.

      Windows Explorer hosts file

    2. 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>
      
    3. Pro referenci použijte následující obrázek. Uložte soubor hostitelů.

      hosts file in Notepad

  6. Stáhněte skript Pythonu použitý v tomto postupu.

  7. Příprava prostředí pro Azure CLI:

Krok 1: Nastavení Azure CLI nebo Pythonu na klientovi

Ověření profilu a instalace Azure CLI

  1. 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.

  2. 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.

  3. 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

  1. 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, kde az 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

  2. 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í do Azure Stack Edge Pro

  1. 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
    
  2. 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ýjimkou AZURE_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"
    
  3. 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"
    
  4. 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>
    
  5. 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 loginvyuž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": "c0257de7-538f-415c-993a-1b87a031879d",
             "user": {
                 "name": "EdgeArmUser@localhost",
                 "type": "user"
             }
         }
    ]
    PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
    

    Poznamenejte id si hodnoty a tenantId 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 = "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>"
    

    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.

  6. 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 updatevyuž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č.

  1. Spusťte skript Pythonu ze stejného adresáře, ve kterém je nainstalovaný Python.
.\python.exe example_dbe_arguments_name_https.py cli
  1. 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>
    

Další kroky

Běžné příkazy Az CLI pro virtuální počítače s Linuxem