Terraformi moodulid

Terraformi Moodulid



Infrastruktuuri varustamise ja haldamise maailmas on Terraform kujunenud arendajate ja operatiivmeeskondade seas populaarseks valikuks. Oma deklaratiivse süntaksi (HCL – HashiCorp Configuration Language) ja erinevate infrastruktuuripakkujate toega võimaldab Terraform infrastruktuuri koodina (IaC) kasutada.

Üks selle põhifunktsioone on moodulite kasutamine, mis võimaldavad luua ja taaskasutada modulaarset infrastruktuuri koodi. Selles artiklis uurime Terraformi moodulite kontseptsiooni ja seda, kuidas need aitavad meie infrastruktuuri koodi korrastada ja lihtsustada.







Terraformi moodulite tutvustus

Terraformi moodulid on Terraformi konfiguratsioonide iseseisvad paketid, mis esindavad määratletud sisend- ja väljundmuutujatega ressursside komplekti. Need pakuvad võimalust taristu koodi kapseldamiseks ja taaskasutamiseks, mis muudab keeruka infrastruktuuri juurutamise haldamise ja hooldamise lihtsamaks.



Moodulid saab luua ja kasutada projektisiseselt või jagada mitme projekti või meeskonna vahel.



Mooduli korraldus

Terraformi moodulite korraldamisel on tavaline hierarhiline struktuur, mis koosneb juur- ja alammoodulitest. Uurime, kuidas see organisatsioon töötab.





Juurmoodul



Juurmoodul esindab meie Terraformi konfiguratsiooni tipptaseme moodulit. See on sisenemispunkt üldise infrastruktuuri määratlemiseks ja erinevate ressursside vaheliste suhete haldamiseks.

Juurmoodul sisaldab tavaliselt faili main.tf, kus me määratleme ressursid ja konfiguratsioonid, mis moodustavad meie infrastruktuuri aluse. Soovi korral võivad meil olla failid 'muutujad.tf' ja 'outputs.tf'. Samuti saame juurkataloogis määratleda oma 'moodulite' kataloogi, et alammoodulitele hõlpsasti juurde pääseda.

Lapse moodulid

Lapsmoodulid on modulaarsed komponendid, mis sisaldavad konkreetseid ressursside või konfiguratsioonide komplekte. Need on mõeldud korduvkasutatavaks ja esindavad infrastruktuuri funktsionaalsuse iseseisvaid üksusi.

Lapsmooduleid saab kasutada juur- või muudes alammoodulites, mis võimaldavad kompositsiooni ja keeruka infrastruktuuri ülesehitamist. Igal alammoodulil on tavaliselt oma kataloog, mis sisaldab vajalikke konfiguratsioonifaile, nagu 'main.tf', 'variables.tf' ja 'outputs.tf'.

Nüüd vaatame, kuidas saame Terraformi mooduli luua.

Terraformi mooduli loomine

Terraformi moodulite loomisel peame tegema moodulile uue kataloogi koos vajalike Terraformi konfiguratsioonifailidega. Tavaliselt on selle kataloogi nimi 'moodulid'. Parim tava on selle määratlemine meie projekti juurkataloogis.

Võtame lihtsa näite lihtsast moodulist kohaliku veebiserveri loomiseks Dockeri abil. Esiteks määratleme mooduli kataloogis 'moodulid' kui 'main.tf'.

ressurss 'docker_container' 'veebiserver' {
nimi  = var.nimi
pilt = var.image
sadamad {
sisemine = var.internal_port
väline = var.external_port
}
}

Siin loome mooduli nimega 'docker_container', mis võtab sisendmuutujatena konteineri nime, Dockeri kujutise, sisemise pordi ja välise pordi. Moodul kapseldab Dockeri konteineri ressursi loomise loogika ja võimaldab helistajal konteineri atribuute kohandada.

Nagu on näidatud järgmisel pildil, loome kataloogis 'moodulid' eraldi faili nimega 'variables.tf', et määratleda sisendmuutujad, mida saab mooduli kasutamisel kohandada:

muutuv 'nimi' {
kirjeldus = 'Dokkeri konteineri nimi'
tüüp = string
}

muutuv 'pilt' {
kirjeldus = 'Dokkeri pilt'
tüüp = string
}

muutuv 'sisemine_port' {
kirjeldus = 'Dokeri konteineri sisemine port'
tüüp = number
}

muutuv 'väline_port' {
kirjeldus = 'Väline port, millega kaardistada'
tüüp = number
}

Siin deklareerisime neli muutujat, millest igaühel olid atribuudid 'kirjeldus' ja 'tüüp' ning nende jaoks asjakohased väärtused.

Terraformi mooduli kasutamine

Alates mooduli loomisest saame seda nüüd kasutada oma Terraformi põhikonfiguratsioonis, viidates selle allikale. Teeme oma peamise konfiguratsioonifaili, mille juurkataloogis on 'main.tf'.

moodul 'veebiserver_konteiner' {
allikas = '../modules/docker_container'
nimi            = 'minu veebiserver'
pilt           = 'nginx: uusim'
sisemine_port   = 80
väline_port   = 8080
}

Dockeri konteineri mooduli loomiseks kasutame eelmises koodis plokki 'moodul'. Pakume moodulile vajalikud sisendväärtused, nagu konteineri nimi, Dockeri kujutis ja pordi konfiguratsioon. Parameeter 'source' määrab suhtelise tee kataloogi 'moodul'.

Järgmisena vaatame, kuidas kasutada Terraformi väljundeid moodulitega kasutamiseks.

Mooduli väljundid

Terraformi mooduli väljundid võimaldavad kuvada konkreetseid väärtusi mooduli sees, muutes need kättesaadavaks põhikonfiguratsioonis või muude moodulite jaoks. Need toimivad sidekanalina mooduli ja helistaja vahel, mis võimaldab moodulil edastada teavet või andmeid, mis võivad olla kasulikud või vajalikud edasiseks konfigureerimiseks või otsuste tegemiseks.

väljund 'konteineri_id' {
kirjeldus = 'Loodud Dockeri konteineri ID'
väärtus       = docker_container.webserver.id
}

Siin lõime kataloogi 'moodulid' faili 'outputs.tf'. See väljundmuutuja paljastab Dockeri konteineri ID, mille loob moodulis ressurss „docker_container” nimega „veebiserver”.

Nüüd pääseme juurde oma juurkonfiguratsioonifailis olevale konteineri ID-le. Vaadake juurkataloogi faili main.tf järgmist värskendatud koodi:

moodul 'veebiserver_konteiner' {
allikas = '../modules/docker_container'
nimi            = 'minu veebiserver'
pilt           = 'nginx: uusim'
sisemine_port   = 80
väline_port   = 8080
}

ressurss 'docker_volume' 'andmed' {
# Ülejäänud argumendid lähevad siia
siduda = module.webserver_container.container_id
}

Kasutades argumendi 'bind' väärtusena 'module.webserver_container.container_id', anname Terraformile käsu siduda Dockeri köide asukohta, mis on määratud mooduli 'web_container' konteineri ID-ga. See loob seose Dockeri köiteressursi ja mooduli „webserver_container” poolt loodud konteineri vahel, tagades, et köide paigaldatakse sobivasse kohta.

Terraformi moodulite parimad tavad

Modulariseerige korduvkasutatavaks

Moodulite kavandamisel peaksime arvestama korduvkasutatavusega. Samuti peame tuvastama oma infrastruktuuri loogilised komponendid või mustrid ja kapseldama need eraldi moodulitesse. See soodustab koodi taaskasutamist, standardimist ja lihtsamat koostööd meeskondade vahel.

Selge ja järjekindel nimetamine

Moodulite, muutujate ja ressursside selgete ja järjepidevate nimetamisreeglite kasutamine parandab koodibaasi loetavust ja mõistmist, mis muudab teiste jaoks moodulitega töötamise ja hooldamise lihtsamaks.

Eraldage sõltuvused

Peame vältima moodulite vahelist tihedat sidumist. Iga moodul peaks hõlmama oma ressursse ja sõltuvusi. See tagab moodulite iseseisva taaskasutamise ning soodustab paremat isoleerimist ja kapseldamist.

Versioonikontroll ja moodulite register

Saame avaldada oma moodulid versioonikontrollitud hoidlas või moodulite registris. See pakub moodulite jagamiseks ja avastamiseks tsentraliseeritud asukohta, tagades lihtsa juurdepääsu ja versioonide loomise.

Järeldus

Tutvusime põgusalt Terraformi moodulitega ja õppisime lihtsa näite abil neid looma. Seejärel uurisime, kuidas kasutada muutujaid ja väljundeid meie mooduliga, et suurendada selle paindlikkust, korduvkasutatavust ja hooldatavust. Kokkuvõtteks võib öelda, et Terraformi moodulid on võimsad tööriistad infrastruktuuri koodi korrastamiseks ja lihtsustamiseks. Need võimaldavad meil kapseldada ressursside või konfiguratsioonide komplekti korduvkasutatavateks komponentideks, mis edendavad modulaarsust, korduvkasutatavust ja koostööd meie infrastruktuuri kui koodi projektide raames.