Autori: "Jeff Davies"

Terraform është mjeti për menaxhimin e ciklit jetësor të infrastrukturës suaj. Kjo ju lejon të ndërtoni, ndryshoni dhe versiononi infrastrukturën në mënyrë efikase dhe të sigurt. Terraform mund t'ju ndihmojë të krijoni baza të të dhënave, role, shenja sigurie dhe lista aksesi. Lexoni për të parë se si mund të filloni.

DataStax ka krijuar një ofrues me burim të hapur Terraform për DataStax Astra DB. Një ofrues që e bën të lehtë skriptimin e krijimit të një baze të dhënash Astra DB, roleve, shenjave të sigurisë dhe listave të aksesit për bazën tuaj të të dhënave.

Një ofrues është shtresa e përkthimit e ofruar nga një shitës që lejon platformën e ofruesit të ekzekutojë komandat e motorit Terraform. Për shembull, Amazon AWS ka një ofrues Terraform që do t'i përkthejë skriptet Terraform në veprime reale (d.m.th. duke krijuar instanca llogaritëse ose ndonjë aktiv tjetër AWS). Në mënyrë të ngjashme, ka ofrues për Google, Azure, Oracle dhe mbi një mijë ofrues të tjerë shërbimesh. Të gjithë ofruesit aktualë mund t'i gjeni në faqen registry.terraform.io.

Është pak mashtruese të thuhet se ofruesi përkthen komandat Terraform. Nuk është sikur njerëzit e mirë në Hashicorp (krijuesit e Terraform) përcaktuan një mënyrë të vetme për të shprehur çdo ide në kompjuterin cloud! Kjo është e pamundur (nuk ka lugë). Por, ato ofrojnë një kornizë për t'ju dhënë komanda specifike të ofruesit nga Terraform te ofruesi i zgjedhjes suaj. Do të shihni saktësisht se si funksionon kjo kur të krijojmë bazën e të dhënave Astra.

Terraform është shumë i lehtë për t'u përdorur sapo të mbështillni kokën rreth tij. Nuk është një gjuhë procedurale ose një gjuhë e orientuar nga objekti. Në vend të kësaj, ju krijoni skedarë që përshkruajnë gjendjen përfundimtare të dëshiruar të bazës së të dhënave tuaja dhe Terraform më pas do ta krijojë ose shkatërrojë atë, në varësi të komandave tuaja specifike.

Fillimi me Terraform për Astra

Fillimi është po aq i thjeshtë sa instalimi i Terraform dhe më pas t'i thuash Terraform të zbatojë "ofruesin" Astra.

Për të instaluar Terraform:

  1. Klikoni "në këtë lidhje" dhe shtypni butonin "Shkarko CLI".
  2. Ndiqni udhëzimet e instalimit nga Terraform.
  3. Shtoni direktorinë terraform në variablin e mjedisit PATH të sistemit tuaj në mënyrë që të mund ta filloni atë nga kudo.

Pasi Terraform të jetë instaluar plotësisht, krijoni një dosje në sistemin tuaj lokal të skedarëve për projektin tuaj dhe më pas ndryshojeni në atë dosje të re.

Në dosjen tuaj të re të projektit, krijoni një skedar me emrin main.tf. Teknikisht mund ta emërtoni atë që dëshironi, por main.tf është emri tradicional për skedarin që përmban deklaratën terraform{}.

Në këtë pikë, ju keni teknikisht një projekt Terraform që funksionon. Megjithatë, nuk bën shumë. Gjithçka që bën është të instalojë ofruesin Astra. Për ta ekzekutuar, përdorni komandën terraform init , e cila do të prodhojë daljen e mëposhtme:

Deri më tani, skedari ynë main.tf ka dhënë dy udhëzime:

  1. Sigurohuni që po ekzekutojmë versionin Terraform 1.0.0 ose më të ri
  2. Ngarkoni ofruesin Astra për versionin Terraform 1.0.0 ose më të lartë

Nëse shqyrtoni drejtorinë e projektit tuaj, do të shihni një drejtori të re të fshehur, .terraform.

Këshillë profesionale:Kur specifikoni versionet, është më mirë të përdorni shënimin >= për t'u siguruar që po merrni versionin më të fundit (me arnimet më të fundit të sigurisë, veçoritë, etj.).

Krijimi i një baze të dhënash Astra DB

Le të modifikojmë projektin tonë për të krijuar një bazë të dhënash Astra DB. Përpara se ta bëni këtë, do t'ju nevojiten sa vijon:

  1. Një llogari e bazës së të dhënave Astra DB. Mund të regjistroheni falas në astra.datastax.com/register.
  2. Do t'ju duhet të krijoni një API Astra DB për rolet e Administratorit të Organizatës ose Administratorit të bazës së të dhënave. Shenja e sigurisë do të lejojë Terraform të lidhet me shtresën Astra API për të ekzekutuar komandat e tij. Nëse jeni i ri në Astra dhe nuk jeni i sigurt se si të krijoni kodin tuaj të sigurisë, "shikoni këtë faqe".

Këshilla Pro (Siguria):Kur krijoni kodin e sigurisë së organizatës suaj, përdorni një deklaratë eksporti për ta vendosur atë në një skedar setenv.sh së bashku me informacionin tjetër të kërkuar nga Astra dhe më pas vendosni një rregull .gitignore.

Unë jam shumë i ndjeshëm ndaj ndarjes aksidentale të argumenteve të mia të sigurisë dhe shpresoj që edhe ju të ndiheni në të njëjtën mënyrë. Kur krijova shenjën e sigurisë së organizatës sime, e vendosa në një skedar setenv.sh duke përdorur një deklaratë eksporti, së bashku me informacionin tjetër të Astra që do të nevojitet:

Pastaj, nga linja e komandës, vendosa atë variabël mjedisi duke përdorur një komandë burimi setenv.sh (Mac ose Linux). Pastaj vendosni një rregull .gitignore për atë skedar. Në këtë mënyrë, ka shumë pak gjasa që shenja ime e sigurisë të përfundojë në GitHub!

Ku mund ta gjej ID-në time të organizatës?

Hyrja në pultin tuaj kryesor është mënyra më e lehtë për të gjetur ID-në e organizatës suaj. Në URL-në në shfletuesin tuaj, ID-ja e organizatës suaj është "UUID" e renditur pas astra.datastax.com/ në shiritin e adresave të shfletuesit tuaj.

Përcaktoni variablat

Ju mund të kaloni informacion në procesin Terraform duke përdorur variabla. Në rastin tonë, ne duhet të kalojmë vlerat ASTRA_API_TOKEN dhe ASTRA_ORGANIZATION_ID nga variablat tanë të mjedisit. Për ta bërë këtë, krijoni një skedar të quajtur variables.tf dhe jepini përmbajtjen e mëposhtme:

Kjo i tregon procesit Terraform që ekziston një variabël, por nuk përcakton përmbajtjen e atyre variablave. Ai do të përcaktojë përmbajtjen e këtyre variablave përmes vijës së komandës. Variablat lokalë janë të ndryshëm, do të lexoni rreth tyre në seksionin tjetër.

Përcaktoni burimet

Terraform përshkruan një burim si: "Çdo bllok burimesh përshkruan një ose më shumë objekte të infrastrukturës, të tilla si rrjetet virtuale, instancat e llogaritjes ose komponentët e nivelit më të lartë si regjistrimet DNS."

Në terma më të thjeshtë, një burim është diçka që ju krijoni. Në Astra, këto do të jenë gjëra të tilla si bazat e të dhënave, rolet, shenjat dhe listat e aksesit.

Filloni duke krijuar një skedar resources.tf në drejtorinë e projektit tuaj. Vendosni përmbajtjen e atij skedari si më poshtë:

Ruani skedarin. Siç mund ta merrni me mend, ne po udhëzojmë Astra të krijojë një bazë të dhënash të quajtur hello_astra me një hapësirë ​​kyçe prej helloastra (vlera e ndryshores local.keyspace) në platformën e resë kompjuterike të Google (gcp) në rajonin us_west1.

Ajo që nuk është aq e lehtë të hamendësohet është se kjo krijon një variabël të quajtur astra_database.hello_astra_db në procesin Terraform. Ne kemi ofruar fushat e kërkuara për të krijuar bazën e të dhënave, e cila krijon fusha informacioni shtesë si .data_endpoint_url, URL-ja bazë për API-të REST dhe .grafana_url, e cila është URL-ja për të parë grafikët shëndetësorë të Grafana për bazën e të dhënave.

Tani ekzekutoni komandën:

Kur komanda përfundon me sukses, atëherë mund të ekzekutoni komandën terraform apply helloastra për të parë bazën e të dhënave që po krijohet:

Tani hapni tastierën e internetit Astra DB dhe do të shihni se databaza juaj është krijuar:

Mjaft e lezetshme, por minimalisht e dobishme në praktikë. Ka pak arsye për të përdorur Terraform vetëm për të krijuar baza të të dhënave me hapësira kyçe. Sidoqoftë, baza e të dhënave është vetëm "kontejneri" i nivelit të lartë për shumicën e projekteve. Projektet e botës reale përmbajnë gjithashtu role, secila prej të cilave ka nevojë për një shenjë sigurie. Ju gjithashtu mund të skriptoni listën e sigurt të IP-së duke përdorur Terraform, ku Terraform fillon të shkëlqejë për Astra DB.

Përcaktoni një rol

Një rol "Astra DB" është thjesht një lloj tjetër burimi. Kështu që hapni skedarin tuaj resources.tf dhe shtoni tekstin e mëposhtëm:

Ju mund të shihni se nevojitet shumë mendim për të krijuar një rol. Kërkohet një kuptim solid i politikave dhe burimeve. Ky është shumë informacion për t'u mbuluar në këtë artikull, por mund të gjeni shumë më tepër në faqen kryesore Astra DevOps. Dhe mund të gjeni më shumë informacion nëse vizitoni faqen Menaxho rolet me DevOps API.

Shënim:Unë komentova se shumë nga politikat për rolin që po krijojmë nuk ishin të nevojshme. Megjithatë, i lashë ato në skedar si një referencë të shpejtë dhe të lehtë nëse roli që përcaktoni ka nevojë për politika të ndryshme. Komentoni dhe anuloni sipas dëshirës tuaj!

Ka dy seksione kryesore në rol, grupet burimet dhe politika. Ata janë të lidhur ngushtë. Seksioni i burimeve është vendi ku zgjidhni burimet për të cilat dëshironi të vendosni politika. Pra, në seksionin tonë të burimeve:

Ju mund ta shihni, ne po i themi Terraform që duam të krijojmë një rol me privilegje që janë specifike për:

  • Organizata jonë
  • Baza e të dhënave që ne po krijojmë
  • Hapësira kryesore në atë bazë të dhënash
  • Tabelat në atë hapësirë ​​kyçe

Nëse shikoni faqen Menaxho rolet me DevOps API dhe lëvizni poshtë, do të shihni një tabelë që harton politikat me lloje të veçanta burimesh. Pra, politikat zbatohen vetëm për burime specifike, gjë që është një gabim që mund të bëni. Supozoni se shtoni politika për të hyrë në tabela, por nuk përfshini burimin e fundit për të gjitha tabelat (:table:*). Ju mund të përfundoni politikat e tabelës pa asnjë burim të cilit mund t'i bashkëngjiten.

Përcaktoni një shenjë sigurie

Tani që kemi një rol, duhet të përcaktojmë një shenjë sigurie që përdoruesit mund ta përdorin për të vërtetuar të drejtën për të përdorur atë rol (dhe për të hyrë në bazën e të dhënave dhe të dhënat e saj). Pra, ende duke redaktuar skedarin resources.tf, shtoni linjat e mëposhtme të kodit:

Mund të shihni se mund të ketë çdo numër rolesh në grupin e roleve. Si rezultat, duhet të mendoni për tokenat që grumbullojnë role, duke mos punuar me një rol të vetëm (siç po bëjmë në këtë shembull të thjeshtë).

Përcaktoni listat e aksesit

Një listë aksesi përcakton adresat IP që lejohen të lidhen me bazën e të dhënave. Nëse nuk përcaktoni një listë aksesi, atëherë TË GJITHA adresat IP lejohen të lidhen, duke supozuar se kanë shenjën e duhur të sigurisë. Nëse dini për adresa IP specifike ose blloqe të "drejtimit ndër-domain pa klasa" (CIDR) që dëshironi të lejoni të lidhen (megjithatë kërkon ende shenjën e sigurisë), atëherë mund të përcaktoni rregullat tuaja duke përdorur kodin shabllon më poshtë.

Objekti addresses{} mund të përmbajë shumë objekte request{}, kështu që lista juaj e sigurt e IP-së mund të bëhet shumë e hollë. address{} brenda çdo request{} është formatuar si një bllok CIDR.

Këshilla Pro (Siguria):Skedari terraform.tfstate, i krijuar nga komanda terraform plan, përmban informacione të ndjeshme dhe nuk duhet të ruhet kurrë në një depo publike!

Sigurimi i rezultateve interesante

Skripti ynë gjeneron shumë informacione që do të duam t'i përdorim diku tjetër, përkatësisht kodin e sigurisë Astra DB për të hyrë në bazën tonë të të dhënave duke përdorur rolin tonë. Që Terraform të na tregojë vlerat që na interesojnë, hapni skedarin main.tf dhe shtoni rreshtat e mëposhtëm në fund (jashtë deklaratës terraform{}):

Duke parë se si funksionojnë të gjitha së bashku

Kemi bërë shumë redaktime. Tani le të drejtojmë projektin tonë për të parë frytet e punës sonë. Ekzekutoni komandat:

Shkatërrimi i asaj që keni bërë

Terraform gjithashtu ju lejon të fshini/shkatërroni atë që krijoni. Pasi të keni kryer me sukses një veprim të aplikuar në Terraform, më pas mund të ekzekutoni veprimin e fshirjes dhe të shkatërroni gjithçka të krijuar nga veprimi i aplikimit.

Shkatërrimi i gjithçkaje që keni krijuar është veçanërisht i dobishëm kur jeni duke zhvilluar fillimisht skriptet tuaja dhe duke mësuar Terraform. Komanda për të shkatërruar/fshirë bazën tuaj të të dhënave Astra me të gjitha rolet e saj dhe shenjat e sigurisë merr formën e mëposhtme:

Si mund të përmirësoj ofruesit e mi? Dua versionin e fundit!

Skedari .terraform.lock.hcl "kyçet" në versionet e ofruesit të përdorur për herë të fundit. Nëse dëshironi të përditësoni të gjithë ofruesit tuaj në versionin aktual, fshini skedarin .terraform.lock.hcl dhe ekzekutoni përsëri komandën terraform init.

Çfarë nuk do të bëjë ofruesi i Astra DB

Ofruesi i Astra është i shkëlqyeshëm në atë që bën: krijimin e bazave të të dhënave, roleve, shenjave të sigurisë dhe listave të aksesit. Në formën e tij aktuale, kjo është gjithçka që bën. Nuk krijon tabela apo mbush të dhëna. Ju ende duhet ta bëni këtë duke përdorur metoda tradicionale.

Shpresojmë, megjithatë, velloja e misterit që rrethon Terraform dhe ofruesin e Astra më konkretisht, tani është hequr për ju. Ofruesi Astra është në zhvillim aktiv, prandaj sigurohuni që të kontrolloni shpesh për përditësime! Mund të gjeni faqen kryesore të ofruesit Astra DBTerraform Registry, i cili ofron udhëzime të plota për t'ju udhëhequr në të gjitha aftësitë e tij.

Nëse dëshironi të shkoni më thellë ose të kontribuoni në projektin me burim të hapur, mund ta bëni këtë në faqen Astra Provider GitHub. Ju gjithashtu mund të bashkoheni në kanalin DataStax Developer's Discord për të mësuar më shumë atje.

Ndiqni Blogun teknik të DataStax për më shumë histori zhvilluesish. Shikoni kanalin tonë YouTube për mësime dhe këtu për Zhvilluesit e DataStax në Twitter për të rejat më të fundit rreth komunitetit tonë të zhvilluesve.

Burimet

  1. "Kodi Github"
  2. "Menaxho rolet me DevOps API"
  3. "Terraform nga HashiCorp"
  4. DataStax Astra DB
  5. Regjistrohu për një llogari Astra DB
  6. "Bashkohuni me Discord tonë: Zhvilluesit e DataStax"
  7. "Platforma e Komunitetit të DataStax"
  8. "DataStax Academy"
  9. "Certifikatat e Statistikave të të Dhënave"
  10. "Punëtoritë e DataStax"