Megosztás a következőn keresztül:


Virtuálisgép-rendszerkép tesztelése

Ez a cikk azt ismerteti, hogyan tesztelhet virtuálisgép-rendszerképeket annak biztosítása érdekében, hogy megfeleljen a legújabb Azure Marketplace-közzétételi követelményeknek.

Azure-beli virtuális gép üzembe helyezése

Virtuális gép üzembe helyezése az Azure Compute Galleryből (korábban megosztott képtárként ismert) rendszerképből:

  1. Nyissa meg az Azure Compute Gallery rendszerképének verzióját.
  2. Válassza a Virtuális gép létrehozása lehetőséget.
  3. Adjon meg egy virtuálisgép-nevet, és válasszon egy virtuálisgép-méretet.
  4. Válassza az Áttekintés + létrehozás lehetőséget. Az ellenőrzés sikeres befejezése után válassza a Létrehozás lehetőséget.

Feljegyzés

Ha vhd-fájlból szeretne virtuális gépet létrehozni, kövesse az alábbi utasításokat: A minősítő eszköz csatlakoztatása virtuálisgép-rendszerképhez vagy a PowerShell használata az Öntesztelési API használatához.

A virtuálisgép-ajánlat elküldése előtt hajtsa végre az alábbi lépéseket:

Érvényesítések futtatása

Az érvényesítések kétféleképpen futtathatók az üzembe helyezett lemezképen.

Az Azure Certified tanúsítványtesztelési eszközének használata

Fontos

A minősítési teszteszköz futtatásához a Windows távfelügyeleti szolgáltatásnak Windows rendszeren kell futnia és konfigurálnia. Ez lehetővé teszi az 5986-os port elérését. További információ: Telepítés és konfiguráció a Windows távfelügyelethez.

A minősítési teszt eszköz letöltése és futtatása

Az Azure Certified minősítési teszteszköze egy helyi Windows-gépen fut, de egy Azure-alapú Windows- vagy Linux rendszerű virtuális gépet tesztel. Igazolja, hogy a felhasználói virtuálisgép-rendszerkép használható a Microsoft Azure-ral, és hogy a virtuális merevlemez előkészítésével kapcsolatos útmutatás és követelmények teljesültek.

  1. Töltse le és telepítse az Azure Certified legújabb minősítési teszteszközét.
  2. Nyissa meg a minősítési eszközt, majd válassza az Új teszt indítása lehetőséget.
  3. A Tesztadatok képernyőn adja meg a tesztfuttatás tesztnevét .
  4. Válassza ki a virtuális gép platformját a Windows Server (windowsos 5986-os port engedélyezése) vagy a Linux (linuxos 22-s port engedélyezése) lehetőséget. A platform választása hatással van a fennmaradó lehetőségekre.
  5. Ha a virtuális gép ezt az adatbázis-szolgáltatást használja, jelölje be az Azure SQL Database tesztelése jelölőnégyzetet.

A minősítő eszköz csatlakoztatása virtuálisgép-rendszerképhez

  1. Válassza ki az SSH-hitelesítési módot: Jelszó-hitelesítés vagy kulcsfájl-hitelesítés.

  2. Ha jelszóalapú hitelesítést használ, adja meg a virtuális gép DNS-ének nevét, felhasználónevét és jelszavát. Az alapértelmezett SSH-portszámot is módosíthatja.

    Megjeleníti a virtuálisgép-tesztinformációk kiválasztását.

  3. Kulcsalapú hitelesítés esetén adja meg a virtuális gép DNS-ének nevét, a felhasználónevet és a titkos kulcs helyét. Megadhat egy jelszót is, vagy módosíthatja az alapértelmezett SSH-portszámot.

  4. Adja meg a teljes virtuálisgép-DNS-nevet (például MyVMName.Cloudapp.net).

  5. Adja meg a felhasználónevet és a jelszót.

    Megjeleníti a virtuális gép felhasználónevének és jelszavának kiválasztását.

  6. Válassza a Tovább lehetőséget.

Minősítési teszt futtatása

Miután megadta a virtuálisgép-rendszerkép paraméterértékeit a minősítő eszközben, válassza a Kapcsolat tesztelése lehetőséget, hogy érvényes kapcsolatot hozzon létre a virtuális géppel. A kapcsolat ellenőrzése után válassza a Tovább gombot a teszt elindításához. Ha a teszt befejeződött, az eredmények egy táblázatban jelennek meg. Az Állapot oszlop az egyes tesztekhez (Pass/Fail/Warning) jelenik meg. Ha bármelyik teszt sikertelen, a rendszerkép nincs hitelesítve. Ebben az esetben tekintse át a követelményeket és a hibaüzeneteket, végezze el a javasolt módosításokat, és futtassa újra a tesztet.

Miután az automatizált teszt befejeződött, adjon meg további információkat a virtuálisgép-rendszerképről a Kérdőív képernyő két lapján, az Általános értékelés és a Kernel testreszabása lapon, majd válassza a Tovább gombot.

Az utolsó képernyőn további információkat adhat meg, például egy Linux rendszerű virtuálisgép-rendszerkép SSH-hozzáférési információit, valamint a sikertelen értékelések magyarázatát, ha kivételeket keres.

Végül válassza a Jelentés létrehozása lehetőséget a végrehajtott tesztesetek teszteredményeinek és naplófájljainak letöltéséhez, valamint a kérdőívre adott válaszok letöltéséhez.

Feljegyzés

Kevés közzétevő rendelkezik olyan forgatókönyvekkel, amelyekben a virtuális gépeket zárolni kell, mivel a virtuális gépen telepítve vannak szoftverek, például tűzfalak. Ebben az esetben töltse le ide a Minősített teszt eszközt , és küldje el a jelentést a Partnerközpont ügyfélszolgálatánál.

Az Öntesztelési API használata a PowerShell használatával

Linux operációs rendszeren

Az API meghívása a PowerShellben:

  1. Hozza létre a hozzáférési jogkivonatot.
  2. Az API meghívásához használja az Invoke-WebRequest parancsot.
  3. A módszer a Post és a tartalomtípus JSON, ahogy az alábbi kód példában és a képernyőfelvételben is látható.
  4. Adja meg a törzs paramétereit JSON formátumban.

A következő parancsok létrehoznak egy hozzáférési jogkivonatot:

$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

Egy példa a hozzáférési jogkivonat PowerShellben való létrehozására.

Ez a példa egy PowerShell-hívást mutat be az API-nak (engedélyezze a 22-es portot a virtuális gép létrehozása során):

$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


Íme egy példa az API meghívására a PowerShellben:

Példa az API meghívására a PowerShellben.


Az előző példában lekérheti a JSON-t, és elemezheti a következő részleteket:

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


Ez a mintaképernyő, amely jSON formátumban jeleníti meg $res.Contenta teszteredmények részleteit:

Példa a PowerShell API-jának meghívására a teszteredmények részleteivel.


Íme egy példa egy online JSON-megjelenítőben (például Code Beautify vagy JSON Viewer) megtekintett JSON-teszteredményre.

További teszteredmények egy online JSON-megjelenítőben.

Windows operációs rendszeren

Az API meghívása a PowerShellben:

  1. Az API meghívásához használja az Invoke-WebRequest parancsot.
  2. A metódus a Post és a tartalomtípus JSON, ahogy az a következő kód példájában és a mintaképernyőn is látható.
  3. Hozza létre a törzsparamétereket JSON formátumban.

Ez a kódminta egy PowerShell-hívást jelenít meg az API-hoz (engedélyezze az 5986-os portot a virtuális gép létrehozása során):

$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

Ezek a mintaképernyők példákat mutatnak az API meghívására a PowerShellben:

SSH-kulccsal:

Az API meghívása a PowerShellben egy SSH-kulccsal.

Jelszóval:

Az API meghívása a PowerShellben jelszóval.


Az előző példában lekérheti a JSON-t, és elemezheti a következő részleteket:

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


Ez a képernyő, amely megjeleníti $res.Contenta teszteredmények részleteit JSON formátumban:

A teszteredmények részletei JSON formátumban.


Íme egy példa egy online JSON-megjelenítőben (például Code Beautify vagy JSON Viewer) megtekintett teszteredményre.

Teszteredmények online JSON-megjelenítőben.

A CURL használata Az Önteszt API használata Linux operációs rendszeren

Ebben a példában a curl használatával post API-hívást indítunk a Microsoft Entra-azonosítóhoz és az önkiszolgáló virtuális géphez.

  1. Microsoft Entra-jogkivonat kérése saját üzemeltetésű virtuális gép hitelesítéséhez

    Győződjön meg arról, hogy a curl-kérelem a megfelelő értékeket helyettesíti.

    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'
    

    Íme egy példa a kérés válaszára:

    {
        "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. Az öntesztelt virtuális gépre vonatkozó kérés elküldése

    Győződjön meg arról, hogy a Tulajdonos jogkivonata és paraméterei a megfelelő értékekkel vannak helyettesítve.

    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"
    }'
    

    Példaválasz az öntesztelt virtuálisgép-API-hívásból:

    {
        "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\"}]}"
    }
    

Következő lépések