Testování image virtuálního počítače
Tento článek popisuje, jak otestovat image virtuálního počítače, aby se zajistilo, že splňuje nejnovější požadavky na publikování na Azure Marketplace.
Nasazení virtuálního počítače Azure
Nasazení virtuálního počítače z galerie výpočetních prostředků Azure (dříve označované jako Galerie sdílených imagí):
- Otevřete verzi image Galerie výpočetních prostředků Azure.
- Vyberte Vytvořit virtuální počítač.
- Zadejte název virtuálního počítače a vyberte velikost virtuálního počítače.
- Vyberte Zkontrolovat a vytvořit. Po úspěšném ověření vyberte Vytvořit.
Poznámka:
Pokud chcete vytvořit virtuální počítač ze souboru virtuálního pevného disku, postupujte podle pokynů níže v části Připojení certifikačního nástroje k imagi virtuálního počítače nebo pomocí PowerShellu pro využívání rozhraní API pro samotestování.
Před odesláním nabídky virtuálního počítače proveďte tyto kroky:
- Nasazení virtuálního počítače Azure pomocí zobecněné image; Viz Vytvoření virtuálního počítače pomocí schválené základny nebo vytvoření virtuálního počítače pomocí vlastní image.
- Spusťte ověření.
Spuštění ověření
Na nasazené imagi můžete spouštět ověřování dvěma způsoby.
Použití nástroje Pro testování certifikace pro Azure Certified
Důležité
Aby bylo možné spustit nástroj pro testování certifikace, musí být služba Vzdálená správa systému Windows spuštěná a nakonfigurovaná ve Windows. To umožňuje přístup k portu 5986. Informace naleznete v tématu Instalace a konfigurace pro vzdálenou správu systému Windows.
Stažení a spuštění nástroje pro testování certifikace
Nástroj Pro certifikační test pro Azure Certified běží na místním počítači s Windows, ale testuje virtuální počítač s Windows nebo Linuxem založený na Azure. Potvrzuje, že image vašeho uživatelského virtuálního počítače je možné použít s Microsoft Azure a že byly splněny pokyny a požadavky týkající se přípravy virtuálního pevného disku.
- Stáhněte a nainstalujte nejnovější nástroj pro testování certifikace pro Azure Certified.
- Otevřete nástroj pro certifikaci a pak vyberte Spustit nový test.
- Na obrazovce Informace o testu zadejte název testu pro testovací běh.
- Vyberte platformu pro virtuální počítač– Windows Server (povolte port 5986 pro Windows) nebo Linux (povolte port 22 pro Linux). Vaše volba platformy ovlivňuje zbývající možnosti.
- Pokud váš virtuální počítač používá tuto databázovou službu, zaškrtněte políčko Test pro Azure SQL Database .
Připojení nástroje pro certifikaci k imagi virtuálního počítače
Vyberte režim ověřování SSH: Ověřování heslem nebo Ověřování souborů klíčů.
Pokud používáte ověřování založené na heslech, zadejte hodnoty pro název DNS virtuálního počítače, uživatelské jméno a heslo. Můžete také změnit výchozí číslo portu SSH.
Pokud používáte ověřování založené na souborech klíčů, zadejte hodnoty pro název DNS virtuálního počítače, uživatelské jméno a umístění privátního klíče. Můžete také zahrnout heslo nebo změnit výchozí číslo portu SSH.
Zadejte plně kvalifikovaný název DNS virtuálního počítače (například MyVMName.Cloudapp.net).
Zadejte uživatelské jméno a heslo.
Vyberte Další.
Spuštění testu certifikace
Po zadání hodnot parametrů pro image virtuálního počítače v nástroji pro certifikaci vyberte testovací připojení a vytvořte platné připojení k virtuálnímu počítači. Po ověření připojení vyberte Další a spusťte test. Po dokončení testu se výsledky zobrazí v tabulce. Sloupec Status (Pass/Fail/Warning) pro každý test. Pokud některý z testů selže, image není certifikovaná. V tomto případě zkontrolujte požadavky a zprávy o selhání, proveďte navrhované změny a spusťte test znovu.
Po dokončení automatizovaného testu zadejte další informace o imagi virtuálního počítače na dvou kartách na obrazovce dotazníku, Obecné posouzení a přizpůsobení jádra a pak vyberte Další.
Na poslední obrazovce můžete zadat další informace, například informace o přístupu SSH k imagi virtuálního počítače s Linuxem, a vysvětlení všech neúspěšných posouzení, pokud hledáte výjimky.
Nakonec výběrem možnosti Generovat sestavu stáhněte výsledky testů a soubory protokolu pro spuštěné testovací případy spolu s odpověďmi na dotazník.
Poznámka:
Několik vydavatelů má scénáře, kdy je potřeba virtuální počítače uzamknout, protože mají software, jako jsou brány firewall nainstalované na virtuálním počítači. V takovém případě si stáhněte certifikovaný testovací nástroj a odešlete sestavu na podporu Partnerského centra.
Použití PowerShellu k využití rozhraní API pro samoobslužné testování
V operačním systému Linux
Volání rozhraní API v PowerShellu:
- Vygenerujte přístupový token.
- K volání rozhraní API použijte příkaz Invoke-WebRequest.
- Metoda je Post a typ obsahu je JSON, jak je znázorněno v následujícím příkladu kódu a zachycení obrazovky.
- Zadejte základní parametry ve formátu JSON.
Následující příkazy generují přístupový token:
$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
Tento příklad ukazuje volání PowerShellu do rozhraní API (povolení portu 22 během vytváření virtuálního počítače):
$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
Tady je příklad volání rozhraní API v PowerShellu:
Pomocí předchozího příkladu můžete načíst JSON a parsovat ho a získat následující podrobnosti:
$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)"
}
Tato ukázková obrazovka, která ukazuje $res.Content
podrobnosti o výsledcích testu ve formátu JSON:
Tady je příklad výsledků testů JSON zobrazených v online prohlížeči JSON (například Kód Beautify nebo Prohlížeč JSON).
V operačním systému Windows
Volání rozhraní API v PowerShellu:
- K volání rozhraní API použijte příkaz Invoke-WebRequest.
- Metoda je Post a typ obsahu je JSON, jak je znázorněno v následujícím příkladu kódu a ukázkové obrazovce.
- Vytvořte základní parametry ve formátu JSON.
Tento ukázkový kód ukazuje volání PowerShellu do rozhraní API (povolení portu 5986 během vytváření virtuálního počítače):
$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
Tyto ukázkové obrazovky ukazují příklady volání rozhraní API v PowerShellu:
S klíčem SSH:
S heslem:
Pomocí předchozího příkladu můžete načíst JSON a parsovat ho a získat následující podrobnosti:
$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)"
}
Na této obrazovce se zobrazí $res.Content
podrobnosti o výsledcích testu ve formátu JSON:
Tady je příklad výsledků testů zobrazených v online prohlížeči JSON (například v kódu Beautify nebo prohlížeči JSON).
Využití rozhraní API pro samoobslužné testování v operačním systému Linux pomocí nástroje CURL
V tomto příkladu se curl použije k volání rozhraní POST API na ID Microsoft Entra a k virtuálnímu počítači s vlastním hostitelem.
Žádost o token Microsoft Entra k ověření na virtuálním počítači s vlastním hostitelem
Ujistěte se, že jsou v požadavku curl nahrazeny správné hodnoty.
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'
Tady je příklad odpovědi z požadavku:
{ "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…" }
Odeslání žádosti o virtuální počítač s vlastním testem
Ujistěte se, že nosný token a parametry jsou nahrazeny správnými hodnotami.
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říklad odpovědi z volání rozhraní API pro samoobslužné testování virtuálního počítače:
{ "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\"}]}" }
Související obsah
- Přihlaste se k Partnerskému centru.