Delen via


Een installatiekopieën van een virtuele machine testen

In dit artikel wordt beschreven hoe u een installatiekopieën van een virtuele machine (VM) test om ervoor te zorgen dat deze voldoet aan de nieuwste publicatievereisten voor Azure Marketplace.

Een Virtuele Azure-machine implementeren

Een VIRTUELE machine implementeren vanuit de Installatiekopieëngalerie van Azure Compute (voorheen bekend als Shared Image Gallery):

  1. Open de installatiekopieënversie van de Azure Compute Gallery.
  2. Selecteer Virtuele machine maken.
  3. Geef de naam van een virtuele machine op en selecteer een VM-grootte.
  4. Selecteer Controleren + maken. Zodra de validatie is geslaagd, selecteert u Maken.

Notitie

Als u een virtuele machine wilt maken op basis van een vhd-bestand, volgt u de onderstaande instructies onder Het certificeringsprogramma verbinden met een VM-installatiekopieën of powerShell gebruiken om de selftest-API te gebruiken.

Voer deze stappen uit voordat u uw VM-aanbieding indient:

Validaties uitvoeren

Er zijn twee manieren om validaties uit te voeren op de geïmplementeerde installatiekopie.

Hulpprogramma voor certificeringstest gebruiken voor Azure Certified

Belangrijk

Als u het hulpprogramma voor certificeringstests wilt uitvoeren, moet de Windows Remote Management-service worden uitgevoerd en geconfigureerd in Windows. Hierdoor is toegang tot poort 5986 mogelijk. Zie Installatie en configuratie voor Windows Remote Management voor meer informatie.

Het hulpprogramma voor certificeringstests downloaden en uitvoeren

Het certificeringstestprogramma voor Azure Certified wordt uitgevoerd op een lokale Windows-computer, maar test een Op Azure gebaseerde Windows- of Linux-VM. Het is gecertificeerd dat aan uw vm-installatiekopieën van uw gebruiker kan worden gebruikt met Microsoft Azure en dat aan de richtlijnen en vereisten voor het voorbereiden van uw VHD is voldaan.

  1. Download en installeer het meest recente certificeringstestprogramma voor Azure Certified.
  2. Open het certificeringsprogramma en selecteer Vervolgens Nieuwe test starten.
  3. Voer in het scherm Testgegevens een testnaam in voor de testuitvoering.
  4. Selecteer het platform voor uw VIRTUELE machine, Windows Server (poort 5986 voor Windows toestaan) of Linux (poort 22 voor Linux toestaan). Uw platformkeuze is van invloed op de resterende opties.
  5. Als uw VIRTUELE machine deze databaseservice gebruikt, schakelt u het selectievakje Testen voor Azure SQL Database in.

Het certificeringsprogramma verbinden met een VM-installatiekopieën

  1. Selecteer de SSH-verificatiemodus: Wachtwoordverificatie of sleutelbestandsverificatie.

  2. Als u verificatie op basis van wachtwoorden gebruikt, voert u waarden in voor de DNS-naam, gebruikersnaam en wachtwoord van de VM. U kunt ook het standaard-SSH-poortnummer wijzigen.

    Toont de selectie van vm-testgegevens.

  3. Als u verificatie op basis van sleutels op basis van bestanden gebruikt, voert u waarden in voor de DNS-naam van de VIRTUELE machine, de gebruikersnaam en de locatie van de persoonlijke sleutel. U kunt ook een wachtwoordzin opnemen of het standaard-SSH-poortnummer wijzigen.

  4. Voer de fully qualified VM DNS-naam in (bijvoorbeeld MyVMName.Cloudapp.net).

  5. Voer gebruikersnaam en wachtwoord in.

    Hiermee wordt de selectie van de gebruikersnaam en het wachtwoord van de VIRTUELE machine weergegeven.

  6. Selecteer Volgende.

Een certificeringstest uitvoeren

Nadat u de parameterwaarden voor uw VM-installatiekopieën in het certificeringsprogramma hebt opgegeven, selecteert u Verbinding testen om een geldige verbinding met uw VIRTUELE machine te maken. Nadat een verbinding is geverifieerd, selecteert u Volgende om de test te starten. Wanneer de test is voltooid, worden de resultaten weergegeven in een tabel. In de kolom Status wordt (Pass/Fail/Warning) voor elke test weergegeven. Als een van de tests mislukt, is uw installatiekopieën niet gecertificeerd. Bekijk in dit geval de vereisten en foutberichten, breng de voorgestelde wijzigingen aan en voer de test opnieuw uit.

Nadat de geautomatiseerde test is voltooid, geeft u aanvullende informatie over uw VM-installatiekopieën op op de twee tabbladen van het scherm Vragenlijst, Algemene evaluatie en kernelaanpassing en selecteert u Vervolgens.

In het laatste scherm kunt u meer informatie opgeven, zoals SSH-toegangsgegevens voor een linux-VM-installatiekopieën en een uitleg over mislukte evaluaties als u op zoek bent naar uitzonderingen.

Selecteer tot slot Rapport genereren om de testresultaten en logboekbestanden te downloaden voor de uitgevoerde testcases, samen met uw antwoorden op de vragenlijst.

Notitie

Weinig uitgevers hebben scenario's waarin VM's moeten worden vergrendeld omdat ze software hebben, zoals firewalls die op de VIRTUELE machine zijn geïnstalleerd. In dit geval downloadt u het gecertificeerde testhulpprogramma hier en dient u het rapport in bij de ondersteuning van het Partnercentrum.

PowerShell gebruiken om de selftest-API te gebruiken

In Linux-besturingssysteem

Roep de API aan in PowerShell:

  1. Genereer het toegangstoken.
  2. Gebruik de opdracht Invoke-WebRequest om de API aan te roepen.
  3. De methode is Post en inhoudstype is JSON, zoals wordt weergegeven in het volgende codevoorbeeld en schermopname.
  4. Geef de hoofdtekstparameters op in JSON-indeling.

Met de volgende opdrachten wordt een toegangstoken gegenereerd:

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Type", "application/x-www-form-urlencoded")
$body = "grant_type=client_credentials&client_id=$clientId&client_secret=$clientSecret&resource=https%3A%2F%2Fmanagement.core.windows.net"
$response = Invoke-RestMethod "https://login.microsoftonline.com/$tenantId/oauth2/token" -Method 'POST' -Headers $headers -Body $body
$accessToken = $response.access_token

Toont een schermvoorbeeld voor het genereren van een toegangstoken in PowerShell.

In dit voorbeeld ziet u een PowerShell-aanroep naar de API (poort 22 toestaan tijdens het maken van de VM):

$accesstoken = "token"
$headers = @{ "Authorization" = "Bearer $accesstoken" }
$DNSName = "<Machine DNS Name>"
$UserName = "<User ID>"
$Password = "<Password>"
$OS = "Linux"
$PortNo = "22"
$CompanyName = "ABCD"
$AppId = "<Application ID>"
$TenantId = "<Tenant ID>"

$body = @{
   "DNSName" = $DNSName
   "UserName" = $UserName
   "Password" = $Password
   "OS" = $OS
   "PortNo" = $PortNo
   "CompanyName" = $CompanyName
   "AppId" = $AppId
   "TenantId" = $TenantId
} | ConvertTo-Json

$body

$uri = "https://isvapp.azurewebsites.net/selftest-vm"

$res = (Invoke-WebRequest -Method "Post" -Uri $uri -Body $body -ContentType "application/json" -Headers $headers).Content


Hier volgt een voorbeeld van het aanroepen van de API in PowerShell:

Schermvoorbeeld voor het aanroepen van de API in PowerShell.


Met behulp van het vorige voorbeeld kunt u de JSON ophalen en parseren om de volgende details op te halen:

$resVar = $res | ConvertFrom-Json
$actualresult = $resVar.Response | ConvertFrom-Json

Write-Host "OSName: $($actualresult.OSName)"
Write-Host "OSVersion: $($actualresult.OSVersion)"
Write-Host "Overall Test Result: $($actualresult.TestResult)"

For ($i = 0; $i -lt $actualresult.Tests.Length; $i++) {
   Write-Host "TestID: $($actualresult.Tests[$i].TestID)"
   Write-Host "TestCaseName: $($actualresult.Tests[$i].TestCaseName)"
   Write-Host "Description: $($actualresult.Tests[$i].Description)"
   Write-Host "Result: $($actualresult.Tests[$i].Result)"
   Write-Host "ActualValue: $($actualresult.Tests[$i].ActualValue)"
}


Dit voorbeeldscherm toont $res.Contentdetails van uw testresultaten in JSON-indeling:

Schermvoorbeeld voor het aanroepen van de API in PowerShell met details van testresultaten.


Hier volgt een voorbeeld van JSON-testresultaten die worden weergegeven in een online JSON-viewer (zoals Code Beautify of JSON Viewer).

Meer testresultaten in een online JSON-viewer.

Op het Windows-besturingssysteem

Roep de API aan in PowerShell:

  1. Gebruik de opdracht Invoke-WebRequest om de API aan te roepen.
  2. De methode is Post en inhoudstype is JSON, zoals wordt weergegeven in het volgende codevoorbeeld en voorbeeldscherm.
  3. Maak de hoofdtekstparameters in JSON-indeling.

In dit codevoorbeeld ziet u een PowerShell-aanroep naar de API (poort 5986 toestaan tijdens het maken van de VM):

$accesstoken = "Get token for your Client AAD App"
$headers = @{ "Authorization" = "Bearer $accesstoken" }
$Body = @{ 
   "DNSName" = "XXXX.westus.cloudapp.azure.com"
   "UserName" = "XXX"
   "Password" = "XXX@123456"
   "OS" = "Windows"
   "PortNo" = "5986"
   "CompanyName" = "ABCD"
   "AppId" = "XXXX-XXXX-XXXX"
   "TenantId" = "XXXX-XXXX-XXXX"
} | ConvertTo-Json

$res = Invoke-WebRequest -Method "Post" -Uri $uri -Body $Body -ContentType "application/json" –Headers $headers;
$Content = $res | ConvertFrom-Json

In deze voorbeeldschermen ziet u voorbeelden voor het aanroepen van de API in PowerShell:

Met SSH-sleutel:

De API aanroepen in PowerShell met een SSH-sleutel.

Met wachtwoord:

De API aanroepen in PowerShell met een wachtwoord.


Met behulp van het vorige voorbeeld kunt u de JSON ophalen en parseren om de volgende details op te halen:

$resVar = $res | ConvertFrom-Json
$actualresult = $resVar.Response | ConvertFrom-Json

Write-Host "OSName: $($actualresult.OSName)"
Write-Host "OSVersion: $($actualresult.OSVersion)"
Write-Host "Overall Test Result: $($actualresult.TestResult)"

For ($i = 0; $i -lt $actualresult.Tests.Length; $i++) {
   Write-Host "TestID: $($actualresult.Tests[$i].TestID)"
   Write-Host "TestCaseName: $($actualresult.Tests[$i].TestCaseName)"
   Write-Host "Description: $($actualresult.Tests[$i].Description)"
   Write-Host "Result: $($actualresult.Tests[$i].Result)"
   Write-Host "ActualValue: $($actualresult.Tests[$i].ActualValue)"
}


In dit scherm, waarin de details van uw testresultaten in JSON-indeling worden weergegeven $res.Content:

Details van testresultaten in JSON-indeling.


Hier volgt een voorbeeld van testresultaten die worden weergegeven in een online JSON-viewer (zoals Code Beautify of JSON Viewer).

Testresultaten in een online JSON-viewer.

CURL gebruiken om de selftest-API op het Linux-besturingssysteem te gebruiken

In dit voorbeeld wordt curl gebruikt om een POST API-aanroep naar Microsoft Entra-id en de self-host-VM te maken.

  1. Een Microsoft Entra-token aanvragen om te verifiëren bij een zelf-host-VM

    Zorg ervoor dat de juiste waarden worden vervangen in de curl-aanvraag.

    curl --location --request POST 'https://login.microsoftonline.com/{TENANT_ID}/oauth2/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'grant_type=client_credentials' \
    --data-urlencode 'client_id={CLIENT_ID} ' \
    --data-urlencode 'client_secret={CLIENT_SECRET}' \
    --data-urlencode 'resource=https://management.core.windows.net'
    

    Hier volgt een voorbeeld van het antwoord van de aanvraag:

    {
        "token_type": "Bearer",
        "expires_in": "86399",
        "ext_expires_in": "86399",
        "expires_on": "1599663998",
        "not_before": "1599577298",
        "resource": "https://management.core.windows.net",
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJS…"
    }
    
  2. Een aanvraag indienen voor de zelftest-VM

    Zorg ervoor dat het Bearer-token en de parameters worden vervangen door de juiste waarden.

    curl --location --request POST 'https://isvapp.azurewebsites.net/selftest-vm' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJS…' \
    --data-raw '{
        "DNSName": "avvm1.eastus.cloudapp.azure.com",
        "UserName": "azureuser",
        "Password": "SECURE_PASSWORD_FOR_THE_SSH_INTO_VM",
        "OS": "Linux",
        "PortNo": "22",
        "CompanyName": "COMPANY_NAME",
        "AppId": "CLIENT_ID_SAME_AS_USED_FOR_AAD_TOKEN ",
        "TenantId": "TENANT_ID_SAME_AS_USED_FOR_AAD_TOKEN"
    }'
    

    Voorbeeldantwoord van de selftest-VM-API-aanroep:

    {
        "TrackingId": "9bffc887-dd1d-40dd-a8a2-34cee4f4c4c3",
        "Response": "{\"SchemaVersion\":1,\"AppCertificationCategory\":\"Microsoft Single VM Certification\",\"ProviderID\":\"050DE427-2A99-46D4-817C-5354D3BF2AE8\",\"OSName\":\"Ubuntu 18.04\",\"OSDistro\":\"Ubuntu 18.04.5 LTS\",\"KernelVersion\":\"5.4.0-1023-azure\",\"KernelFullVersion\":\"Linux version 5.4.0-1023-azure (buildd@lgw01-amd64-053) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #23~18.04.1-Ubuntu SMP Thu Aug 20 14:46:48 UTC 2020\\n\",\"OSVersion\":\"18.04\",\"CreatedDate\":\"09/08/2020 01:13:47\",\"TestResult\":\"Pass\",\"APIVersion\":\"1.5\",\"Tests\":[{\"TestID\":\"48\",\"TestCaseName\":\"Bash History\",\"Description\":\"Bash history files should be cleared before creating the VM image.\",\"Result\":\"Passed\",\"ActualValue\":\"No file Exist\",\"RequiredValue\":\"1024\"},{\"TestID\":\"39\",\"TestCaseName\":\"Linux Agent Version\",\"Description\":\"Azure Linux Agent Version 2.2.41 and above should be installed.\",\"Result\":\"Passed\",\"ActualValue\":\"2.2.49\",\"RequiredValue\":\"2.2.41\"},{\"TestID\":\"40\",\"TestCaseName\":\"Required Kernel Parameters\",\"Description\":\"Verifies the following kernel parameters are set console=ttyS0, earlyprintk=ttyS0, rootdelay=300\",\"Result\":\"Warning\",\"ActualValue\":\"Missing Parameter: rootdelay=300\\r\\nMatched Parameter: console=ttyS0,earlyprintk=ttyS0\",\"RequiredValue\":\"console=ttyS0#earlyprintk=ttyS0#rootdelay=300\"},{\"TestID\":\"41\",\"TestCaseName\":\"Swap Partition on OS Disk\",\"Description\":\"Verifies that no Swap partitions are created on the OS disk.\",\"Result\":\"Passed\",\"ActualValue\":\"No. of Swap Partitions: 0\",\"RequiredValue\":\"swap\"},{\"TestID\":\"42\",\"TestCaseName\":\"Root Partition on OS Disk\",\"Description\":\"It is recommended that a single root partition is created for the OS disk.\",\"Result\":\"Passed\",\"ActualValue\":\"Root Partition: 1\",\"RequiredValue\":\"1\"},{\"TestID\":\"44\",\"TestCaseName\":\"OpenSSL Version\",\"Description\":\"OpenSSL Version should be >=0.9.8.\",\"Result\":\"Passed\",\"ActualValue\":\"1.1.1\",\"RequiredValue\":\"0.9.8\"},{\"TestID\":\"45\",\"TestCaseName\":\"Python Version\",\"Description\":\"Python version 2.6+ is highly recommended. \",\"Result\":\"Passed\",\"ActualValue\":\"2.7.17\",\"RequiredValue\":\"2.6\"},{\"TestID\":\"46\",\"TestCaseName\":\"Client Alive Interval\",\"Description\":\"It is recommended to set ClientAliveInterval to 180. On the application need, it can be set between 30 to 235. \\nIf you are enabling the SSH for your end users this value must be set as explained.\",\"Result\":\"Warning\",\"ActualValue\":\"120\",\"RequiredValue\":\"ClientAliveInterval 180\"},{\"TestID\":\"49\",\"TestCaseName\":\"OS Architecture\",\"Description\":\"Only 64-bit operating system should be supported.\",\"Result\":\"Passed\",\"ActualValue\":\"x86_64\\n\",\"RequiredValue\":\"x86_64,amd64\"},{\"TestID\":\"50\",\"TestCaseName\":\"Security threats\",\"Description\":\"Identifies OS with recent high profile vulnerability that might need patching.  Ignore warning if system was patched as appropriate.\",\"Result\":\"Passed\",\"ActualValue\":\"Ubuntu 18.04\",\"RequiredValue\":\"OS impacted by GHOSTS\"},{\"TestID\":\"51\",\"TestCaseName\":\"Auto Update\",\"Description\":\"Identifies if Linux Agent Auto Update is enabled or not.\",\"Result\":\"Passed\",\"ActualValue\":\"# AutoUpdate.Enabled=y\\n\",\"RequiredValue\":\"Yes\"},{\"TestID\":\"52\",\"TestCaseName\":\"SACK Vulnerability patch verification\",\"Description\":\"Checks if the running Kernel Version has SACK vulnerability patch.\",\"Result\":\"Passed\",\"ActualValue\":\"Ubuntu 18.04.5 LTS,Linux version 5.4.0-1023-azure (buildd@lgw01-amd64-053) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #23~18.04.1-Ubuntu SMP Thu Aug 20 14:46:48 UTC 2020\",\"RequiredValue\":\"Yes\"}]}"
    }