Delen via


VM's implementeren op uw GPU-apparaat voor Azure Stack Edge Pro met behulp van Azure CLI en Python

VAN TOEPASSING OP: Ja voor Pro GPU-SKUAzure Stack Edge Pro - GPUJa voor Pro 2 SKUAzure Stack Edge Pro 2Ja voor Pro R SKUAzure Stack Edge Pro RJa voor Mini R SKUAzure Stack Edge Mini R

U kunt virtuele machines (VM's) maken en beheren op een Azure Stack Edge-apparaat met behulp van API's. Deze API's zijn standaard Azure Resource Manager-API's die worden aangeroepen met behulp van het lokale Azure Stack Edge-eindpunt. De Azure Resource Manager-API's bieden een consistente managementlaag, waarmee u in dit geval VM's kunt maken, bijwerken en verwijderen in een lokaal abonnement dat bestaat op het apparaat. U kunt verbinding maken met de versie van Azure Resource Manager die wordt uitgevoerd op Azure Stack Edge via Azure PowerShell-cmdlets.

In deze zelfstudie wordt beschreven hoe u een virtuele machine maakt en beheert op uw Azure Stack Edge Pro-apparaat met behulp van Python en de Azure-API.

VM-implementatiewerkstroom

De implementatiewerkstroom wordt afgebeeld in het volgende diagram.

VM-implementatiewerkstroom

Het overzicht op hoog niveau van de implementatiewerkstroom is als volgt:

  1. Verbinding maken met Azure Resource Manager
  2. Een brongroep maken
  3. Een opslagaccount maken
  4. Blob-URI toevoegen aan het hosts-bestand
  5. Certificaten installeren
  6. Een VHD uploaden
  7. Beheerde schijven maken op basis van de VHD
  8. Een VM-installatiekopie maken op basis van de installatiekopie van de beheerde schijf
  9. Een VM maken met eerder gemaakte resources
  10. Een VNet maken
  11. Een VNIC maken met de VNet-subnet-ID

Zie VM's op uw Azure Stack Edge Pro-apparaat implementeren met behulp van Azure PowerShell voor een gedetailleerde uitleg van het werkstroomdiagram. Voor informatie over verbinding maken met Azure Resource Manager raadpleegt u Verbinding maken met Azure Resource Manager met behulp van Azure PowerShell.

Vereisten

Voordat u een virtuele machine op uw Azure Stack Edge Pro-apparaat gaat maken en beheren met behulp van Azure CLI en Python, moet u ervoor zorgen dat u voldoet aan de vereisten die worden genoemd in de volgende stappen:

  1. U hebt de netwerkinstellingen op uw Azure Stack Edge Pro-apparaat voltooid, zoals beschreven in stap 1: Azure Stack Edge Pro-apparaat configureren.

  2. U hebt een netwerkinterface ingeschakeld voor berekening. Het IP-adres van de netwerkinterface wordt gebruikt om een virtuele switch te maken voor de VM-implementatie. Met de volgende stappen doorloopt u dit proces:

    1. Ga naar Compute. Selecteer de netwerkinterface die u wilt gebruiken om een virtuele switch te maken.

      Belangrijk

      U kunt slechts één poort configureren voor berekeningen.

    2. Schakel Compute in op de netwerkinterface. Azure Stack Edge Pro maakt en beheert een virtuele switch die overeenkomt met die netwerkinterface.

  3. U hebt alle certificaten gemaakt en geïnstalleerd op uw Azure Stack Edge Pro-apparaat en in het vertrouwensarchief van uw client. Volg de procedure die wordt beschreven in stap 2: Certificaten maken en installeren.

  4. U hebt een met Base-64 versleuteld .CER-certificaat (PEM-indeling) gemaakt voor uw Azure Stack Edge Pro-apparaat. Dat certificaat is al geüpload als ondertekeningsketen op het apparaat en geïnstalleerd in het vertrouwde basisarchief op uw client. Dit certificaat is ook vereist in PEM-indeling om Python te laten werken op deze client.

    Converteer dit certificaat naar pem indeling met behulp van de opdracht certutil . U moet deze opdracht uitvoeren in de map met uw certificaat.

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

    Hieronder ziet u een voorbeeld van hoe u deze opdracht gebruikt:

    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>
    

    U voegt dit pem ook later toe aan het Python-archief.

  5. U hebt het IP-adres van het apparaat toegewezen in uw netwerkpagina in de lokale web-UI van het apparaat. Voeg dit IP-adres toe aan:

    • Het hostbestand op de client, OF
    • De DNS-serverconfiguratie

    Belangrijk

    We raden aan de DNS-serverconfiguratie aan te passen voor de eindpuntnaamomzetting.

    1. Start Kladblok als beheerder (er zijn beheerdersrechten vereist om het bestand op te slaan) en open vervolgens het bestand hosts dat zich bevindt op C:\Windows\System32\Drivers\etc.

      Hosts-bestand in Windows Verkenner

    2. Voeg de volgende vermeldingen toe aan uw hosts-bestand, waarbij u de juiste waarden voor uw apparaat invoert:

      <Device IP> login.<appliance name>.<DNS domain>
      <Device IP> management.<appliance name>.<DNS domain>
      <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
      
    3. Gebruik de volgende afbeelding ter referentie. Sla het bestand met hosts op.

      Hosts-bestand in Kladblok

  6. Download het Python-script dat in deze procedure wordt gebruikt.

  7. De omgeving voorbereiden op de Azure CLI:

Stap 1: Azure CLI/Python instellen op de client

Profiel controleren en Azure CLI installeren

  1. Installeer Azure CLI op uw clientcomputer. In dit voorbeeld is Azure CLI 2.0.80 geïnstalleerd. Voer de opdracht az --version uit om de versie van Azure CLI te controleren.

    Hieronder ziet u voorbeelduitvoer van de bovenstaande opdracht:

    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>
    

    Als u Azure CLI nog niet hebt, kunt u Azure CLI downloaden en installeren in Windows. U kunt Azure CLI uitvoeren via de Windows-opdrachtprompt of via Windows PowerShell.

  2. Noteer de locatie van Python voor de CLI. U hebt de Python-locatie nodig om de locatie van het vertrouwde basiscertificaatarchief voor Azure CLI te bepalen.

  3. Om het voorbeeldscript uit te voeren dat in dit artikel wordt gebruikt, hebt u de volgende Python-bibliotheekversies nodig:

    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
    

    Voer de volgende opdracht uit om de versies te installeren:

    .\python.exe -m pip install haikunator
    

    In de volgende voorbeelduitvoer ziet u de installatie van Haikunator:

    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> 
    

    In de volgende voorbeelduitvoer ziet u de installatie van pip voor 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>
    

Het CA-basiscertificaat van Azure Stack Edge Pro vertrouwen

  1. Zoek de locatie van het certificaat op de computer. De locatie kan variëren, afhankelijk van waar u az cli hebt geïnstalleerd. Voer Windows PowerShell uit als administrator. Schakel over naar het pad waar az cli Python heeft geïnstalleerd: C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe.

    Als u de certificaatlocatie wilt ophalen, typt u de volgende opdracht:

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

    De cmdlet retourneert de certificaatlocatie, zoals hieronder wordt weergegeven:

    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>
    

    Noteer deze locatie als u deze later gaat gebruiken: C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem

  2. Vertrouw het CA-basiscertificaat van Azure Stack Edge Pro door het toe te voegen aan het bestaande Python-certificaat. U geeft het pad op naar de locatie waar u het PEM-certificaat eerder hebt opgeslagen.

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

    Een voorbeeld van dit pad is 'C:\VM-scripts\rootteam3device.pem'

    Typ vervolgens de volgende reeks opdrachten in Windows PowerShell:

    $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"
    

Verbinding maken met Azure Stack Edge Pro

  1. Registreer uw Azure Stack Edge Pro-omgeving door de opdracht az cloud register uit te voeren.

    In sommige gevallen worden directe uitgaande Internet-verbindingen gerouteerd via een proxy of firewall, waarmee SSL-onderschepping wordt afgedwongen. In deze gevallen kan de az cloud register opdracht mislukken met een fout zoals 'Kan geen eindpunten ophalen uit de cloud'. Als u deze fout wilt omzeilen, stelt u de volgende omgevingsvariabelen in Windows PowerShell in:

    $ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 
    $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
    
  2. Stel omgevingsvariabelen in voor het script voor het Azure Resource Manager-eindpunt, de locatie waar de resources zijn gemaakt en het pad naar de locatie van de bron-VHD. De locatie van de resources is hetzelfde op alle Azure Stack Edge Pro-apparaten en is ingesteld op dbelocal. U moet ook de adresvoorvoegsels en het privé-IP-adres opgeven. Alle volgende omgevingsvariabelen zijn waarden op basis van uw waarden, met uitzondering van AZURE_RESOURCE_LOCATION, die moeten worden vastgelegd in "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. Registreer uw omgeving. Gebruik de volgende parameters bij het uitvoeren van az cloud register:

    Weergegeven als Beschrijving Voorbeeld
    Omgevingsnaam De naam van de omgeving waarmee u verbinding wilt maken Geef een naam op, zoals aze-environ
    Resource Manager-eindpunt Deze URL is https://Management.<appliancename><dnsdomain>.
    Als u deze URL wilt ophalen, gaat u naar pagina Apparaten in de lokale webgebruikersinterface van uw apparaat.
    Bijvoorbeeld: https://management.team3device.teatraining1.com.
    az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
    

    Hieronder ziet u een voorbeeld van het gebruik van de bovenstaande opdracht:

    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. Stel de actieve omgeving in met behulp van de volgende opdracht:

    az cloud set -n <EnvironmentName>
    

    Hieronder ziet u een voorbeeld van het gebruik van de bovenstaande opdracht:

    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. Meld u aan bij uw Azure Stack Edge Pro-omgeving met behulp van de opdracht az login . U kunt zich aanmelden bij de Azure Stack Edge Pro-omgeving als een gebruiker of als een service-principal.

    Voer de volgende stappen uit om u aan te melden als een gebruiker:

    U kunt de gebruikersnaam en het wachtwoord rechtstreeks opgeven met de opdracht az login of verifiëren met behulp van een browser. U moet dit laatste doen als voor uw account meervoudige verificatie is ingeschakeld.

    Hieronder ziet u een voorbeeld van hoe u az login gebruikt:

    PS C:\Certificates> az login -u EdgeARMuser
    

    Nadat u de aanmeldingsopdracht hebt gebruikt, wordt u om een wachtwoord gevraagd. Voer het Azure Resource Manager-wachtwoord in.

    Hieronder ziet u voorbeelduitvoer voor een geslaagde aanmelding nadat u het wachtwoord hebt opgeven:

    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>
    

    Noteer de id waarden en tenantId waarden omdat deze waarden overeenkomen met respectievelijk uw Azure Resource Manager-abonnements-id en azure Resource Manager-tenant-id. Deze waarden worden in de latere stap gebruikt.

    De volgende omgevingsvariabelen moeten worden ingesteld voor correcte werking als service-principal:

    $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>"
    

    De Azure Resource Manager-client-id is vastgelegd in code. Uw Azure Resource Manager-tenant-id en Azure Resource Manager-abonnements-id zijn beide aanwezig in de uitvoer van de az login opdracht die u eerder hebt uitgevoerd. Het Azure Resource Manager-clientgeheim is het Azure Resource Manager-wachtwoord dat u hebt ingesteld.

    Zie Azure Resource Manager-wachtwoord voor meer informatie.

  6. Wijzig het profiel naar versie 2019-03-01-hybrid. Als u de profielversie wilt wijzigen, voert u de volgende opdracht uit:

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

    Hieronder ziet u een voorbeeld van hoe u az cloud update gebruikt:

    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>
    

Stap 2: een VIRTUELE machine maken

Er wordt een Python-script beschikbaar gemaakt waarmee u een virtuele machine kunt maken. Afhankelijk van of u bent aangemeld als gebruiker of als service-principal, gebruikt het script de relevante invoer om een VM te maken.

  1. Voer het Python-script uit in dezelfde map waarin Python is geïnstalleerd.
.\python.exe example_dbe_arguments_name_https.py cli
  1. Wanneer het script wordt uitgevoerd, duurt het uploaden van de VHD 20-30 minuten. Als u de voortgang van de uploadbewerking wilt weergeven, kunt u Azure Storage Explorer of AzCopy gebruiken.

    Hier volgt een voorbeeld van de uitvoer van een geslaagde uitvoering van het script. Met het script worden alle resources in een resourcegroep gemaakt, worden deze resources gebruikt om een VM te maken en wordt de resourcegroep verwijderd, inclusief alle resources die zijn gemaakt.

    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>
    

Volgende stappen

Algemene Az CLI-opdrachten voor virtuele Linux-machines