Nkeji 3 / 11

Ijikwa akụrụngwa dịka koodu: ọgụgụ isi na Terraform na IaC

Uru:

  • Ikike ịghọta echiche IaC na usoro ọrụ Terraform (init, atụmatụ, itinye, steeti, modul) yana inwe ọgụgụ isi na-emepụta ihe nchekwa HCL.
  • Ikike iji nyochaa mgbanwe ọ bụla na atụmatụ tupu itinye ya n'ọrụ na ijide mbibi na-atụghị anya ya / dochie ahịrị
  • Ikike itinye ụkpụrụ nke idebe ihe nzuzo na koodu ahụ, idobe steeti na nchekwa, yana ibelata ikike IAM

N'oge gara aga, ịtọlite ​​​​sava bụ okwu nke ịpị site na igwe ojii: mepụta igwe mebere, melite netwọkụ, gbakwunye iwu nchekwa. Usoro a dị nwayọ, na-enwekarị mmejọ, na enweghị ike ikwugharị - ọ fọrọ nke nta ka ọ bụrụ ihe na-agaghị ekwe omume ịtọlite ​​​​otu gburugburu nke ugboro abụọ. Taa, a na-ejikwa akụrụngwa dịka koodu. IaC (Infrastructure as Code) bụ ụzọ iji kọwaa akụrụngwa igwe ojii dị ka sava, netwọkụ, na ọdụ data na faịlụ ederede kama iji aka. Faịlụ ndị a na-anọdụ na njikwa ụdị (Git); Ị nwere ike ịhụ onye gbanwere ihe, mgbe, na ihe; Ị nwere ike ịtọ otu akụrụngwa ọtụtụ oge, n'otu ụzọ ahụ, site na otu iwu.

Ngwá ọrụ IaC a na-ahụkarị bụ Terraform. Terraform na-ewere nkọwa ndị ị na-ede n'asụsụ enwere ike ịgụ nke a na-akpọ HCL (Asụsụ Nhazi HashiCorp - Asụsụ nhazi Terraform), tụgharịrị ha na API na-eweta igwe ojii (AWS, Azure, GCP) wee mepụta akụrụngwa. AI maara HCL nke ọma ma na-emepụta ihe mgbagwoju anya ngwa ngwa. Mana na IaC, ọnụ ahịa mmejọ dị elu: otu nkọwa na-ezighi ezi nwere ike ihichapụ nchekwa data mmepụta dum. Ya mere iwu ọla edo na Terraform bụ ịhụ mgbanwe ọ bụla na 'atụmatụ' tupu emejuputa ya.

Terraform's runtime

Terraform na-arụ ọrụ na iwu atọ bụ isi - ịmara na ndị a bụ ihe achọrọ maka ịchịkwa mmepụta AI:

  • `terraform init': Malite oru ngo a, budata plugins ndị na-eweta ihe dị mkpa.
  • `Traform plan': Tụnyere ọnọdụ dị ugbu a na ọnọdụ achọrọ wee gosi ihe ị ga-agbakwunye, ihe a ga-agbanwe, ihe ị ga-ehichapụ. Ọ naghị eme ihe ọ bụla. Ọ bụ usoro nchekwa kacha mkpa.
  • 'terraform apply': N'ezie na-etinye atụmatụ a n'ọrụ, na-eke / gbanwee akụrụngwa.

Ọzọkwa, echiche abụọ dị mkpa. State (faịlụ steeti): Nke a bụ faịlụ ebe Terraform na-edobe ọnọdụ akụrụngwa ọ na-ejikwa ugbu a; A na-echekwakarị ya n'ebe dịpụrụ adịpụ na ụlọ nkwakọba ihe nke mere na mmadụ abụọ enweghị ike ịgbanwe ma ọ bụ mebie ya n'otu oge. Module: Ngwunye nhazi a na-emegharịghachi; Dịka ọmụmaatụ, ịnwere ike iji modul "tọlite ​​​​netwọọdụ" n'ọtụtụ ọrụ.

Ndụmọdụ: Ihe ịrịba ama kachasị dị ize ndụ na mmepụta Terraform bụ ibibi ma ọ bụ -/+ (dochie) ahịrị na mmepụta atụmatụ. Ndị a pụtara na a ga-ehichapụ akụrụngwa ahụ. Ọ bụrụ n’ịhụ mbibi a na-atụghị anya ya na atụmatụ, etinyela ihe, buru ụzọ ghọta ihe kpatara o jiri pụta.

Nzọụkwụ site na nzọụkwụ: Iji AI dee IaC

  1. Kọwaa akụrụngwa achọrọ. Bụrụ ihe dị ka "otu VPC, subnets abụọ, otu nchekwa otu na otu t3.micro EC2 na eu-central-1".
  2. Ezipụta onye na-eweta na ụdị. Kedu igwe ojii, nke Terraform na ụdị ndị na-eweta? Ọ bụrụ na ị kọwapụtaghị ụdịdị, AI nwere ike ịlọghachi syntax ochie/anaghị ekwekọ.
  3. Mee ka emepụtara akwụkwọ HCL. Rịọkwa ndị mgbanwe na ntinye.
  4. Wepụ ihe nzuzo. Ụkpụrụ dị ka okwuntughe na igodo kwesịrị ịga na mgbanwe mgbanwe na nzuzo, ọ bụghị na koodu.
  5. Gbaa 'init' + 'atụmatụ'. Gụọ ahịrị mmepụta atụmatụ site n'ahịrị; Lelee maka nhichapụ na-atụghị anya ya.
  6. Malite obere, jiri nwayọọ nwayọọ mejuputa. Tinye ya na akaụntụ / gburugburu ule dịpụrụ adịpụ nke mbụ.

Nchekwa: Ihe egwu ndị akọwapụtara IaC

IaC dị ize ndụ dịka ọ siri ike. Isi ihe atọ dị egwu:

  1. Enwere ihe nzuzo na faịlụ steeti. Steeti Terraform mgbe ụfọdụ na-edobe ụkpụrụ nwere mmetụta, dị ka okwuntughe nchekwa data, na ederede doro anya. etinyela Steeti n'ebe nchekwa ọha; Jiri ezoro ezo, mmachibido-nweta azụ azụ azụ.
  2. Etinyela ihe nzuzo na HCL. Edere ahịrị dị ka paswọọdụ = "prod123" na akụkọ Git kpamkpam. Kama, jiri mgbanwe wee nye uru na oge ojiri gaa site na mgbanwe gburugburu (TF_VAR_...) ma ọ bụ oghere nzuzo.
  3. ikike IAM sara mbara. AI mgbe ụfọdụ na-emepụta ngọngọ dị ka Action: "*" (kwe ka ihe niile) mee ka ọ rụọ ọrụ. Nke a bụ adịghị ike; warara ikike ka opekempe achọrọ.
Nlebara anya: Ozugbo nzuzo batara Git akụkọ ihe mere eme, ọ na-anọgide n'oge gara aga ma nwee ike imebi ya, ọbụlagodi na ihichapụ faịlụ ahụ. Ọ bụrụ na ịmee n'amaghị ama, kagbuo ozugbo ma gbanwee ihe nzuzo ahụ; Naanị ihichapụ ezughị.

Tebụl akara atụmatụ dị ize ndụ

Atụmatụ mbipụta

Pụtara

ihe aga eme

+ kee

A ga-agbakwunye akụrụngwa ọhụrụ

Ọ dị mma n'ozuzu, nyochaa n'agbanyeghị

~ imelite na-ebe

Isi mmalite ga-agbanwe na saịtị

Chọpụta mmetụta (a ga-enwe nkwụsị?)

-/+ dochie

A ga-ehichapụ ma megharịa ya

kpachara anya: mfu data nwere ike ime

- ibibi

A ga-ebibi ihe onwunwe ahụ

Kwụsị: etinyela akwụkwọ ma ọ bụrụ na ị naghị atụ anya ya

Obere ikpe atọ

Ikpe 1 - 2 ụbọchị na-arụ ọrụ n'ime awa 3. Otu otu ga-ede Terraform ka ha guzobe ebe nnwale ọhụrụ (VPC, subnets, nchekwa data RDS, ụyọkọ ECS) mana ha ka kwagara HCL. Ha kọwara ụkpụrụ ụlọ na ụdị ya na AI wee mepụta ụkpụrụ ụkpụrụ. Ha kwadoro modul ọ bụla na atụmatụ ahụ ma mee ka ọ rụọ ọrụ na awa 3; Ọ ga-ewe ha ụbọchị abụọ nke nnwale na njehie akwụkwọ ntuziaka.

Ikpe 2 - atụmatụ ahụ jidere nhichapụ. Onye injinia mere atụmatụ na-etinyeghị koodu mmelite AI mepụtara. Ihe mmepụta ahụ nwere -/+ dochie anya nchekwa data mmepụta - AI gbalịrị iji dochie ebe a na-enweghị ike dochie ya, nke pụtara ihichapụ na ịmepụta nchekwa data. Injinia kwụsịrị itinye ma gbanwee mgbanwe ahụ na usoro nchekwa. Àgwà nke ime atụmatụ gbochiri ọdachi.

Ikpe 3 - eli ozu nzuzo. Obere, YZ nyere db_password = "S3cret!" O mere ahịrị dị ka ọ dị ma kwagide ya. Ejidere na nyocha koodu; A kagburu paswọọdụ ozugbo wee gbanwee, a na-ebugharị uru ahụ na mgbanwe ma nye ya nri site na nzuzo nzuzo. Ihe nkuzi: Enweghị ihe nzuzo doro anya na HCL.

Ndebiri anọ enwere ike iṅomi

1) Ịmepụta akụrụngwa akụrụngwa:

Dee akụrụngwa ndị a na [CLOUD: AWS] na Terraform (ụdị ~> 1.7): [ndepụta isi mmalite]. Mpaghara [X]. Iwu: - Mee ụkpụrụ niile nwere mmetụta dị iche iche, etinyela ha na HCL.- Dezie ụdị onye na-eweta ya (ndị na-eweta ihe achọrọ) - wedata ikike IAM, ejila "*" - Weghachite [X, Y] dị ka mmepụta. Nye koodu n'ụdị modular yana nkọwa.

2) Ịkọwapụta mmepụta atụmatụ:

Nyochaa mmepụta 'terraform plan' dị n'okpuru. Depụta m: (1) ihe agbakwunyere / gbanwere / ehichapụ, (2) ahịrị dị n'ihe ize ndụ nke mfu data ma ọ bụ nkwụsị, (3) ajụjụ 3 m kwesịrị ịjụ tupu itinye. Atụmatụ: [OUTPUT]

3) Nyochaa HCL dị maka nchekwa:

Lelee koodu Terraform ndị a maka nchekwa: nzuzo agbakwunyere, ikike IAM sara mbara, iwu netwọk mepere emepe (0.0.0.0/0), nchekwa ezoro ezo? Dee nchọpụta ọ bụla n'usoro dị mkpa na mgbazi. Koodu mpaghara:: [HCL]

4) Tụgharịa koodu ugboro ugboro na modul:

Tụgharịa koodu Terraform ugboro ugboro ka ọ bụrụ modul nwere ike iji: kedu ụkpụrụ kwesịrị ịbụ mgbanwe, kedu ihe interface modul kwesịrị ịbụ? Gosikwa ojiji ihe atụ. Koodu mpaghara:: [HCL]

Ngwa ngwa adịghị ike / Ike siri ike

Adịghị ike: "Mepụta nchekwa data na Terraform."

Nsonaazụ: amabeghị nke ígwé ojii, nke injin, nke ụdị, ezoro ezo ma ọ bụ na ọ bụghị; Site na syntax nketa, AI nwere ike ịnye ihe atụ dị n'ihu ọha nke na-etinye paswọọdụ n'ime koodu ahụ.

siri ike: "Mepụta ihe atụ RDS PostgreSQL 15 na AWS na Terraform ~> 1.7. Mee ka okwuntughe gbanwee, etinyela ya na koodu. A na-echekwa nchekwa ezoro ezo, ịnweta naanị site na subnet nkeonwe, ọ bụghị ọha na eze. Dezie ụdị onye na-eweta. Weghachite njedebe dị ka mmepụta."

Ọdịiche: ngwa ngwa nke abụọ na-enye injin, ụdị, izo ya ezo, mgbochi netwọkụ na iwu nzuzo - mmepụta ahụ dị nchebe yana nso prod.

Mmejọ ndị nkịtị

  • Iji 'tinye' na-emebeghị 'atụmatụ'. Ihe mmejọ kachasị ọnụ na IaC; mgbe niile na-eme atụmatụ mbụ.
  • Ntinye Nzuzo na HCL. Na-emepụta ntapu na-adịgide adịgide n'ime akụkọ Git.
  • Na-echekwa steeti enweghị nchebe. Ọnọdụ ọha na-enweghị ezoro ezo, akpọchiri akpọchi, bụ ọdachi.
  • Ọ naghị edozi ụdị ahụ. Iji onye na-eweta ya na-akọwapụtaghị ụdị ga-eduga na ọdịda mberede n'ọdịnihu.
  • *`Ihe omume: ikike sara mbara dị ka ""."** Na-emebi ụkpụrụ nke obere ihe ùgwù.
  • Na-eleghara 'mbibi' na-atụghị anya ya. Itinye ahịrị ihichapụ na Atụmatụ na-enweghị ajụjụ.

Na nchịkọta

IaC na-atụgharị akụrụngwa ka ọ bụrụ koodu a na-emegharị emegharị, nke a na-ebipụta na nke a na-enyocha; Ngwá ọrụ a na-ahụkarị bụ Terraform. AI na-ewepụta ngwa ngwa HCL stubs, mana ị ga-enyerịrị ụdị ahụ, nkọwa nke igwe ojii, yana iwu nchekwa. Iwu na-adịghị agha agha na Terraform: ịhụ mgbanwe ọ bụla na atụmatụ, ịjụ ajụjụ ihichapụ ndị a na-atụghị anya ya, iji chebe nzuzo pụọ na koodu na idobe steeti ahụ n'enweghị nsogbu. Nbibi na dochie ahịrị dị na mmepụta atụmatụ bụ ebe ekwesịrị ịgụ nke ọma nke ọma.

Ọrụ ngwa

Mee ka AI wepụta obere akụrụngwa (dịka ịwụ nchekwa na amụma nnweta) site na iji “Mepụta akụrụngwa sketch” dị n'elu. Mgbe ahụ: (1) nweta akara ngosi "vetting" maka ihe nzuzo ma ọ bụ * ikike agbakwunyere na koodu; (2) ọ bụrụ na ọ ga-ekwe omume, gbanye init + atụmatụ na akaụntụ ule wee gụọ mmepụta atụmatụ na template "nkọwa atụmatụ"; (3) rịba ama ihichapụ/mgbanwe ọ bụla na-atụghị anya ya.

ndetu

  • [] M gbakwunyere igwe ojii, ụdị Terraform/ụdị onye na-eweta ya, yana mgbochi nzuzo / netwọkụ na ngwa ngwa m.
  • [] Enweghị ihe nzuzo doro anya na koodu; nkenke ụkpụrụ mgbanwe.
  • [ ] Ewebiri m IAM/ikike ka ọ bụrụ ikike kacha nta, * Ejighị m ya.
  • [ ] M gbara atụmatụ tupu itinye akwụkwọ wee gụọ ahịrị mmepụta site na ahịrị.
  • [] Achọpụtara m na ọ nweghị mbibi/ngbanwe na-atụghị anya ya na Atụmatụ ahụ.
  • [ ] Eji m n'aka na edobere steeti ahụ na ezoro ezo, ekpochi na mgbochi azụ azụ.