Dela via


Distribuera virtuella datorer på din Azure Stack Edge Pro GPU-enhet med Azure CLI och Python

GÄLLER FÖR: Ja för Pro GPU SKUAzure Stack Edge Pro – GPUJa för Pro 2 SKUAzure Stack Edge Pro 2Ja för Pro R SKUAzure Stack Edge Pro RJa för Mini R SKUAzure Stack Edge Mini R

Du kan skapa och hantera virtuella datorer på en Azure Stack Edge-enhet med hjälp av API:er. Dessa API:er är Azure Resource Manager-standard-API:er som anropas med hjälp av den lokala Azure Stack Edge-slutpunkten. Azure Resource Manager-API:erna ger ett enhetligt hanteringslager som i det här fallet gör att du kan skapa, uppdatera och ta bort virtuella datorer i en lokal prenumeration som finns på enheten. Du kan ansluta till den Azure Resource Manager som körs i Azure Stack Edge via Azure PowerShell-cmdletar.

I den här självstudien beskrivs hur du skapar och hanterar en virtuell dator på din Azure Stack Edge Pro-enhet med hjälp av Python och Azure API.

Arbetsflöde för VM-distribution

Distributionsarbetsflödet visas i följande diagram.

Arbetsflöde för VM-distribution

Sammanfattningen på hög nivå av distributionsarbetsflödet är följande:

  1. Anslut till Azure Resource Manager
  2. Skapa en resursgrupp
  3. Skapa ett lagringskonto
  4. Lägga till blob-URI i värdfilen
  5. Installera certifikat
  6. Ladda upp en virtuell hårddisk
  7. Skapa hanterade diskar från den virtuella hårddisken
  8. Skapa en VM-avbildning från den hanterade avbildningsdisken
  9. Skapa en virtuell dator med resurser som skapats tidigare
  10. Skapa ett virtuellt nätverk
  11. Skapa ett virtuellt nätverkskort med VNet-undernäts-ID

En detaljerad förklaring av arbetsflödesdiagrammet finns i Distribuera virtuella datorer på din Azure Stack Edge Pro-enhet med Azure PowerShell. Information om hur du ansluter till Azure Resource Manager finns i Ansluta till Azure Resource Manager med Azure PowerShell.

Förutsättningar

Innan du börjar skapa och hantera en virtuell dator på din Azure Stack Edge Pro-enhet med Hjälp av Azure CLI och Python måste du se till att du har slutfört de krav som anges i följande steg:

  1. Du har slutfört nätverksinställningarna på din Azure Stack Edge Pro-enhet enligt beskrivningen i Steg 1: Konfigurera Azure Stack Edge Pro-enhet.

  2. Du har aktiverat ett nätverksgränssnitt för beräkning. Ip-adressen för nätverksgränssnittet används för att skapa en virtuell växel för vm-distributionen. Följande steg vägleder dig genom processen:

    1. Gå till Beräkning. Välj det nätverksgränssnitt som du ska använda för att skapa en virtuell växel.

      Viktigt!

      Du kan bara konfigurera en port för beräkning.

    2. Aktivera beräkning i nätverksgränssnittet. Azure Stack Edge Pro skapar och hanterar en virtuell växel som motsvarar nätverksgränssnittet.

  3. Du har skapat och installerat alla certifikat på din Azure Stack Edge Pro-enhet och i klientens betrodda lager. Följ proceduren som beskrivs i Steg 2: Skapa och installera certifikat.

  4. Du har skapat ett Base-64-kodat .cer certifikat (PEM-format) för din Azure Stack Edge Pro-enhet. Certifikatet har redan laddats upp som signeringskedja på enheten och installerats i det betrodda rotarkivet på klienten. Det här certifikatet krävs också i pem-format för att Python ska fungera på den här klienten.

    Konvertera det här certifikatet till pem formatering med hjälp av kommandot certutil . Du måste köra det här kommandot i katalogen som innehåller certifikatet.

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

    Följande visar exempel på kommandoanvändning:

    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>
    

    Du kommer också att lägga till detta pem i Python Store senare.

  5. Du har tilldelat enhetens IP-adress på sidan Nätverk i enhetens lokala webbgränssnitt. Lägg till den här IP-adressen i:

    • Värdfilen på klienten, ELLER,
    • DNS-serverkonfigurationen

    Viktigt!

    Vi rekommenderar att du ändrar DNS-serverkonfigurationen för slutpunktsnamnmatchning.

    1. Starta Anteckningar som administratör (administratörsbehörighet krävs för att spara filen) och öppna sedan värdfilen som finns på C:\Windows\System32\Drivers\etc.

      Windows Explorer-värdfil

    2. Lägg till följande poster i värdfilen och ersätt med lämpliga värden för enheten:

      <Device IP> login.<appliance name>.<DNS domain>
      <Device IP> management.<appliance name>.<DNS domain>
      <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
      
    3. Använd följande bild som referens. Spara värdens fil.

      värdfil i Anteckningar

  6. Ladda ned Python-skriptet som används i den här proceduren.

  7. Förbered din miljö för Azure CLI:

Steg 1: Konfigurera Azure CLI/Python på klienten

Verifiera profilen och installera Azure CLI

  1. Installera Azure CLI på klienten. I det här exemplet installerades Azure CLI 2.0.80. Kontrollera versionen av Azure CLI genom att köra kommandot az --version .

    Följande är exempelutdata från kommandot ovan:

    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>
    

    Om du inte har Azure CLI laddar du ned och installerar Azure CLI i Windows. Du kan köra Azure CLI med hjälp av Windows-kommandotolken eller via Windows PowerShell.

  2. Anteckna CLI:s Python-plats. Du behöver Python-platsen för att fastställa platsen för det betrodda rotcertifikatarkivet för Azure CLI.

  3. Om du vill köra exempelskriptet som används i den här artikeln behöver du följande Python-biblioteksversioner:

    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
    

    Kör följande kommando för att installera versionerna:

    .\python.exe -m pip install haikunator
    

    Följande exempelutdata visar installationen av 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> 
    

    Följande exempelutdata visar installationen av pip för 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>
    

Lita på rotcertifikatet för Azure Stack Edge Pro CA

  1. Hitta certifikatplatsen på datorn. Platsen kan variera beroende på var du har installerat az cli. Kör Windows PowerShell som administratör. Växla till sökvägen där az cli installerade Python: C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe.

    Om du vill hämta certifikatplatsen skriver du följande kommando:

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

    Cmdleten returnerar certifikatplatsen enligt nedan:

    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>
    

    Anteckna den här platsen eftersom du kommer att använda den senare - C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem

  2. Lita på Azure Stack Edge Pro CA-rotcertifikatet genom att lägga till det i det befintliga Python-certifikatet. Du anger sökvägen till platsen där du sparade PEM-certifikatet tidigare.

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

    En exempelsökväg skulle vara "C:\VM-scripts\rootteam3device.pem"

    Skriv sedan följande serie kommandon i 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"
    

Ansluta till Azure Stack Edge Pro

  1. Registrera din Azure Stack Edge Pro-miljö genom att köra kommandot az cloud register .

    I vissa scenarier dirigeras direkt utgående Internetanslutning via en proxy eller brandvägg, vilket framtvingar SSL-avlyssning. I dessa fall az cloud register kan kommandot misslyckas med ett fel som "Det går inte att hämta slutpunkter från molnet". Du kan undvika det här felet genom att ange följande miljövariabler i Windows PowerShell:

    $ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 
    $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
    
  2. Ange miljövariabler för skriptet för Azure Resource Manager-slutpunkten, platsen där resurserna skapas och sökvägen till den plats där den virtuella källHD:en finns. Platsen för resurserna är fast för alla Azure Stack Edge Pro-enheter och är inställd på dbelocal. Du måste också ange adressprefixen och den privata IP-adressen. Alla följande miljövariabler är värden som baseras på dina värden förutom AZURE_RESOURCE_LOCATION, som ska hårdkodas till "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. Registrera din miljö. Använd följande parametrar när du kör az cloud register:

    Värde beskrivning Exempel
    Miljönamn Namnet på den miljö som du försöker ansluta till Ange ett namn, till exempel aze-environ
    Resource Manager-slutpunkt Den här URL:en är https://Management.<appliancename><dnsdomain>.
    Om du vill hämta den här URL:en går du till sidan Enheter i enhetens lokala webbgränssnitt.
    Exempel: https://management.team3device.teatraining1.com
    az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
    

    Följande visar exempel på användning av kommandot ovan:

    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. Ange den aktiva miljön med hjälp av följande kommando:

    az cloud set -n <EnvironmentName>
    

    Följande visar exempel på användning av kommandot ovan:

    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. Logga in på din Azure Stack Edge Pro-miljö med hjälp av kommandot az login . Du kan logga in på Azure Stack Edge Pro-miljön antingen som användare eller som tjänstens huvudnamn.

    Följ dessa steg för att logga in som användare:

    Du kan antingen ange användarnamnet och lösenordet direkt i kommandot eller autentisera az login med hjälp av en webbläsare. Du måste göra det senare om ditt konto har multifaktorautentisering aktiverat.

    Följande visar exempel på användning av az login:

    PS C:\Certificates> az login -u EdgeARMuser
    

    När du har använt inloggningskommandot uppmanas du att ange ett lösenord. Ange Azure Resource Manager-lösenordet.

    Följande visar exempelutdata för en lyckad inloggning när lösenordet har angetts:

    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>
    

    Anteckna id värdena och tenantId eftersom dessa värden motsvarar ditt Azure Resource Manager-prenumerations-ID respektive Azure Resource Manager-klient-ID och kommer att användas i det senare steget.

    Följande miljövariabler måste anges för att fungera som tjänstens huvudnamn:

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

    Ditt Azure Resource Manager-klient-ID är hårdkodat. Både ditt Klient-ID för Azure Resource Manager och Azure Resource Manager-prenumerations-ID finns i utdata från kommandot az login som du körde tidigare. Azure Resource Manager-klienthemligheten är det Azure Resource Manager-lösenord som du anger.

    Mer information finns i Azure Resource Manager-lösenord.

  6. Ändra profilen till version 2019-03-01-hybrid. Om du vill ändra profilversionen kör du följande kommando:

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

    Följande visar exempel på användning av 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>
    

Steg 2: Skapa en virtuell dator

Du får ett Python-skript för att skapa en virtuell dator. Beroende på om du är inloggad som användare eller inställd som tjänstens huvudnamn tar skriptet indata i enlighet med detta och skapar en virtuell dator.

  1. Kör Python-skriptet från samma katalog där Python är installerat.
.\python.exe example_dbe_arguments_name_https.py cli
  1. När skriptet körs tar det 20–30 minuter att ladda upp den virtuella hårddisken. Om du vill visa förloppet för uppladdningsåtgärden kan du använda Azure Storage Explorer eller AzCopy.

    Här är ett exempel på utdata från en lyckad körning av skriptet. Skriptet skapar alla resurser i en resursgrupp, använder dessa resurser för att skapa en virtuell dator och tar slutligen bort resursgruppen inklusive alla resurser som den skapade.

    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>
    

Nästa steg

Vanliga Az CLI-kommandon för virtuella Linux-datorer