Yekuyedza Infrastructure seCode nePulumi. Chikamu 2

Mhoroi mose. Nhasi tinogoverana newe chikamu chekupedzisira chechinyorwa. "Kuyedza Infrastructure seCode nePulumi", shanduro yacho yakanyatsogadzirirwa vadzidzi vekosi "DevOps maitiro uye maturusi".

Yekuyedza Infrastructure seCode nePulumi. Chikamu 2

Deployment test

Iyi nzira yekuyedza inzira ine simba uye inotitendera kuti tiite chena bhokisi bvunzo kuyedza kushanda kwemukati kwekodhi yedu yezvivakwa. Nekudaro, zvinoganhurira izvo zvatinogona kuyedza. Miedzo inoitwa zvichienderana ne-in-memory deployment plan yakagadzirwa naPulumi isati yasvika chaiyo uye naizvozvo kutumirwa pachayo hakugoni kuongororwa. Kune akadai, Pulumi ine yekubatanidza bvunzo chimiro. Uye nzira mbiri idzi dzinoshanda pamwe chete!

Iyo Pulumi yekubatanidza yekuyedza chimiro yakanyorwa muGo, ndiyo nzira yatinoedza nayo yakawanda yemukati kodhi yedu. Nepo iyo yakambokurukurwa yeyuniti yekuyedza nzira yaive yakafanana nechena bhokisi kuyedzwa, yekubatanidza bvunzo ibhokisi dema. (Kunewo zvingasarudzwa zvekuongorora kwemukati kwakasimba.) Ichi chinyorwa chakagadzirwa kuti chitore chirongwa chePulumi chakakwana uye kuita mabasa akasiyana-siyana ehupenyu pairi, zvakadai sekuendesa stack itsva kubva pakutanga, kuigadzirisa nekusiyana, nekuibvisa, zvichida kakawanda. . Isu tinoamhanyisa nguva nenguva (semuenzaniso, husiku) uye seyedzo yekushushikana.

(Isu tiri kushanda pazviri, kuitira kuti hunyanzvi hwekuyedza hwekubatanidza huwanikwe muSDK yemitauro. Iwe unogona kushandisa Go integration test framework pasinei nemutauro wakanyorwa purogiramu yako yePulumi).

Nekumhanyisa chirongwa uchishandisa iyi chimiro unogona kutarisa zvinotevera:

  • Yako purojekiti kodhi ndeye syntactically uye inomhanya isina zvikanganiso.
  • Iyo stack uye zvakavanzika zvigadziriso zvigadziriso zvinoshanda uye zvinodudzirwa nemazvo.
  • Yako purojekiti inogona kuendeswa zvinobudirira mune yegore mupi wesarudzo yako.
  • purojekiti yako inogona kubudirira kukwidziridzwa kubva kune yekutanga nyika kuenda kuN dzimwe nyika.
  • Yako purojekiti inogona kuparadzwa zvakabudirira uye kubviswa kubva kune wako wekupa gore.

Sezvatichaona munguva pfupi, chimiro ichi chinogona zvakare kushandiswa kuita runtime yekusimbisa.

Nyore yekubatanidza bvunzo

Kuona izvi zvichiitwa, isu tinotarisa kune repository pulumi/examples, sechikwata chedu uye nharaunda yePulumi inoshandisa iyo kuyedza yedu yekudhonza zvikumbiro, kuita, uye nehusiku kuvaka.

Pazasi pane bvunzo yakareruka yedu muenzaniso unopa S3 bhaketi uye zvimwe zvinhu:

example_test.go:

package test
 
import (
    "os"
    "path"
    "testing"
 
    "github.com/pulumi/pulumi/pkg/testing/integration"
)
 
func TestExamples(t *testing.T) {
    awsRegion := os.Getenv("AWS_REGION")
    if awsRegion == "" {
        awsRegion = "us-west-1"
    }
    cwd, _ := os.Getwd()
    integration.ProgramTest(t, &integration.ProgramTestOptions{
        Quick:       true,
        SkipRefresh: true,
        Dir:         path.Join(cwd, "..", "..", "aws-js-s3-folder"),
        Config: map[string]string{
            "aws:region": awsRegion,
        },
    })
}

Muedzo uyu unoenda kuburikidza nehupenyu hwekutanga hwekugadzira, kugadzirisa, uye kuparadza stack yefolda aws-js-s3-folder. Zvinotora ingangoita miniti kushuma bvunzo yakapfuura:

$ go test .
PASS
ok      ... 43.993s

Pane zvakawanda zvingasarudzwa zvekugadzirisa maitiro ezviedzo izvi. Ona runyorwa ruzere rwezvasarudzo. muchimiro ProgramTestOptions. Semuenzaniso, unogona kumisikidza Jaeger endpoint yekutevera (Tracing), ratidza kuti unotarisira kuti bvunzo yacho ichakundikana kana bvunzo isina kunaka (ExpectFailure), shandisa nhevedzano ye "edits" kuchirongwa cheshanduko inoteedzana yematunhu (EditDirs) nezvimwe zvakawanda. Ngatione kuti tingazvishandisa sei kuyedza kutumira kwako application.

Kuongorora zviwanikwa

Kubatanidzwa kwakurukurwa pamusoro kunovimbisa kuti chirongwa chedu "chinoshanda" -hachiputsi. Asi ko kana isu tichida kutarisa zvimiro zveyakaguma stack? Semuenzaniso, kuti mamwe marudzi ezviwanikwa ane (kana haana) akapihwa uye kuti ane humwe hunhu.

Parameter ExtraRuntimeValidation nokuti ProgramTestOptions inotibvumira kutarisa mamiriro ekutumira-post-deployment yakanyorwa naPulumi kuitira kuti tikwanise kuita mamwe macheki. Izvi zvinosanganisira mufananidzo wakakwana wemamiriro ezvirongwa zvabuda, kusanganisira kugadziridzwa, kuburitswa kwemitengo yekunze, zviwanikwa zvese uye hutsika hwezvivakwa, uye zvese zvinoenderana pakati pezviwanikwa.

Kuti uone muenzaniso wekutanga weizvi, ngatitarisei kuti chirongwa chedu chinogadzira imwe S3 Bucket:

  integration.ProgramTest(t, &integration.ProgramTestOptions{
        // as before...
        ExtraRuntimeValidation: func(t *testing.T, stack integration.RuntimeValidationStackInfo) {
            var foundBuckets int
            for _, res := range stack.Deployment.Resources {
                if res.Type == "aws:s3/bucket:Bucket" {
                    foundBuckets++
                }
            }
            assert.Equal(t, 1, foundBuckets, "Expected to find a single AWS S3 Bucket")
        },
    })

Zvino, kana isu tichimhanya go bvunzo, haizongopfuura nebhatiri rehupenyu bvunzo, asi zvakare, mushure mekubudirira kuendesa stack, ichaita yekuwedzera cheki pane inoguma mamiriro.

Runtime tests

Parizvino, bvunzo dzese dzanga dziri nezve maitiro ekutumira uye iyo Pulumi sosi modhi. Ko kana iwe uchida kuonesa kuti hurongwa hwako hwakapihwa hunoshanda here? Semuenzaniso, iyo chaiyo muchina uri kushanda, iyo S3 bhaketi rine zvatinotarisira, zvichingodaro.

Iwe unogona kunge watofungidzira maitiro ekuita izvi: sarudzo ExtraRuntimeValidation nokuti ProgramTestOptions - iyi ndiyo mukana mukuru weizvi. Panguva ino, unomhanyisa bvunzo yeGo nekuwana iyo yakazara mamiriro ezviwanikwa zvechirongwa chako. Iyi nyika inosanganisira ruzivo rwakadai senge virtual muchina IP kero, maURL, uye zvese zvinodikanwa kuti zvinyatso kupindirana nezvinokonzeresa makore maapplication uye zvivakwa.

Semuenzaniso, chirongwa chedu chekuyedza chinoendesa kunze kwenyika chivakwa webEndpoint bucket rakanzi websiteUrl, iyo ndiyo yakazara URL kwatinogona kuwana iyo yakagadziriswa index document. Kunyangwe isu taigona kuchera mufaira rehurumende kuti tiwane bucket uye uverenge icho chivakwa zvakananga, asi muzviitiko zvakawanda matura edu anoendesa kunze zvinhu zvinobatsira seizvi zvatinoona zviri nyore kushandisa pakutarisa:

integration.ProgramTest(t, &integration.ProgramTestOptions{
            // as before ...
        ExtraRuntimeValidation: func(t *testing.T, stack integration.RuntimeValidationStackInfo) {
            url := "http://" + stack.Outputs["websiteUrl"].(string)
            resp, err := http.Get(url)
            if !assert.NoError(t, err) {
                return
            }
            if !assert.Equal(t, 200, resp.StatusCode) {
                return
            }
            defer resp.Body.Close()
            body, err := ioutil.ReadAll(resp.Body)
            if !assert.NoError(t, err) {
                return
            }
            assert.Contains(t, string(body), "Hello, Pulumi!")
        },
    })

Kufanana neyedu yapfuura yekumhanyisa cheki, cheki iyi ichaitwa pakarepo mushure mekusimudza stack, zvese mukupindura kufona kuri nyore. go test. Uye ndiyo ingori muromo weiyo iceberg - yega yega Go test ficha yaunogona kunyora mukodhi inowanikwa.

Kuenderera mberi Infrastructure Integration

Zvakanaka kukwanisa kumhanyisa bvunzo palaptop kana shanduko zhinji dzezvivakwa dziri kuitwa kuti udziyedze usati waendesa kuti dziongororwe kodhi. Asi isu nevazhinji vevatengi vedu vanoedza zvivakwa pamatanho akasiyana ehupenyu hwebudiriro:

  • Muchikumbiro chega chega chekukwevera chekuyedza usati wabatanidza.
  • Mukupindura kune yega yega kuzvipira, kutarisa kaviri kuti kusanganisa kwaitwa nemazvo.
  • Nguva nenguva, senge husiku kana vhiki nevhiki kune kumwe kuedzwa.
  • Sechikamu chekuita kana kuyedza kushushikana, iyo inowanzo mhanya kwenguva yakareba uye inomhanyisa bvunzo nenzira dzakafanana uye / kana kutumira iyo imwechete chirongwa kakawanda.

Kune imwe neimwe yeizvi, Pulumi inotsigira kubatanidzwa neyako yaunofarira inoenderera yekubatanidza system. Nekuenderera mberi kwekubatanidza, izvi zvinokupa iwe yakafanana bvunzo yekuvhara yezvivakwa zvako seyako application software.

Pulumi ine rutsigiro rwezvakajairwa CI masisitimu. Hezvino zvimwe zvacho:

Kuti uwane rumwe ruzivo rwakadzama, ndapota tarisa kune zvinyorwa zve Kuramba Kuendesa.

Ephemeral Environments

Mukana une simba kwazvo unovhura kugona kuendesa ephemeral nharaunda chete nekuda kwekugamuchirwa kwekuyedza zvinangwa. Pfungwa mapurojekiti uye mirwi Pulumi yakagadzirirwa kuendesa nyore nyore uye kubvarura nzvimbo dzakasarudzika uye dzakazvimiririra, zvese mune mashoma akareruka CLI mirairo kana kushandisa yekubatanidza yekuyedza chimiro.

Kana iwe ukashandisa GitHub, ipapo Pulumi inopa GitHub App, iyo ichakubatsira kubatanidza bvunzo dzekubvuma kudhonza zvikumbiro mukati meCI pombi yako. Ingoisa iyo application muGitHub repository, uye Pulumi ichawedzera ruzivo nezve maratidziro ezvivakwa, zvigadziriso uye mhinduro dzekuyedza kuCI yako uye zvikumbiro zvedziva:

Yekuyedza Infrastructure seCode nePulumi. Chikamu 2

Paunoshandisa Pulumi kune yako yepakati yekubvuma bvunzo, iwe unowana hutsva otomatiki masimba ayo anovandudza chigadzirwa chechikwata uye kukupa chivimbo mumhando yekuchinja kwako.

Mugumisiro

Muchinyorwa chino, taona kuti nekushandisa mitauro yehurongwa hwese chinangwa, nzira dzakawanda dzekuvandudza software dzinowanikwa kwatiri dzakabatsira mukugadzira maapplication edu. Zvinosanganisira kuedzwa kweyuniti, kusanganisa kuyedzwa, uye mashandiro avanoita pamwechete kuita yakakura yekumhanyisa bvunzo. Miedzo iri nyore kumhanya pane zvinodiwa kana muCI system yako.

Pulumi - yakavhurika sosi software, yemahara kushandisa uye inoshanda neako aunofarira programming mitauro nemakore - edza nhasi!

β†’ Chikamu chekutanga

Source: www.habr.com

Voeg