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):
- Open de installatiekopieënversie van de Azure Compute Gallery.
- Selecteer Virtuele machine maken.
- Geef de naam van een virtuele machine op en selecteer een VM-grootte.
- 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:
- Een Azure-VM implementeren met behulp van uw gegeneraliseerde installatiekopieën; zie Een virtuele machine maken met behulp van een goedgekeurde basis of een virtuele machine maken met behulp van uw eigen installatiekopieën.
- Voer validaties uit.
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.
- Download en installeer het meest recente certificeringstestprogramma voor Azure Certified.
- Open het certificeringsprogramma en selecteer Vervolgens Nieuwe test starten.
- Voer in het scherm Testgegevens een testnaam in voor de testuitvoering.
- 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.
- 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
Selecteer de SSH-verificatiemodus: Wachtwoordverificatie of sleutelbestandsverificatie.
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.
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.
Voer de fully qualified VM DNS-naam in (bijvoorbeeld MyVMName.Cloudapp.net).
Voer gebruikersnaam en wachtwoord in.
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:
- Genereer het toegangstoken.
- Gebruik de opdracht Invoke-WebRequest om de API aan te roepen.
- De methode is Post en inhoudstype is JSON, zoals wordt weergegeven in het volgende codevoorbeeld en schermopname.
- 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
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:
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.Content
details van uw testresultaten in JSON-indeling:
Hier volgt een voorbeeld van JSON-testresultaten die worden weergegeven in een online JSON-viewer (zoals Code Beautify of JSON Viewer).
Op het Windows-besturingssysteem
Roep de API aan in PowerShell:
- Gebruik de opdracht Invoke-WebRequest om de API aan te roepen.
- De methode is Post en inhoudstype is JSON, zoals wordt weergegeven in het volgende codevoorbeeld en voorbeeldscherm.
- 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:
Met 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
:
Hier volgt een voorbeeld van testresultaten die worden weergegeven in een online JSON-viewer (zoals Code Beautify of 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.
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…" }
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\"}]}" }
Gerelateerde inhoud
- Meld u aan bij Partnercentrum.