Teko ea Infrastructure joalo ka Khoutu le Pulumi. Karolo ea 2

Lumelang bohle. Kajeno re arolelana le uena karolo ea ho qetela ea sehlooho sena. "Lisebelisoa tsa Teko joalo ka Khoutu le Pulumi", eo phetolelo ea eona e lokiselitsoeng ka ho khetheha bakeng sa liithuti tsa thupelo "Mekhoa le lisebelisoa tsa DevOps".

Teko ea Infrastructure joalo ka Khoutu le Pulumi. Karolo ea 2

Teko ea thomelo

Mokhoa ona oa ho etsa liteko ke mokhoa o matla 'me o re lumella ho etsa tlhahlobo ea lebokose le lesoeu ho leka ts'ebetso ea ka hare ea khoutu ea rona ea motheo. Leha ho le joalo, e batla e lekanyetsa seo re ka se lekang. Liteko li etsoa ho itšetlehile ka morero oa ho kenya mohopolo oa mohopolo o entsoeng ke Pulumi pele ho tsamaisoa ha sebele 'me kahoo ho tsamaisoa ka boeona ho ke ke ha lekoa. Bakeng sa maemo a joalo, Pulumi e na le moralo oa tlhahlobo ea ho kopanya. 'Me mekhoa ena e' meli e sebetsa hantle hammoho!

Sebopeho sa tlhahlobo ea ho kopanya Pulumi se ngotsoe ho Go, e leng kamoo re lekang boholo ba khoutu ea rona ea ka hare. Le hoja mokhoa oo ho neng ho buisanoa ka oona nakong e fetileng o ne o tšoana le tlhahlobo ea lebokose le lesoeu, tlhahlobo ea ho kopanya ke lebokose le letšo. (Ho boetse ho na le likhetho bakeng sa tlhahlobo e matla ea ka hare.) Moralo ona o bōpiloe ho nka lenaneo le feletseng la Pulumi le ho etsa mesebetsi e fapa-fapaneng ea bophelo ho lona, ​​​​joalo ka ho kenya stack e ncha ho tloha qalong, ho e ntlafatsa ka mefuta e fapaneng, le ho e hlakola, mohlomong ka makhetlo a mangata. . Re li tsamaisa khafetsa (mohlala, bosiu) le joalo ka liteko tsa khatello ea maikutlo.

(Rona re ntse re sebetsa ho eona, e le hore bokhoni bo tšoanang ba tlhahlobo ea kopanyo bo fumanehe ho SDK ea lipuo tsa matsoalloa. U ka sebelisa moralo oa tlhahlobo ea ho kopanya Go sa tsotellehe puo eo lenaneo la hau la Pulumi le ngotsoeng ka lona).

Ka ho tsamaisa lenaneo u sebelisa moralo ona u ka sheba tse latelang:

  • Khoutu ea projeke ea hau e nepahetse ebile e sebetsa ntle le liphoso.
  • Litlhophiso tsa tlhophiso ea stack le liphiri li sebetsa 'me li hlalosoa ka nepo.
  • Morero oa hau o ka tsamaisoa ka katleho ho mofani oa maru oa khetho ea hau.
  • Morero oa hau o ka ntlafatsoa ka katleho ho tloha sebakeng sa pele ho ea ho tse ling tsa N.
  • Morero oa hau o ka senngoa ka katleho mme oa tlosoa ho mofani oa hau oa leru.

Joalo ka ha re tla bona haufinyane, moralo ona o ka boela oa sebelisoa ho netefatsa nako ea ho sebetsa.

Teko e bonolo ea ho kopanya

Ho bona sena se sebetsa, re tla sheba polokelo pulumi/examples, joalo ka ha sehlopha sa rona le sechaba sa Pulumi se se sebelisa ho leka likopo tsa rona tsa ho hula, boitlamo, le ho haha ​​​​bosiu.

Ka tlase ke tlhahlobo e nolofalitsoeng ea rona mohlala o fanang ka bakete ea S3 le lintho tse ling:

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,
        },
    })
}

Teko ena e feta molemong oa ho theha, ho fetola, le ho senya sephutheloana sa foldara aws-js-s3-folder. Ho tla nka motsotso ho tlaleha tlhahlobo e atlehileng:

$ go test .
PASS
ok      ... 43.993s

Ho na le likhetho tse ngata tsa ho hlophisa boitšoaro ba liteko tsena. Sheba lenane le feletseng la likhetho. sebopehong ProgramTestOptions. Ka mohlala, o ka lokisa ntlha ea ho qetela ea Jaeger ho latela (Tracing), bontša hore u lebelletse hore tlhahlobo e ke ke ea atleha haeba tlhahlobo e le ntle (ExpectFailure), sebelisa letoto la "liphetoho" lenaneong bakeng sa phetoho e latellanang ea linaha (EditDirs) le tse ling tse ngata. Ha re boneng hore na u ka li sebelisa joang ho leka tlhahiso ea hau ea kopo.

Ho hlahloba thepa ea lisebelisoa

Kopano e boletsoeng ka holimo e tiisa hore lenaneo la rona le "sebetsa" -ha le senyehe. Empa ho thoe'ng haeba re batla ho hlahloba thepa ea stack e hlahisoang? Ka mohlala, hore mefuta e itseng ea lisebelisoa e fanoe (kapa ha e-so ka e fanoa) le hore e na le litšobotsi tse itseng.

Parameter ExtraRuntimeValidation etsoe ProgramTestOptions e re lumella ho sheba boemo ba morao-rao bo tlalehiloeng ke Pulumi e le hore re ka etsa licheke tse eketsehileng. Sena se kenyelletsa setšoantšo se felletseng sa boemo ba sephetho se hlahisitsoeng, ho kenyeletsoa tlhophiso, boleng ba lihlahisoa tse romelloang kantle ho naha, lisebelisoa tsohle le boleng ba thepa ea bona, le litšepeho tsohle lipakeng tsa lisebelisoa.

Ho bona mohlala oa mantlha oa sena, a re hlahlobeng hore na lenaneo la rona le etsa e 'ngoe 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")
        },
    })

Hona joale, ha re matha teko ea ho ea, e ke ke ea feta feela ka betri ea liteko tsa lifecycle, empa hape, ka mor'a ho tsamaisa stack ka katleho, e tla etsa tlhahlobo e eketsehileng mabapi le boemo bo hlahang.

Liteko tsa nako ea ho sebetsa

Ho fihlela hajoale, liteko tsohle li mabapi le boits'oaro ba thomello le mofuta oa sesebelisoa sa Pulumi. Ho thoe'ng haeba u batla ho netefatsa hore lisebelisoa tsa hau tsa marang-rang lia sebetsa? Ka mohlala, hore mochine oa sebele o ntse o sebetsa, nkho ea S3 e na le seo re se lebeletseng, joalo-joalo.

Mohlomong u se u ntse u hakanya hore na u ka etsa sena joang: khetho ExtraRuntimeValidation etsoe ProgramTestOptions - ona ke monyetla o motle bakeng sa sena. Mothating ona, o etsa teko ea tloaelo ea Go e nang le phihlello ea boemo bo felletseng ba lisebelisoa tsa lenaneo la hau. Naha ena e kenyelletsa tlhahisoleseling joalo ka liaterese tsa IP tsa mochini, li-URL, le ntho e ngoe le e ngoe e hlokahalang ho sebelisana le lits'ebetso le lits'ebetso tsa maru.

Mohlala, lenaneo la rona la tlhahlobo le romella thepa kantle ho naha webEndpoint nkho e bitsitsoeng websiteUrl, e leng URL e feletseng moo re ka khonang ho hlophisoa index document. Le hoja re ne re ka cheka faele ea mmuso ho fumana bucket 'me u bale thepa eo ka kotloloho, empa maemong a mangata mekotla ea rona e romella thepa ea bohlokoa joalo ka ena eo re fumanang ho le bonolo ho e sebelisa ho hlahloba:

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!")
        },
    })

Joalo ka licheke tsa rona tse fetileng tsa nako ea ho sebetsa, cheke ena e tla etsoa hang ka mor'a ho phahamisa stack, kaofela ka lebaka la mohala o bonolo. go test. Eo ke ntlha ea bohlokoa feela - karolo e 'ngoe le e 'ngoe ea tlhahlobo ea Go eo u ka e ngolang ka khoutu ea fumaneha.

Kopano e Tsoelang Pele ea Meaho

Ho hotle ho khona ho etsa liteko ho laptop ha ho ntse ho etsoa liphetoho tse ngata tsa meaho ho li leka pele u li romella bakeng sa tlhahlobo ea khoutu. Empa rona le bareki ba rona ba bangata re leka lisebelisoa tsa motheo ka mekhahlelo e fapaneng ea potoloho ea bophelo ba nts'etsopele:

  • Kopong e 'ngoe le e' ngoe e bulehileng ea ho hula tlhahlobo pele e kopanya.
  • Ho arabela boitlamo bo bong le bo bong, ho lekola habeli hore ho kopanya ho entsoe ka nepo.
  • Nako le nako, joalo ka bosiu kapa beke le beke bakeng sa tlhahlobo e eketsehileng.
  • E le karolo ea tlhahlobo ea ts'ebetso kapa khatello ea maikutlo, eo hangata e nkang nako e telele 'me e etsa liteko ka ho bapa le/kapa e sebelisa lenaneo le ts'oanang ka makhetlo a mangata.

Bakeng sa e 'ngoe le e' ngoe ea tsena, Pulumi e ts'ehetsa ho hokahana le sistimi eo u e ratang e tsoelang pele ea ho kopanya. Ka kopanyo e tsoelang pele, sena se u fa tšireletso e tšoanang ea liteko bakeng sa lisebelisoa tsa hau tsa motheo le tsa software ea hau ea kopo.

Pulumi e na le ts'ehetso bakeng sa mekhoa e tloaelehileng ea CI. Tse ling tsa tsona ke tsena:

Bakeng sa tlhaiso-leseling e batsi, ka kopo sheba litokomane tsa Tlhahiso e Tsoelang Pele.

Tikoloho ea Ephemeral

Monyetla o matla haholo o bulehang ke bokhoni ba ho tsamaisa tikoloho ea ephemeral bakeng sa merero ea tlhahlobo ea kamohelo. Khopolo merero le mekoloko Pulumi e etselitsoe ho tsamaisa le ho heletsa libaka tse ikhethileng le tse ikemetseng, kaofela ka litaelo tse 'maloa tse bonolo tsa CLI kapa ho sebelisa moralo oa tlhahlobo ea kopanyo.

Haeba u sebelisa GitHub, joale Pulumi e fana Sesebelisoa sa GitHub, e tla u thusa ho hokahanya tlhahlobo ea kamohelo ho hula likopo ka har'a phaephe ea hau ea CI. Kenya feela sesebelisoa sebakeng sa polokelo ea GitHub, 'me Pulumi e tla eketsa tlhahisoleseling mabapi le ponelopele ea litšebeletso tsa motheo, lintlafatso le liphetho tsa liteko ho CI ea hau le likopo tsa letamo:

Teko ea Infrastructure joalo ka Khoutu le Pulumi. Karolo ea 2

Ha u sebelisa Pulumi bakeng sa liteko tsa hau tsa ho amoheloa, u tla fumana bokhoni bo bocha ba ho iketsetsa bo tla ntlafatsa tlhahiso ea sehlopha le ho u fa kholiseho ho boleng ba liphetoho tsa hau.

Phello

Sehloohong sena, re bone hore ka ho sebelisa lipuo tsa mananeo a kakaretso, mekhoa e mengata ea ntlafatso ea software e fumaneha ho rona e bileng molemo ho nts'etsapele lits'ebetso tsa rona. Li kenyelletsa tlhahlobo ea yuniti, tlhahlobo ea kopanyo, le hore na li sebelisana joang ho etsa liteko tse ngata tsa nako ea ho sebetsa. Liteko li bonolo ho sebetsa ho latela tlhoko kapa tsamaisong ea hau ea CI.

Pulumi - software e bulehileng ea mohloli, e lokolohile ho e sebelisa ebile e sebetsa ka lipuo tseo u li ratang tsa mananeo le maru - leka kajeno!

Karolo ea pele

Source: www.habr.com

Eketsa ka tlhaloso