A Terraform-projekteken végzett, végpontok közötti Terratest-tesztelés implementálása
A Terraform lehetővé teszi a felhőinfrastruktúra definícióját, előzetes verzióját és üzembe helyezését. A Terraform használatával konfigurációs fájlokat hozhat létre HCL-szintaxissal. A HCL szintaxissal megadhatja a felhőszolgáltatót – például az Azure-t – és a felhőinfrastruktúra elemeit. A konfigurációs fájlok létrehozása után létrehoz egy végrehajtási tervet , amely lehetővé teszi az infrastruktúra változásainak előzetes megtekintését az üzembe helyezés előtt. A módosítások ellenőrzése után alkalmazza a végrehajtási tervet az infrastruktúra üzembe helyezésére.
A teljes körű (E2E) teszteléssel ellenőrzik, hogy egy program működik-e, mielőtt éles környezetben üzembe helyeznénk. Példaforgatókönyv lehet egy Terraform-modul, amely két virtuális gépet helyez üzembe egy virtuális hálózaton. Előfordulhat, hogy meg szeretné akadályozni, hogy a két gép pingelje egymást. Ebben a példában meghatározhat egy tesztet, amely ellenőrzi a tervezett eredményt az üzembe helyezés előtt.
Az E2E-tesztelés általában háromlépéses folyamat.
- A rendszer konfigurációt alkalmaz egy tesztkörnyezetre.
- Az eredmények ellenőrzéséhez kód fut.
- A tesztkörnyezet újraincializálva vagy levéve (például egy virtuális gép felszabadítása) történik.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
1. A környezet konfigurálása
- Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
A Terraform konfigurálása: Ha még nem tette meg, konfigurálja a Terraformot az alábbi lehetőségek egyikével:
Go programozási nyelv: Telepítse a Go-t.
Példakód és erőforrások: A DownGit eszközzel töltse le a GitHubról a végpontok közötti tesztelési projektet , és bontsa ki egy új könyvtárba a példakódot. Ezt a könyvtárat nevezzük példakönyvtárnak.
2. A végpontok közötti tesztelés ismertetése
A teljes körű tesztek ellenőrzik, hogy a rendszer kollektív egészként működik-e. Ez a tesztelési típus nem egy adott modul tesztelése. A Terraform-projektek esetében a teljes körű tesztelés lehetővé teszi az üzembe helyezett feladatok ellenőrzését. Ez a tesztelési típus különbözik az üzembe helyezés előtti forgatókönyveket tesztelő számos más típustól. A végpontok közötti tesztek kritikus fontosságúak olyan összetett rendszerek teszteléséhez, amelyek több modult tartalmaznak, és több erőforráson működnek. Ilyen esetekben a végpontok közötti tesztelés az egyetlen módszer annak megállapítására, hogy a különböző modulok megfelelően működnek-e.
Ez a cikk a Terratest használatával valósítja meg a végpontok közötti tesztelést. A Terratest biztosítja az összes olyan vízvezetéket, amely a következő feladat elvégzéséhez szükséges:
- Terraform-konfiguráció üzembe helyezése
- Lehetővé teszi teszt írását a Go nyelv használatával az üzembe helyezett adatok ellenőrzéséhez
- A tesztek vezénylése szakaszokra
- Az üzembe helyezett infrastruktúra lebontása
3. A példa tesztelésének ismertetése
Ebben a cikkben az Azure/terraform mintaadattárban elérhető mintát használjuk.
Ez a minta egy Terraform-konfigurációt határoz meg, amely két Linux rendszerű virtuális gépet helyez üzembe ugyanazon a virtuális hálózaton. Egy virtuális gép – neve – vm-linux-1
nyilvános IP-címmel rendelkezik. Csak a 22-s port nyílik meg az SSH-kapcsolatok engedélyezéséhez. A második virtuális gép nem vm-linux-2
rendelkezik definiált nyilvános IP-címmel.
A teszt a következő forgatókönyveket ellenőrzi:
- Az infrastruktúra megfelelően van üzembe helyezve
- A 22-s port használatával SSH-munkamenetet nyithat meg a következőre:
vm-linux-1
- Az SSH-munkamenet
vm-linux-1
használatával pingelhetővm-linux-2
Ha letöltötte a mintát, az ehhez a forgatókönyvhöz tartozó Terraform-konfiguráció megtalálható a src/main.tf
fájlban. A main.tf
fájl mindent tartalmaz, ami az előző ábrán szereplő Azure-infrastruktúra üzembe helyezéséhez szükséges.
Ha nem tudja, hogyan hozhat létre virtuális gépet, olvassa el a Linux rendszerű virtuális gép azure-beli infrastruktúrával való létrehozását a Terraform használatával.
Figyelem
A cikkben bemutatott példaforgatókönyv csak illusztrációs célokra szolgál. Szándékosan egyszerűnek tartottuk a dolgokat, hogy a végpontok közötti teszt lépéseire összpontosítsunk. Nem javasoljuk olyan éles virtuális gépek használatát, amelyek nyilvános IP-címen keresztül teszik elérhetővé az SSH-portokat.
4. Vizsgálja meg a teszt példáját
A végpontok közötti teszt a Go nyelven van megírva, és a Terratest-keretrendszert használja. Ha letöltötte a mintát, a teszt a fájlban src/test/end2end_test.go
lesz definiálva.
Az alábbi forráskód a Terratest használatával végzett Golang-teszt szabványos szerkezetét mutatja be:
package test
import (
"testing"
"github.com/gruntwork-io/terratest/modules/terraform"
test_structure "github.com/gruntwork-io/terratest/modules/test-structure"
)
func TestEndToEndDeploymentScenario(t *testing.T) {
t.Parallel()
fixtureFolder := "../"
// Use Terratest to deploy the infrastructure
test_structure.RunTestStage(t, "setup", func() {
terraformOptions := &terraform.Options{
// Indicate the directory that contains the Terraform configuration to deploy
TerraformDir: fixtureFolder,
}
// Save options for later test stages
test_structure.SaveTerraformOptions(t, fixtureFolder, terraformOptions)
// Triggers the terraform init and terraform apply command
terraform.InitAndApply(t, terraformOptions)
})
test_structure.RunTestStage(t, "validate", func() {
// run validation checks here
terraformOptions := test_structure.LoadTerraformOptions(t, fixtureFolder)
publicIpAddress := terraform.Output(t, terraformOptions, "public_ip_address")
})
// When the test is completed, teardown the infrastructure by calling terraform destroy
test_structure.RunTestStage(t, "teardown", func() {
terraformOptions := test_structure.LoadTerraformOptions(t, fixtureFolder)
terraform.Destroy(t, terraformOptions)
})
}
Ahogy az előző kódrészletben látható, a teszt három szakaszból áll:
- beállítás: Futtatja a Terraformot a konfiguráció üzembe helyezéséhez
- ellenőrzés": Ellenőrzi az ellenőrzés és az állítások
- teardown: Megtisztítja az infrastruktúrát a teszt futtatása után
Az alábbi lista a Terratest-keretrendszer által biztosított főbb függvényeket mutatja be:
- terraform. InitAndApply: Engedélyezi a Go-kód futtatását
terraform init
ésterraform apply
futtatását - terraform. Kimenet: Lekéri az üzembehelyezési kimeneti változó értékét.
- terraform. Megsemmisítés: Futtatja a parancsot a
terraform destroy
Go-kódból. - test_structure. LoadTerraformOptions: A Terraform-beállítások – például konfiguráció és változók – betöltése az állapotból
- test_structure. SaveTerraformOptions: A Terraform-beállításokat – például konfigurációkat és változókat – menti az állapotba
5. Futtassa a teszt példáját
Az alábbi lépések a mintakonfiguráción és az üzembe helyezésen futtatják a tesztet.
Nyisson meg egy bash/terminálablakot.
Jelentkezzen be az Azure-fiókjába.
A mintateszt futtatásához szüksége van egy SSH titkos/nyilvános kulcspár nevére
id_rsa
ésid_rsa.pub
a kezdőkönyvtárban. Cserélje le<your_user_name>
a kezdőkönyvtár nevére.export TEST_SSH_KEY_PATH="~/.ssh/id_rsa"
A példakönyvtárban keresse meg a
src/test
könyvtárat.Futtassa a tesztet.
go test -v ./ -timeout 10m
6. Ellenőrizze az eredményeket
A sikeres futtatás go test
után az alábbi kimenethez hasonló eredmények láthatók:
--- PASS: TestEndToEndDeploymentScenario (390.99s)
PASS
ok test 391.052s
A Terraform hibaelhárítása az Azure-ban
A Terraform Azure-beli használatakor felmerülő gyakori problémák elhárítása
További lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: